ВУЗ:
Составители:
Рубрика:
1) автоматически выполняется запоминание контекста в системном стеке;
2) восстанавливается контекст диспетчера;
3) находится процесс с номером К в списке процессов;
4) изменяется состояние процесса, т.е. присваивается новое значение полю
дескриптора (true);
5) восстанавливается контекст процесса, выдавшего запрос диспетчеру;
2. Действия диспетчера при выполнении процедуры “ждать”
1) автоматически выполняется сохранение контекста процесса, обратившегося
к диспетчеру, в системный стек и восстановление контекста диспетчера;
2) активный процесс, ссылка на который является значением “текущий про-
цесс”, переводится в состояние отрицания: текущийпроцесс^.адресстека := false;
3) контекст процесса, обратившегося к диспетчеру, из системного стека пере-
носится в стек процесс. Адрес стека определяется следующим образом: текущийпро-
цесс^.адресстека;
4) выполняется выбор следующего процесса, который можно запустить. До-
пустим, что это делает процедура “Выбор”. Эта процедура просматривает список
процессов, начиная всегда с первого дескриптора в списке, и выбирает всегда первый
процесс, находящийся в состоянии “готов”. При этом она ссылку на новый процесс
заносит в переменную “текущий процесс”;
5) выполняется загрузка контекста выбранного процесса в системный стек.
Адрес стека, откуда выбирается контекст, определяется переменной: текущийпро-
цесс^.адрес стека;
6) выполняется переключение контекста аналогично команде возврата из про-
цедуры обработки прерывания iret, т.е. из системного стека контекст загружается в
память процессора.
Лекция 4. Процедура обработки прерываний
При работе системы запрос на прерывание может появиться как во время выполнения
процесса, так и при выполнении диспетчера. При этом должны выполняться следующие дей-
ствия:
1) сохранение контекста процесса или диспетчера и осуществление перехода к проце-
дуре обработки прерываний;
2) обработка, в результате которой могут быть, например, прочитаны данные из уст-
ройства и переданы в буфер. Программа обработки прерываний может активизировать неко-
торый процесс, ожидающий сигнала прерываний, с помощью процедуры “готов”;
3) переключение контекста, т.е. восстановление контекста, хранящегося в системном
стеке.
Набор процедур диспетчера
1. Процедура “готов”
Procedure Готов (K:int); {K – номер процесса}
Var
Р: связь;
i : int;
Begin
P:=начало;
i:=1;
While i<>K do
begin
1) автоматически выполняется запоминание контекста в системном стеке; 2) восстанавливается контекст диспетчера; 3) находится процесс с номером К в списке процессов; 4) изменяется состояние процесса, т.е. присваивается новое значение полю дескриптора (true); 5) восстанавливается контекст процесса, выдавшего запрос диспетчеру; 2. Действия диспетчера при выполнении процедуры “ждать” 1) автоматически выполняется сохранение контекста процесса, обратившегося к диспетчеру, в системный стек и восстановление контекста диспетчера; 2) активный процесс, ссылка на который является значением “текущий про- цесс”, переводится в состояние отрицания: текущийпроцесс^.адресстека := false; 3) контекст процесса, обратившегося к диспетчеру, из системного стека пере- носится в стек процесс. Адрес стека определяется следующим образом: текущийпро- цесс^.адресстека; 4) выполняется выбор следующего процесса, который можно запустить. До- пустим, что это делает процедура “Выбор”. Эта процедура просматривает список процессов, начиная всегда с первого дескриптора в списке, и выбирает всегда первый процесс, находящийся в состоянии “готов”. При этом она ссылку на новый процесс заносит в переменную “текущий процесс”; 5) выполняется загрузка контекста выбранного процесса в системный стек. Адрес стека, откуда выбирается контекст, определяется переменной: текущийпро- цесс^.адрес стека; 6) выполняется переключение контекста аналогично команде возврата из про- цедуры обработки прерывания iret, т.е. из системного стека контекст загружается в память процессора. Лекция 4. Процедура обработки прерываний При работе системы запрос на прерывание может появиться как во время выполнения процесса, так и при выполнении диспетчера. При этом должны выполняться следующие дей- ствия: 1) сохранение контекста процесса или диспетчера и осуществление перехода к проце- дуре обработки прерываний; 2) обработка, в результате которой могут быть, например, прочитаны данные из уст- ройства и переданы в буфер. Программа обработки прерываний может активизировать неко- торый процесс, ожидающий сигнала прерываний, с помощью процедуры “готов”; 3) переключение контекста, т.е. восстановление контекста, хранящегося в системном стеке. Набор процедур диспетчера 1. Процедура “готов” Procedure Готов (K:int); {K – номер процесса} Var Р: связь; i : int; Begin P:=начало; i:=1; While i<>K do begin
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »