Дисциплины распределения ресурсов. Ядро в привилегированном режиме. Подсистема управления процессами ОС UNIX

Страницы работы

Фрагмент текста работы

После завершения обработки, состояние процесса восстанавливается и процесс возвращается в исходный режим выполнения. Чаще всего это режим задачи, но если, например, прерывание возникло, когда процесс уже находился в режиме ядра, после обработки события он останется в этом режиме.

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

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

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

Если при выполнении системного вызова процессу требуется недоступный в данный момент ресурс, то процесс снимается с выполнения и переходит в очередь ожидания ресурса (переход 7). Недоступность ресурса может быть связана с запуском операции ввода/вывода с диска, ожиданием выделения (освобождения) буфера, ожиданием ввода или вывода на терминал или ожиданием завершения дочернею процесса. К недоступным ресурсам можно также отнести отсутствующую в памяти страницу, к виртуальному адресу которой обратился процесс. Во время нахождения в очереди ожидания ресурса процесс не потребляет вычислительные ресурсы системы. При этом выполняется переключение контекста на другой, высокоприоритетный процесс для выполнения. Таким образом, процесс, ожидающий ввода с клавиатуры, не занимает процессор, циклически опрашивая терминальную линию, а процесс, считывающий данные с диска, не блокирует выполнение других задач.

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

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

Переход процесса в режим ожидания завершения (переход 6) происходит в том случае, если процесс полностью закончил свою работу. При этом:

•  отключаются все сигналы;

•  закрываются все открытые файлы;

•  в дескрипторе процесса сохраняется вся статистика использования вычислительных ресурсов и код возврата;

•  изменяется флаг состояния процесса;

•  освобождаются все ресурсы, область свопинга, занятые процессом;

•  передается сигнал родительскому процессу о завершении его дочернего процесса. Если родитель находится в очереди ожидания ресурса, то производится

Похожие материалы

Информация о работе