Процессор операционной системы
По мере совершенствования технологии производства микросхем появилась возможность размещать на кристалле системные средства, необходимые для реализации высокопроизводительных специализированных ВМ. Примером такой микросхемы является Intel 80130, которая совместно с ЦП, работающим в максимальном режиме образует то, что фирма Intel называет процессором операционной системы. Архитектура этой микросхемы представлена на рис. 8.14.
Рис. 8.14. Архитектура микросхемы Intel 80130
В этой ОС имеются три заблокированных состояния: пассивное, приостановленнос и пассивно-приостановленное. Система характеризуется тем, что управляет событиями, а временная зависимость заключается в том, что процесс может быть переведен в пассивное состояние на определенное время. Изменения состояний вызываются программными приказами, которые называются системными вызовами и реализуются с помощью программных прерываний или автоматически после возникновения определенных событий.
Рис. 8.15. Состояния процессов
Возможные изменения показаны стрелками и дугами, причем номера стрелок на рис. 8.15 соответствуют номерам следующих действий:
1. Процесс входит в систему, когда он создается системным вызовом CREATE TASK.
2. Процесс переводится из состояния готовности в состояние выполнения, когда:
его приоритет выше приоритета выполняемого процесса;
выполняемый процесс переводится в пассивное или приостановленное состояние, если приоритет процесса в состоянии готовности столь же высок, как и приоритет любого другого процесса в состоянии готовности, но сам процесс находился в очереди готовности дольше любого процесса с равным приоритетом.
3. Процесс переводится из состояния выполнения в состояние готовности, когда выполняемый процесс должен уступить ЦП процессу с большим приоритетом, находящимся в состоянии готовности.
4. Процесс переводится из состояния выполнения в пассивное состояние, если выполняемый процесс встречает системный вызов SLEEP или должен ожидать информации, которую он запросил, но которая пока недоступна. В первом случае временное ограничение указывается в вызове SLEEP а во втором процесс должен выразить готовность ожидать запрошенную информацию (через системный вызов).
5. Процесс переходит из пассивного состояния в состояние готовности или из пассивно-приостановленного состояния в приостановленное, когда истекает интервал ожидания, указанный в вызове SLEEP, или когда удовлетворяется запрос процесса.
б. Процесс переходит из состояния выполнения в приостановленное состояние, когда выполняемый процесс приостанавливает себя, выполняя системный вызов SUSPEND TASK. Кроме того, глубина приостановки для процесса устанавливается равной 1.
7. Процесс переводится из состояния готовности в приостановленное состояние или из пассивного состояния в пассивно-приостановленное, когда другой процесс определяет его в системном вызове SUSPEND TASK. Кроме того, его глубина приостановки устанавливается равной 1.
8. Состояние приостановленного или пассивно-приостановленного процесса не изменяется, но производится инкремент его глубины приостановки, когда выполняемый процесс реализует вызов SUSPEND TASK, определяющий процесс. Аналогично осуществляется декремент глубины приостановки приостановленного процесса, когда реализуется вызов RESUME TASK.
9. Приостановленный (пассивно-приостановленный) процесс переводится в состояние готовности (в пассивное состояние), если его глубина приостановки становится равной О.
10. Процесс выходит из системы, если он указан в системном вызове DELETE TASK.
Отметим, что в данной ОС приоритеты имеют не только процессы, находящиеся в состоянии готовности. Процессам, находящимся в приостановленном или пассивно-приостановленном состоянии, также назначаются приоритеты в соответствии с их глубинами приостановки.
На рис. 8.16 показано выполнение процессов 1, 2 и 3 под управлением операционной системы. Предполагается, что все три процесса находятся в системе, причем процесс 1 имеет наивысший приоритет, а процессы 2 и 3 имеют одинаковые, но меньшие приоритеты. Предполагается также, что первоначально процесс 2 находился в состоянии готовности дольше процесса 3. Сплошные линии показывают, какой процесс находится в состоянии выполнения.
Рис. 8.16. Действия под управлением ОС
Кроме управления состояниями процессов системные вызовы используются для создания и удаления различных объектов, выполнения операций, необходимых для многозадачных приложений. Ниже приведены примеры подобных системных вызовов.
Объекты: задачи (TASK), задания (JOB) , сообщения (MAILBOX), области памяти (REGION), сегменты памяти (SEGMENT). Операции: создать (CREATE), удалить (DELETE), послать (SEND), установить (SET), разрешить (ENABLE) и т. д.
Между процессами с помощью системных вызовов можно реализовать три способа взаимодействия:
• обмен информацией (MAILBOX): CREATE MAILBOX, DELETE MAILBOX, SEND MESSAGE, RECEIVE MESSAGE;
• взаимоисключения (SUSPEND): SUSPEND TASK , RESUME TASK, SET PRIORITY;
• синхронизация (SEND CONTROL), SLEEP, SEND CONTROL, RECEIVE CONTROL, ACCEPT CONTROL, WAIT INTERRUPT, SIGNAL INTERRUPT.
Для выполнения операций динамического выделения памяти можно использовать: CREATE SEGMENT, DELETE SEGMENT, CREATE REGION, DELETE REGION, SEND CONTROL, RECEIVE CONTROL.
Для управления прерываниями: INTERRUPT ENABLE, INTERRUPT DISABLE, SET LEVEL, GET LEVEL, WAIT INTERRUPT, RESET INTERRUPT, EXIT INTERRUPT, SIGNAL INTERRUPT.
Как уже упоминалось, системные вызовы реализованы с помощью программных прерываний и параметры передаются в вызванную процедуру прерывания и из нее через стек. Фрагмент для удаления задачи имеет следующий вид:
push TASK_NO
push EXCPT_PTR
mov bp, sp
lea si, ss[bp+ 2]
mov ax,201h
int 184.
Здесь 201h и 184 представляют собой соответственно код входа и тип прерывания, соответствующие системному вызову DELETE TASK. Число 184 обозначает выполняемую процедуру прерывания, а код входа показывает этой процедуре, что необходимо произвести удаление. Предполагается, что TASK_N0 содержит номер удаляемого процесса, а ЕХСРТ_PTR — указатель процедуры, которая выполняется, если при удалении возник особый случай. Процедура прерывания для доступа к стеку использует регистры bp и si.
Контрольные вопросы
1. В чем заключается основное назначение процессора ввода-вывода?
2. Опишите назначение регистров сборки-разборки.
3. Какие поля образуют регистр управления каналом и как они используются для управления пересылкой ПДП?
4. Каким образом ЦП осуществляет взаимодействие с каналами ПВВ для передачи заданий на обработку ввода-вывода?
5. Какие регистры образуют программную модель ПВВ? Приведите пример использования каждого регистра.
6. Какой тип пересылок не могут осуществлять каналы ПВВ?
7. В чем основные отличия языка ASM-89 от ASM-86?
8. Какая команда осуществляет старт пересылки ПДП и в чем особенность ее исполнения?
9. Объясните особенности переходов между состояниями задачи в ОС реального времени.
10. Опишите структуру управления каналами ввода-вывода.
11. Назовите назначение внешних сигналов SINTR, EXT и DRQ.
12. Как осуществляется начальная инициализация канала?
13. Какая команда удобна для реализации семафора? Приведите пример ее использования.
14. Для чего используется маскированное сравнение?
15. Почему у регистра РР нет соответствующего ему разряда TAG?
16. Для чего служит TAG регистр?
17. Объясните назначение полей регистра управления каналом СС.
18. Как можно осуществлять пересылку ПДП с одновременным перекодированием?
19. Для чего служит слово-состояние программы PSW?
20. Как реализуются переходы по окончании ПДП для разных причин окончания?
21. Что понимается под процессором операционной системы?
22. Что такое внешнее событие?
23. Какой узел служит для обработки большого числа внешних событий?
24. Чем отличаются пассивное и приостановленное состояния процесса?
25. Назовите директивы используемые для координации процессов.
26. С какой целью используется директива DELETE?
27. При каком условии процесс может выйти из приостановленного состояния?
Дата добавления: 2015-12-22; просмотров: 699;