ВУЗ:
Составители:
Рубрика:
Чтобы в системе хранить состояние каждого процесса и иметь возможность анализи-
ровать его, добавим к дескриптору ёще одно поле – “состояние”.
В результате получим следующий тип дескриптора:
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
- …
- следующая ›
- последняя »
