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

UptoLike

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

else if p^.следующий<>nil
then p:=p^.следующий;
{если очередной дескриптор не является последним в списке процессов, то переменной р
присваивается ссылка на следующий дескриптор}
else begin
b:=false;
Вывести сообщение (“Нет готовых процессов”);
{если рассматриваемый дескрипторпоследний в списке процессов, то изменяется
значение переменной, определяющей выход из цикла и выводится сообщение}
end;
end;
Готовых процессов в списке может не оказаться, если в система ожидает какого-либо
внешнего события. В этом случае, вместо сообщения может повторить просмотр списка про-
цессов. Таким образом, диспетчер может зациклиться на просмотре списка процессов. Это
зацикливание равносильно режиму ожидания системы.
Другой вариант работы системы может состоять в том, что после вывода сообщения
при отсутствии готовых процессов оператор с помощью процедурыготов активизирует
какой-либо процесс, игнорируя работу системы.
Лекция 5. Диспетчер с относительным круговым приоритетом
Относительный круговой приоритет предусматривает, что дескрипторы процессов
упорядочены в соответствии с приоритетами и, что после завершения k-го процесса в списке,
просмотр списка для выбора очередного процесса начинается с k+1-го процесса. Кроме того,
при достижении последнего элемента списка должен осуществляться переход к началу спи-
ска.
Для реализации принципа относительного кругового приоритета список процессов
должен быть замкнут, т.е. в последнем дескрипторе списка в полеследующий должна
быть записана ссылка на первый элемент.
Такой диспетчер может отличаться от предыдущего только одной процедуройвы-
брать”.
procedure выбрать1;
var
p:связь;
b:boolean;
begin
p:=текущийпроцесс;
b:=true;
while b do
if p^.состояние then begin
текущий процесс:=p;
b:=false;
end;
else if p^.следующий<>текущий процесс
then
p:=p^.следующий
else
вывести сообщение (“Нет готовых процессов”);
end;
else if p^.следующий<>nil
         then p:=p^.следующий;
{если очередной дескриптор не является последним в списке процессов, то переменной р
присваивается ссылка на следующий дескриптор}
else begin
b:=false;
Вывести сообщение (“Нет готовых процессов”);
         {если рассматриваемый дескриптор – последний в списке процессов, то изменяется
значение переменной, определяющей выход из цикла и выводится сообщение}
end;
end;

       Готовых процессов в списке может не оказаться, если в система ожидает какого-либо
внешнего события. В этом случае, вместо сообщения может повторить просмотр списка про-
цессов. Таким образом, диспетчер может зациклиться на просмотре списка процессов. Это
зацикливание равносильно режиму ожидания системы.
       Другой вариант работы системы может состоять в том, что после вывода сообщения
при отсутствии готовых процессов оператор с помощью процедуры “готов” активизирует
какой-либо процесс, игнорируя работу системы.

Лекция 5. Диспетчер с относительным круговым приоритетом

       Относительный круговой приоритет предусматривает, что дескрипторы процессов
упорядочены в соответствии с приоритетами и, что после завершения k-го процесса в списке,
просмотр списка для выбора очередного процесса начинается с k+1-го процесса. Кроме того,
при достижении последнего элемента списка должен осуществляться переход к началу спи-
ска.
       Для реализации принципа относительного кругового приоритета список процессов
должен быть замкнут, т.е. в последнем дескрипторе списка в поле “следующий” должна
быть записана ссылка на первый элемент.
       Такой диспетчер может отличаться от предыдущего только одной процедурой “вы-
брать”.

procedure выбрать1;
var
        p:связь;
        b:boolean;
begin
p:=текущийпроцесс;
b:=true;
while b do
if p^.состояние then begin
текущий процесс:=p;
b:=false;
end;
else if p^.следующий<>текущий процесс
then p:=p^.следующий
else
вывести сообщение (“Нет готовых процессов”);
end;