Разделы:


Best links:

Процессор операционной системы

10. Процесс выходит из системы, если он указан в системном вызове DELETETASK.

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

На рис. 8.16 показано выполнение процессов 1, 2 и 3 под управлением операционной системы. Предполагается, что все три процесса находятся в системе, причем процесс 1 имеет наивысший приоритет, а процессы 2 и 3 имеют одинаковые, но меньшие приоритеты. Предполагается также, что первоначально процесс 2 находился в состоянии готовности дольше процесса 3. Сплошные линии показывают, какой процесс находится в состоянии выполнения.

Image
 

Рис. 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.

предыдущаяследующая