ВУЗ:
Составители:
Рубрика:
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;
Страницы
- « первая
- ‹ предыдущая
- …
- 9
- 10
- 11
- 12
- 13
- …
- следующая ›
- последняя »