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

3.3 Координирование действий машины

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

3.3.1Понятие процесса

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

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

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

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

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

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

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

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

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

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