ВУЗ:
Составители:
Рубрика:
P:=P^.следующий;
i:=i+1;
end;
P^.состояние:=true;
end;
Оператор цикла осуществляет просмотр дескрипторов, пока не будет обнаружен де-
скриптор, номер которого i равен заданному К. В теле цикла выполняется определение ссыл-
ки на следующий элемент и изменение номера дескриптора. После того как процесс найден,
ссылка на него является значением переменной Р. Состояние процесса меняется в соответст-
вии с этой переменной.
2. Процедура “ждать”
Procedure ждать;
begin
текущийпроцесс^.состояние:=false;
Передать контекст процесса (текущийпроцесс^.адресстека); {осуществляется пере-
сылка контекста из системного стека в стек текущего процесса}
Выбрать;
{Процедура осуществляет поиск и выбор очередного процесса, который должен вы-
полняться. Ссылку на этот процесс она присваивает переменной текущего процесса}
Загрузить контекст процесса (текущий процесс^.адрес стека);
{Процедура осуществляет передачу контекста из стека нового (выбранного) процесса
в системный стек}
Переключить контекст; {Эта процедура действует аналогично команде Iret, передавая
контекст из системного стека в память процессора}
3. Процедура “выбрать”
Назначение: выделение из списка процессов следующего процесса, который получает
в своё распоряжение процессор.
Т.к. эта процедура работает в равенстве с принципом фиксированного относительного
приоритета, то необходимо предусмотреть следующее:
1) дескрипторы в списке процессов должны быть расположены в порядке убывания
приоритетов.
2) просмотр списка должен всегда выполняться, начиная с первого элемента.
procedure
выбрать;
var
р: связь;
b: boolean;
begin
p:=начало;
b:=true;
{p указывает на первый процесс, b –параметр цикла}
while b do {цикл просмотра процессов}
if p^.состояне then
begin
текущий процесс :=p;
b:= false;
end;
{если состояние рассматриваемого процесса – “готов”, то ссылка на этот процесс запомина-
ется переменной “текущий процесс” и изменяется значение переменной, определяющей
окончание цикла}
P:=P^.следующий;
i:=i+1;
end;
P^.состояние:=true;
end;
Оператор цикла осуществляет просмотр дескрипторов, пока не будет обнаружен де-
скриптор, номер которого i равен заданному К. В теле цикла выполняется определение ссыл-
ки на следующий элемент и изменение номера дескриптора. После того как процесс найден,
ссылка на него является значением переменной Р. Состояние процесса меняется в соответст-
вии с этой переменной.
2. Процедура “ждать”
Procedure ждать;
begin текущийпроцесс^.состояние:=false;
Передать контекст процесса (текущийпроцесс^.адресстека); {осуществляется пере-
сылка контекста из системного стека в стек текущего процесса}
Выбрать;
{Процедура осуществляет поиск и выбор очередного процесса, который должен вы-
полняться. Ссылку на этот процесс она присваивает переменной текущего процесса}
Загрузить контекст процесса (текущий процесс^.адрес стека);
{Процедура осуществляет передачу контекста из стека нового (выбранного) процесса
в системный стек}
Переключить контекст; {Эта процедура действует аналогично команде Iret, передавая
контекст из системного стека в память процессора}
3. Процедура “выбрать”
Назначение: выделение из списка процессов следующего процесса, который получает
в своё распоряжение процессор.
Т.к. эта процедура работает в равенстве с принципом фиксированного относительного
приоритета, то необходимо предусмотреть следующее:
1) дескрипторы в списке процессов должны быть расположены в порядке убывания
приоритетов.
2) просмотр списка должен всегда выполняться, начиная с первого элемента.
procedure выбрать;
var
р: связь;
b: boolean;
begin
p:=начало;
b:=true;
{p указывает на первый процесс, b –параметр цикла}
while b do {цикл просмотра процессов}
if p^.состояне then
begin
текущий процесс :=p;
b:= false;
end;
{если состояние рассматриваемого процесса – “готов”, то ссылка на этот процесс запомина-
ется переменной “текущий процесс” и изменяется значение переменной, определяющей
окончание цикла}
Страницы
- « первая
- ‹ предыдущая
- …
- 8
- 9
- 10
- 11
- 12
- …
- следующая ›
- последняя »
