СРВ    

  Практика ~ 
  Тема 01 ~ 
  Тема 02 ~ 
  Тема 03 ~ 
  Тема 04 ~ 
  Тема 05 ~ 
  Тема 06 ~ 
  Тема 07 ~ 
  Тема 08 ~ 
  Тема 09 ~ 
  Тема 10 ~ 
  Тема 11 ~ 
/Студентам/СРВ/Тема 10

Тема 10
ОСРВ QNX. Менеджер процессов

Введение

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

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

QNX предоставляет 3 примитива создания процесса:

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

Жизненный цикл процесса

Процесс в QNX проходит через 4 стадии

Завершение процесса происходит в 2 стадии: на первой управление получает специальная нить менеджера процессов (termination thread), которая исполняется с идентификатором завершаемого процесса и освобождает все ресурсы, используемые процессом (открытые файлы, динамически выделенная память, виртуальные цепочки, символические имена, главные номера устройств, обработчики прерываний, прокси, таймеры); на второй стадии родительскому процессу посылается уведомление о завершении дочернего. При этом вопросы с "зомби" решаются способом, в целом аналогичном способу, описанному в стандарте POSIX.

Состояния процесса

На рисунке ниже приведена диаграмма состояния процессов в ОС QNX.

Состояния процессов в ОС QNX

Обычно присутствующее состояние "RUN" здесь опущено. Его нужно узреть на стрелочках, обозначающих переходы между состояниями READY->any_other.

Состояние готовности ("READY") - состояние, в котором процесс способен конкурировать за процесссорное время (то есть ему ничего, кроме этого, не требуется)

Состояние "BLOCKED" ("WAIT", "SLEEP", "SUSPENDED"), как видно из диаграммы, имеет разновидности, в зависимости от того, чего именно ожидает процесс (получения ответа на сообщение, освобождения семафора, заверешения дочернего процесса, получение сообщения процессом, которому оно адресовано и т.п.).

В состояние "HELD" ("ОСТАНОВЛЕН") процесс переходит тогда, когда получает сигнал SIGSTOP. В этом состоянии процесс не может претендовать на процессорное время. Из этого состояния процесс может вернуться только в том случае, если получит сигнал о продолжении своей работы ("SIGCONT") или же получит иной сигнал, на который нужно отреагировать завершением.

В состояние "ЗАВЕРШЕН" ("DEAD", "ZOMBIE") процесс переходит в том случае, если он окончил стадию завершения, но родительский процесс данного процесса его не ждал.

Переходы между состояниями таковы:

  1. Процесс посылает сообщение
  2. Процесс-получатель получает сообщение
  3. Процесс-получатель отвечает на сообщение
  4. Процесс ожидает получения сообщения
  5. Процесс получает сообщение
  6. Процесс разблокируется в результате получения какого-либо сигнала
  7. Получение сигнала приводит к попытке разблокировки процесса, однако процесс-получатель запретил обработку сигналов процессом-отправителем до тех пор, пока получатель не ответит (???)
  8. .....
  9. Процесс ожидает завершения дочернего процесса
  10. Дочерний процесс завершается
    (или процесс разблокируется вследствие получения сигнала)
  11. Процесс получает сигнал SIGSTOP
  12. Процесс получает сигнал SIGCONT
  13. Процесс завершается
  14. Родительский процесс ожидает завершения потомка, сам завершается или ранее завершился
  15. Процесс ждет освобождения ресурса, доступ к которому защищен семафором
  16. Ресурс, защищенный семафором, освобождается другим процессом.

Для определения состояния процессов (в интерпретаторе команд, оболочке) можно использовать утилиты ps и sin. Первая реализована в соответствии со стандартом POSIX, вторая специфична для QNX, но зато она позволяет получить информацию, которую невозможно получить с помощью первой.

Символические имена процессов

......

Таймеры

.....

Обработчики прерываний

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

Основные свойства обработчиков прерываний:

Управление по возникновении одного и того же прерывания могут получать несколько процессов в порядке, определяемом микроядром (например, в порядке регистрации обработчиков).

Дата последней модификации: 2009-07-25


/Студентам/СРВ/Тема 10

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

Valid HTML 4.0 Strict Valid CSS!