Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой ОС / РГР Открытое ПО / РГР Открытое ПО.doc
Скачиваний:
45
Добавлен:
15.06.2014
Размер:
268.8 Кб
Скачать

3.1.3 Hurd

Процесс в Mach - это, в первую очередь, адресное пространство и набор нитей, которые выполняются в этом адресном пространстве. Таким образом можно сказать, что понятие процесса в Maсhсовпадает с таковым вBSDиLinux.

В микроядре Machиспользуется межпроцессное взаимодействие (IPC) — похожий на конвейеры принцип организации взаимодействия процессов, позволяющий перемещать любую файлоподобную информацию между двумя программами. Mach сделан системой, больше похожей на Unix, которая позволяет запускать Unix-программы с минимальными изменениями или вовсе без них. Для достижения этой цели в Mach существует концепция «порта», представляющего конец в двухстороннем IPC. Порты защищены и имеют права, подобные правам доступа на файлы вLinuxиBSD, а также используют очень похожую модель защиты. Дополнительно Mach, в отличии отBSDиLinux, разрешает любой программе владеть привилегиями, которыми обычно владеет только ядро, позволяя непривилегированному уровню (user-space) обращаться к аппаратному обеспечению.

Кроме адресного пространства и нитей, процесс характеризуется используемыми им портами. Все порты имеют специальное назначение. Порт процесса используется для взаимодействия с ядром. Многие из функций ядра процесс может вызывать путем отправки сообщения на порт процесса, а не с помощью системного вызова (как в LinuxиBSD). Этот механизм используется в Mach всюду для уменьшения количества системных вызовов до возможного минимума. Порт загрузки используется при инициализации, когда система стартует. Самый первый процесс читает из порта загрузки, чтобы узнать имена портов ядра, которые обеспечивают наиболее важные сервисы. Порт особых ситуаций используется системой для передачи сообщений об ошибках процессу. Примерами особых ситуаций является деление на ноль, неправильный код команды. Этот порт также используют отладчики. Зарегистрированные порты обычно используются для обеспечения возможностей взаимодействия между процессами и стандартными системными серверами.

Нужно отметить, чем не обладает процесс Mach по сравнению с процессами LinuxиBSD. Процесс не содержит: идентификатор, корневой каталог, рабочий каталог, массив дескрипторов файлов. Вся эта информация содержится в параметрах процесса на уровне сервера пользовательского режима.

Так же есть существенные отличия от LinuxиBSDв плане создания процессов. ВMachпотомок является копией прототипа, за исключением случая наследования родительского адресного пространства, который определяется заданием параметра. Если адресное пространство не наследуется, то объекты (например, текст, инициализированные данные и стек) могут быть отображены в него позже. Изначально потомок не имеет нитей. Однако он автоматически наследует порты загрузки, процесса и особых ситуаций. Другие порты автоматически не наследуются.

Нити Mach управляются ядром, то есть они являются тем, что иногда называют "тяжеловесными" нитями, в отличие от "легковесных" нитей (нитей, полностью выполняющихся в пользовательском пространстве). Создание и уничтожение нитей осуществляется ядром и включает обновление структур данных ядра. На однопроцессорной системе нити выполняются в режиме мультипрограммирования (как и в LinuxиBSD). На многопроцессорной системе нити выполняются параллельно.

Соседние файлы в папке РГР Открытое ПО