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

3.3. Организация ядра ос

3.3.1. Ядро как средство организации виртуальной машины

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

Существует множество определений ЯДРА и в принципе может идти речь об уровнях рассмотрения этого понятия. На самом высоком уровне Ядро - это средство предоставления реального физического процессора многим процессам. Само понятие ПРОЦЕСС эквивалентно понятию виртуального процессора, т.к. механизм переназначения процессора изолируется ядром от пользователя.

Т.е. речь здесь идет об организации для каждого пользователя некоторой виртуальной машины, идентичной по своему интерфейсу физической машине.

Ядро - это средство организации виртуальных машин. Каждому процессу предоставляется виртуальная машина с таким же интерфейсом, как если бы на машине выполнялся один единственный процесс.

Но, строго говоря, эквивалентность физической машины и виртуальной машины может быть реализована лишь приблизительно. С этой точки зрения у виртуальных машин есть следующие особенности:

  1. Увеличение числа виртуальных машин, реализованных на одной физической машине, ухудшает их качество;

  2. Интерфейс виртуальной машины чаще всего является частью интерфейса физической машины, из которого исключен прямой доступ к периферийным устройствам.

Схематично систему виртуальных машин, реализованную на одной физической машине, можно представить следующим образом:

Каждый процесс выполняется так, как будто процессор, память, средства ввода/вывода и файловая система предоставлены только ему одному, хотя на самом деле это не так.

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

Ядро организует и координирует предоставление ресурсов различным процессам. Самый первый из совместно используемых ресурсов - это процессор. Детальный анализ взаимодействия процесса и процессора приводит к появлению понятия СОСТОЯНИЕ ПРОЦЕССА. Рассмотрим это понятие более подробно.

3.3.2. Состояния процесса и структура ядра

Раз процессор один, а процессов несколько, то реально может выполняться только один процесс в каждый момент времени, а другие процессы приостановлены.

Про выполняющийся процесс говорят, что он находится в активном состоянии.

Про приостановленные процессы говорят, что они находятся в состоянии ожидания или блокированы. Такому описанию соответствует граф состояний процесса:

Ядро переводит процессы из одного состояния в другое.

Рассмотрим подробнее причины блокирования процессов. Их два класса:

  1. Техническая;

  1. Логическая.

Техническая причина состоит в том, что процессор один, а процессов много;

Логические причины.

Логические причины связаны с ожиданием различных событий, связанных с освобождением тех или иных ресурсов, требуемых процессу (кроме процессора).

Процессы, приостановленные по первой причине, которые могли бы выполняться, но не выполняются только из-за отсутствия процессора, называются готовыми.

Блокированными, строго говоря, называются процессы, приостановленные по второй логической причине.

Т.е. схема состояний процесса уточняется следующим образом:

Если процессов много, готовых или блокированных, то необходимо некоторое средство, которое бы их как-то упорядочивало. В качестве такого средства выступает ОЧЕРЕДЬ процессов.

Из готовых процессов создается очередь готовых процессов.

С блокированными процессами дело обстоит сложнее. Из них создается столько очередей, сколько имеется причин блокировки. На каждую причину создается своя очередь.

После проведенных рассуждений станет понятной следующая структура ядра - ядро - это набор очередей процессов и средств перевода процессов из одних очередей в другие и в активное состояние:

Средства ядра делятся на два вида:

  1. Д - диспетчер - это обработчик прерываний от таймера, который переводит активный процесс в очередь готовых, а из очереди готовых выбирает новый активный процесс;

  1. П - планировщик - это набор процедур ядра, которые вызываются активным процессом. Вызовом такой процедуры активный процесс или блокируется сам, переводя себя в одну из очередей блокированных процессов, или переводит другие процессы из одних очередей в другие, чаще всего - это переводы из очереди блокированных в очередь готовых. Процесс блокирует себя, если ему нужен ресурс, который в данный момент занят, а если освобождает ресурс, то разблокирует кого-то другого, ждущего этот ресурс.

Вызов процедуры планировщика - это вызов супервизора (процедуры ОС) по нашей классификации способов переключения контекста.

Вызов процедуры планировщика в ядре рассматривается как событие. Такая процедура, как правило, завершается пересмотром очередей ожидания и выбором нового активного процесса.

Поэтому в ядре многозадачной среды может существовать два способа переключения задач:

  1. По времени - с помощью диспетчера;

  1. По событию - с помощью планировщика.

Г рафически это может быть представлено следующим образом:

Использовать только первый способ переключения задач нерационально, т.к. некоторые процессы находятся в очередях блокированных процессов, а диспетчер имеет дело только с очередью готовых процессов.

Использовать только второй способ также нерационально, т.к. если процесс не вызывает процедуру планировщика, то очереди не будут пересмотрены и окажется возможным длительный захват процессора одним процессом.

Деление средств ядра на «планировщик» и «диспетчер» можно обобщить и говорить об уровнях планирования загрузки процессора, которые мы рассмотрим после знакомства с понятием ДЕСКРИПТОР ПРОЦЕССА и ОЧЕРЕДИ ПРОЦЕССОВ.

Соседние файлы в предмете Операционные системы