Управление процессами

Задачи, связанные с координацией процессов, выполняются планировщиком и диспетчером, которые входят в ядро операционной системы. Планировщик ведет учет процессов, которые протекают в данный момент, записывает новые и удаляет уже законченные. Для того чтобы следить за всеми процессами, планировщик помещает информацию о них в область оперативной памяти, которая называется таблицей процессов (process table). Каждый раз, когда машине назначается задача, планировщик создает для нее процесс, помещая новые данные в таблицу. Эти данные содержат информацию об области памяти, приписанной процессу (эта информация получена от программы распределения памяти), о приоритете процесса и о том, находится ли он в состоянии готовности или ожидания. Процесс находится в состоянии готовности (ready), если его выполнение можно продолжить, а в состоянии ожидания (waiting) — когда выполнение приостановлено до появления какого-либо внешнего события, такого как получение доступа к диску или получение сообщения от другого процесса.

Диспетчер — компонент ядра операционной системы, который управляет выполнением запланированных процессов. В системах с разделением времени эта задача осуществляет разделение времени на короткие интервалы, которые называются квантами (не более 50 миллисекунд), и переключение центрального процессора с одного процесса на другой, поскольку длительность непрерывного выполнения одного процесса не может превышать одного кванта (рис. 3.6). Процедура смены процессов называется переключением процессов (process switch).

Каждый раз, когда начинается квант времени процесса, диспетчер запускает таймер, который измеряет, сколько времени прошло от начала кванта. Когда время, отведенное данному процессу, заканчивается, таймер генерирует сигнал, который называется сигналом прерывания (interrupt). Центральный процессор реагирует на этот сигнал почти так же, как реагируете вы, когда вас отрывают от какого-либо дела. Вы останавливаетесь, записываете, на каком этапе выполнения задачи вы находитесь. Когда центральный процессор получает сигнал прерывания, он завершает выполнение текущего машинного цикла, сохраняет позицию в текущем процессе и начинает выполнение программы, которая называется обработчиком прерывания (interrupt handler) и хранится в определенной области оперативной памяти.

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

Главным достоинством систем с разделением времени является возможность остановить, а затем возобновить процесс. Если вас прерывают во время чтения книги, то ваша способность продолжить чтение позже зависит от того, можете ли вы запомнить место в книге, а также от информации, которую вы накопили до этого. Короче говоря, вы должны уметь мысленно воссоздать условия, в которых вы находились непосредственно перед тем, как вас прервали. В случае процессов, которые необходимо воссоздать, эти условия являются состоянием процесса, который включает в себя значение счетчика команд, содержание регистров и соответствующих ячеек памяти. В машинах с разделением времени сохранение этой информации является частью реакции центрального процессора на сигнал прерывания. Такие машины обычно содержат команды машинного языка для перезагрузки заранее сохраненного состояния. Эти возможности машины упрощают обязанности диспетчера во время переключения процессов и являются примером того, как нужды операционной системы оказывают влияние на строение современных машин.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: