Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
os3.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
683.52 Кб
Скачать

3.3.3. Дескрипторы процессов

Для управления процессами ЯДРО создает специальную структуру данных, описывающую процесс.

Эта структура данных обычно называется управляющим блоком или дескриптором.

Дескриптор является представителем процесса в ядре и содержит всю информацию, необходимую для управления процессом. Конкретная реализация дескриптора зависит от реализации ядра.

Например, мы в лабораторных работах создаем процессы, дескрипторы которых могут иметь следующее описание:

Type

Process = ^Descriptor;

Descriptor = Object

ssreg : Word;

spreg : Word;

StackAddr : Pointer;

StackSize : Word;

Priority : Word;

Next : Process;

Queue : Process;

Constructor Init(...);

Destructor Done; Virtual;

End {Descriptor};

Var

P : Process;

Begin

P := New(Process, Init(...));

...

Dispose(P, Done);

End.

P - Глобальная переменная среды, через которую осуществляется доступ к процессу для управления им.

Пример 2. Сегмент состояния задачи в защищенном режиме - TSS, структуру которого мы рассматривали раньше, является дескриптором, или может служить частью его, определенной архитектурой процессора.

Пример 3. Структура типа jmp_buf в СИ, которую мы тоже рассматривали раньше - это тоже дескриптор.

Вопрос (

В общем случае дескриптор процесса содержит следующие данные:

  1. имя - уникальный идентификатор;

  2. состояние виртуальной и реальной машины: 1. процессор (регистры, флаги); 2. память; 3. списки созданных ресурсов.

  3. состояние: 1. активный; 2. готовый; 3. блокированный.

  4. родственные связи: 1. родитель; 2. потомки.

  5. данные для планирования: 1. приоритет; 2. указатели на следующий и предыдущий в очереди; 3. указатель на очередь, в которой находится.

)Вопрос

Важно, что структура дескриптора определяется разработчиком ядра, при этом содержание дескриптора усложняется с усложнением алгоритмов функционирования ядра.

3.3.4. Очереди процессов в ядре

Раз процессов в ядре много, а процессор один, то необходимо некоторое средство упорядочения процессов. В качестве такого средства упорядочения в ядре выступает очередь.

Очередь процессов в ядре - это фактически очередь дескрипторов процессов.

Из программирования известны списковые структуры данных. На этих структурах и основаны очереди процессов.

Три варианта построения очереди можно предложить.

  1. Классический вариант, когда в структуру дескриптора включено поле - указатель на следующий процесс:

  1. Более универсальный вариант

  1. Коллекции - объект, который совмещает в себе достоинства списковой структуры - динамическое изменение размеров и массива - индексный доступ.

Объект - отсортированные коллекции позволяет учитывать приоритеты процессов.

Список - как объект может иметь следующее минимальное описание:

Type

PList = ^TList;

TList = Object

First : Process;

Constructor Init;

Destructor Done; Virtual;

Procedure Insert(P : Process);

Procedure Remove(P : Process);

End {TList};

Здесь перечислен минимальный набор методов объекта “список”. При необходимости это набор легко может быть расширен.

Списки процессов используются для организации планирования загрузки процессора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]