Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Лекций ПСРВ.doc
Скачиваний:
142
Добавлен:
12.02.2016
Размер:
2.73 Mб
Скачать

5.4. Администратор процессов

Итак, микроядру известны только потоки и то, как с ними обращаться, а поддержку процессов в QNX Neutrino обеспечивает Администратор процессов, скомпонованный с микроядром в единый программный модуль procnto.

Администратор процессов выполняет важные функции:

  • управление процессами;

  • управление памятью;

  • управление пространством путевых имен.

Жизненный цикл процесса включает четыре этапа.

1.   Создание. Процесс может быть создан только другим (родительским) процессом. При этом администратор процессов создает у себя необходимые управляющие структуры данных.

2.   Загрузка кода и данных процесса в ОЗУ.

3.   Выполнение нитей.

4.   Завершение. Завершение процесса проходит две стадии. На первой стадии происходит освобождение ресурсов, связанных с процессом (страницы ОЗУ, открытые файловые дескрипторы и т.п.). На второй стадии код возврата завершаемого процесса передается процессу-родителю. При этом возможны следующие варианты поведения процесса-родителя:

        процесс-родитель заблокирован в ожидании кода завершения дочернего процесса. В этом случае код завершения сразу доставляется родителю, родитель разблокируется и дочерний процесс завершается;

        при запуске дочернего процесса процесс-родитель установил для него флаг SPAWN_NOZOMBIE, т.е. отказался от получения кода завершения дочернего процесса. В этом случае дочерний процесс будет немедленно завершен;

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

Созданный процесс имеет ряд атрибутов, определяющих свойства процесса, которые операционная система учитывает при управлении процессом. К первоочередным свойствам относятся:

       идентификатор процесса (Process ID - PID);

       идентификатор родительского процесса (Parent Process ID - PPID);

       реальные идентификаторы владельца и группы (UID и GID);

       эффективные идентификаторы владельца и группы (EUID и EGID);

       идентификаторы дополнительных групп;

       текущий каталог;

       корневой каталог;

       управляющий терминал (TTY);

       номер приоритета;

       дисциплина диспетчеризации.

Всю реальную работу делают именно потоки, поэтому любой процесс состоит не меньше чем из одного потока.

5.5. Управление памятью

Управление памятью заключается в:

  • управлении защитой памяти;

  • управлении разделяемой памятью (об этом механизме мы говорили в главе 2).

Администратор процессов QNX обеспечивает поддержку полной защиты памяти (так называемую "виртуальную память") процессов.

Каждому процессу предоставляется 4 гигабайта адресного пространства, из них код и данные процесса могут занимать пространство от 0 до 3,5 Гбайт. Диапазон адресов от 3,5 до 4 Гбайт принадлежит модулю procnto (эти значения относятся к ЭВМ на базе процессора х86, в реализациях QNX Neutrino для других аппаратных платформ они могут отличаться).

Для отображения виртуальных адресов на физическую память используются аппаратные блока управления памятью (MMU, Memory Management Unit).