Организация вычислительных процессов. Конспект лекций по дисциплине "Системы реального времени". Степанов Б.М. - 8 стр.

UptoLike

Составители: 

Чтобы в системе хранить состояние каждого процесса и иметь возможность анализи-
ровать его, добавим к дескриптору ёще одно поле – “состояние”.
В результате получим следующий тип дескриптора:
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 (пус-
той). Первый элемент цепного списка определяется специальной переменной – начало (эта
переменная хранит ссылку на первый элемент).
       Для работы диспетчер будет использовать ещё одну переменную – текущийпроцесс.
Значением этой переменной является ссылка на дескриптор выполняемого в данный момент
времени процесса.
       Допустим, что выполнение процедур обращения к диспетчеру начинается с системно-
го прерывания.
       Таким образом, при обращении