Разделы:
Best links:
Процессор операционной системы
10. Процесс выходит из системы, если он указан в системном вызове DELETETASK.
Отметим, что в данной ОС приоритеты имеют не только процессы, находящиеся в состоянии готовности. Процессам, находящимся в приостановленном или пассивно-приостановленном состоянии, также назначаются приоритеты в соответствии с их глубинами приостановки.
На рис. 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 представляют собой соответственно код входа и тип прерывания, соответствующие системному вызову DELETETASK. Число 184 обозначает выполняемую процедуру прерывания, а код входа показывает этой процедуре, что необходимо произвести удаление. Предполагается, что TASK_N0 содержит номер удаляемого процесса, а ЕХСРТ_PTR — указатель процедуры, которая выполняется, если при удалении возник особый случай. Процедура прерывания для доступа к стеку использует регистры bpи si.
предыдущаяследующая© Copyright, 2009.
Для связи: info@dgs-srl.com.