ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »
