Контакт:
  • Наши кнопки

  • Карта сайта
  • Вход для админа:

Взаимодействие программных компонентов при выполнении отдаленного вызова процедуры иллюстрируется рисунком 3.2. После того, как клиентский стаб был вызванный программой-клиентом, его первой задачей является заполнения буфера что отправляется сообщениям. В некоторых системах клиентский стаб имеет единый буфер фиксированной длины, которая заполняется каждый раз из самого начала при поступлении каждого нового запроса. В других системах буфер сообщения представляет собой пул буферов для отдельных полей сообщения, причем некоторые из этих буферов уже заполнены.

В случае, когда селектор указывает на таблицу LDT, виртуальный адрес превратится в физический аналогичным воображением, но для доступа к самой таблице LDT добавляет еще один этап, потому что в процессоре регистр LDTR указывает на размещение таблицы LDT не прямо, а косвенно. Самый регистр LDTR имеет размер 16 битый и содержит селектор дескриптора таблицы GDT, что описывает расположение этой таблицы в физической памяти. Поэтому при доступе к элементу физической памяти через таблицу LDT происходит двукратное преобразование виртуального адреса в физический, причем оба раза по описанной выше схеме.

Принцип кэширования данных: Память вычислительной машины представляет собой иерархию устройств , которые запоминают , (внутренние регистры процессора, разные типы сверхоперативной и оперативной памяти, диски, ленты), что отличаются средним временами доступа и стоимостью сохранения данных в расчетов на один битый (рисунок 2.17). Пользователю хотелось бы иметь и недорогую и быструю память. Кэш-память подает некоторое компромиссное решение этой проблемы.

Рис.

В зависимости от функций, положенных на конкретный компьютер, в его операционной системе может отсутствующему или клиентская, или серверная части.

На рисунке 1.2 показанное взаимодействие сетевых компонентов. Здесь компьютер 1 выполняет роль "чистого" клиента, а компьютер 2 - роль "чистого" серверу, соответственно на первой машине отсутствующих серверная часть, а на второй - клиентская. На рисунке отдельно показанный компонент клиентской части - редиректор. Именно редиректор перехватывает все запросы, которые поступают от приложений, и анализирует их.

1. Без использования дискового пространства

Все методы управления памятью могут быть разделены на два класса: методы, которые используют перемещение процессов между оперативной памятью и диском, и методы, которые не делают этого (рисунок 2.8). Начнем с последнего, более простого класса методов.

Рис. 2.8.  Классификация методов распределения памяти

2. Распределение памяти фиксированными делениями

Самым простым средством управления оперативной памятью является низменность ее на несколько делений фиксированного размера.

Нити иногда называют облегченными процессами или мини-процессами. Действительно, нити во многих отношениях подобный процессам. Каждая нить выполняется строго последовательно и имеет свой собственный программный счетчик и сток. Нити, как и процессы, могут, например, порождать нити-потомки, могут переходить с состояния в состояние. Подобно традиционным процессам (то есть процессам, которые составляются с одной нити), нити могут находится в одном из таких состояний: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ и ГОТОВНОСТЬ.

Использование большинства компьютеров на уровне машинного языка тяжело, особенно это касается запровадження-висновка. Например, для организации чтения блока данных из гибкого диска программист может использовать 16 разных команд, каждая с который нуждается в 13 параметрах, таких как номер блока на диске, номер сектора на дорожке и т.п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значение, которые отбивают наличие и типы ошибок, которые, очевидно, надо анализировать. Даже если не входить в курс реальных проблем программирования внедрения, ясно, что среди программистов нашлось бы не много желающих непосредственно заниматься программированием этих операций.

Блокирование файла поддерживается с помощью системного вызова UNIX FLOCK. Если блокирования не нанимается на протяжении 30 промелькнут, то она нанимается по тайм-ауту. Поэтому, предназначенные только для чтения, такие как системные двоичные файлы, реплицируются, а пользовательские файлы - нет.

Хотя прикладные программы видят традиционное пространство имен UNIX, внутренняя организация серверу и клиента использует целиком другую схему имен. Они используют двухуровневую схему именования, при какой каталог содержит структуры, называемые fids (file identifiers), вместо традиционных номеров i-узлов.

В общем случае "структура" монолитной системы представляет собой отсутствие структуры (рисунок 4.1). ОС написанный как набор процедур, каждая с который может вызвать другие, когда ей это нужно. При использовании этой техники каждая процедура системы имеет хорошо определенный интерфейс в сроках параметров и результатов, и каждая свободна вызвать любую другую для выполнения некоторой нужной для нее полезной работы.

Рис.

Требование переносимости кода тесно связано с расширяемостью. Расширяемость позволяет улучшать операционную систему, в то время как переносимость дает возможность перемещать всю систему на машину, которая базируется на другом процессоре или аппаратной платформе, делая при этом по возможности небольшие изменения в коде. Хотя ОС часто описываются или как переносимые, или как невыносимые, переносимость - это не бинарное состояние. Вопрос не в том, может ли быть система перенесенная, а в том, насколько легко можно это сделать.

Служба NDS предназначена для управления такими сетевыми ресурсами, как серверы и потому Netware, но она не обеспечивает управления файловой системой. Файлы и каталоги не являются объектами службы NDS. Однако они рекомендуются в виде иконок при использовании графической утилиты Netware Administrator. Одним из атрибутов объекта-поэтому есть местоположение физического потому, что содержит файлы и каталоги. Таким образом, объект-том представляет собой связь между NDS и файловой системой.

Служба NDS предоставляет средства для поиска объектов в ее базе данных сетевых ресурсов.

Ключевым компонентом любой распределенной системы есть файловая система. Как и в централизованных системах, в распределенной системе функцией файловой системы есть сохранения программ и данных и предоставления доступа к ним в меру необходимости. Файловая система поддерживается одной или более машинами, называемыми файлами-серверами. Файлы-Серверы перехватывают запросы на чтение или запись файлов, которые поступают от других машин (не серверов). Эти другие машины называются клиентами. Каждый посланный запрос проверяется и выполняется, а ответ отсылается обратно.

Физическое адресное пространство процессора i386 составляет 4 Гбайта, что определяется 32-разрядной шиной адреса. Физическая память есть линейной с адресами от 00000000 до FFFFFFFF в шестнадцатеричном представлении. Виртуальный адрес, используемый в программе, представляет собой пары - номер сегмента и сдвиг внутри сегмента. Сдвиг хранится в соответствующем поле команды, а номер сегмента - в одном из шести сегментных регистров процессора (CS, SS, DS, ES, FS или GS), каждый из который есть 16-битным.

Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.

Обычные файлы в свою очередь подразделяются на тексту и двоичные. Текстовые файлы составляются из строк символов, представленных в Ascii-Коде. Это могут быть документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют Ascii-Коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные что выполняются файлы.

Теперь проследим, как виртуальное пространство отображается на физическое пространство размером в 4 Гбайта при чисто сегментном механизме отображения. Итак, когда задачи необходимо получить доступ к сердцевине физической памяти, то для выбора дескриптора виртуального сегмента используется значения селектора с соответствующего (в зависимости от команды и стадии ее выполнения - выборка кода команды или данных) сегментного регистра процессора. Значение поля типа таблицы указывает на то, какую таблицу нужно использовать - GDT или LDT.


s#0