Организация вычислительных процессов. Конспект лекций по дисциплине "Системы реального времени". Степанов Б.М. - 9 стр.

UptoLike

Составители: 

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