Реализация процессов

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

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

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

Таблица 2.1. Некоторые из полей типичной записи таблицы процессов


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

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

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

Таблица 2.2. Схема работы низшего уровня операционной системы при возникновении прерывания
1 Оборудование помещает в стек счетчик команд и т. п.
2 Оборудование загружает новый счетчик команд из вектора прерывания
3 Процедура на ассемблере сохраняет регистры
4 Процедура на ассемблере устанавливает указатель на новый стек
5 Запускается процедура на языке ^ обслуживающая прерывание (как правило, она считывает входные данные и помещает их в буфер)
6 Планировщик принимает решение, какой процесс запускать следующим
7 Процедура на языке C возвращает управление ассемблерному коду
8 Процедура на ассемблере запускает новый текущий процесс


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

2.1.2.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Реализация процессов:

  1. Очерк 2: Берт «Процесс — вот мое достояние. Именно процесс создает успех»
  2. Глава 6. Реализация права
  3. 4.2. Реализация
  4. 4. Реализация прав по ипотеке
  5. 3.3. Дальнейшая реализация проекта
  6. РЕАЛИЗАЦИЯ МЫСЛЕННОГО ПРЕДСТАВЛЕНИЯ
  7. 10. Реализация заложенного имущества
  8. Механизм реализации личности
  9. Основные психологические функции и инструментарий их реализации.
  10. Статья 591. Реализация предмета залога
  11. 6.1. Понятие и формы реализации права
  12. Практическая реализация.
  13. Практическая реализация.
  14. Практическая реализация.
  15. 6.3. Примеры практической реализации метода анализа утверждений
  16. 6.3. Примеры практической реализации метода анализа утверждений
  17. 3. Реализация прав, вытекающих из залога
  18. Этапы реализации программы сопровождения одаренного ребенка
  19. 14.2. Реализация моделей клеточных автоматов на ЭВМ