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