ВУЗ:
Составители:
Рубрика:
Чтобы в системе хранить состояние каждого процесса и иметь возможность анализи-
ровать его, добавим к дескриптору ёще одно поле – “состояние”.
В результате получим следующий тип дескриптора:
type
связь = ^дескриптор;
связь1 = ^процесс;
связь2 = ^стек;
дескриптор = record
следующий : связь;
адрес процесса : связь1;
адрес стека : связь2;
состояние : boolean;
end;
Поле “состояние” может принимать значение
– true (состояние готовности),
– false (состояние ожидания).
Каждый процесс, будучи запущенным, может обратиться к диспетчеру с помощью
примитивов. В существующий момент времени процесс может обрабатывать сигнал, позво-
ляющий переводить его состояние ожидания. Каждый процесс заканчивается процедурой
“ждать”. Процедура “ждать” применима только к выполняемому процессу и должна произ-
водить выбор следующего процесса.
Действия, выполняемые диспетчером
1. Действия диспетчера при выполнении процедуры “готов”
Допустим, что диспетчер работает со списком дескрипторов, который представляет
собой цепной список. Последний элемент этого списка в поле ”следующий” имеет nil (пус-
той). Первый элемент цепного списка определяется специальной переменной – начало (эта
переменная хранит ссылку на первый элемент).
Для работы диспетчер будет использовать ещё одну переменную – текущийпроцесс
.
Значением этой переменной является ссылка на дескриптор выполняемого в данный момент
времени процесса.
Допустим, что выполнение процедур обращения к диспетчеру начинается с системно-
го прерывания.
Таким образом, при обращении
состояние =
false
ждать
ожидание
готовность
состояние =
true
готов
сле
ду
ю
щ
ий
а
др
ес п
р
о
ц
есса
а
др
ес стека
состояние
ждать ожидание готовность состояние = состояние = false true готов Чтобы в системе хранить состояние каждого процесса и иметь возможность анализи- ровать его, добавим к дескриптору ёще одно поле – “состояние”. В результате получим следующий тип дескриптора: следующий адрес процесса адрес стека type состояние связь = ^дескриптор; связь1 = ^процесс; связь2 = ^стек; дескриптор = record следующий : связь; адрес процесса : связь1; адрес стека : связь2; состояние : boolean; end; Поле “состояние” может принимать значение – true (состояние готовности), – false (состояние ожидания). Каждый процесс, будучи запущенным, может обратиться к диспетчеру с помощью примитивов. В существующий момент времени процесс может обрабатывать сигнал, позво- ляющий переводить его состояние ожидания. Каждый процесс заканчивается процедурой “ждать”. Процедура “ждать” применима только к выполняемому процессу и должна произ- водить выбор следующего процесса. Действия, выполняемые диспетчером 1. Действия диспетчера при выполнении процедуры “готов” Допустим, что диспетчер работает со списком дескрипторов, который представляет собой цепной список. Последний элемент этого списка в поле ”следующий” имеет nil (пус- той). Первый элемент цепного списка определяется специальной переменной – начало (эта переменная хранит ссылку на первый элемент). Для работы диспетчер будет использовать ещё одну переменную – текущийпроцесс. Значением этой переменной является ссылка на дескриптор выполняемого в данный момент времени процесса. Допустим, что выполнение процедур обращения к диспетчеру начинается с системно- го прерывания. Таким образом, при обращении
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »