Другие использования приостановки
До сих пор концепция временной остановки процесса ассоциировалась у нас с его отсутствием в основной памяти. Процесс, который отсутствует в основной памяти, не может быть запущен немедленно, независимо от того, ожидает ли он какого-то события или нет.
Однако концепцию приостановленного процесса можно обобщить. Определим приостановленный процесс как такой, который удовлетворяет следующим критериям.
1. Этот процесс не может быть запущен в данный момент.
2. Этот процесс может как ожидать какого-то события, так и не находиться в состоянии ожидания. Если он находится в состоянии ожидания, то блокирующее событие не связано с условием приостановки, а наступление события не означает, что процесс может быть выполнен.
3. Процесс приостанавливается самостоятельно, операционной системой или родительским процессом.
4. Процесс не может выйти из состояния приостановленного до тех пор, пока не будет явно выведен из этого состояния приостановившим его агентом.
В табл. 3.3 перечислены некоторые причины, по которым процессы могут быть приостановлены. Одной из ранее обсуждавшихся причин является необходимость выгрузить процесс на диск, чтобы вместо него можно было загрузить готовый к выполнению процесс или просто ослабить нагрузку на виртуальную память, предоставив каждому из оставшихся процессов дополнительную порцию основной памяти.
Могут быть и другие причины для того, чтобы приостановить процесс. Рассмотрим, например, процесс, который используется для наблюдения за работой системы. Этот процесс может использоваться для фиксирования интенсивности использования различных ресурсов (процессора, памяти, каналов) и скорости выполнения в системе пользовательских процессов. Если такой процесс выявит проблему (например, состояние взаимоблокировки, о котором рассказывается в главе 6, "Взаимоблокировка и голодание"), он может приостановить процесс. Другим примером служат неполадки в линии связи. В данной ситуации оператор может отдать операционной системе команду приостановить процесс, использующий эту линию, чтобы выполнить необходимые тесты и исправить ситуацию.
Таблица 3.3. Причины, по которым процессы переходят в состояние приостановленных
Свопинг | Операционной системе нужно освободить пространство в основной памяти, чтобы загрузить готовый к выполнению процесс |
Другие причины, появляющиеся у операционной системы | Операционная система может приостановить фоновый или служебный процесс, а также подозрительный процесс, послуживший вероятной причиной возникновения ошибок |
Запрос интерактивного пользователя | Пользователь может захотеть приостановить процесс, чтобы приступить к отладке программы, или в связи с использованием некоторого ресурса |
Временной режим выполнения | Процесс может выполняться периодически (например, программа для учета использования ресурсов или работы системы); в промежутках между выполнением такой процесс может приостанавливаться |
Запрос родительского процесса | Родительскому процессу может понадобиться возможность при останавливать выполнение дочерних процессов для их проверки или модификации, а также для координации работы нескольких дочерних процессов |
Другие причины временной остановки процессов связаны с действиями интерактивного пользователя. Например, если пользователь заподозрил, что в программе есть дефект, он может приступить к отладке программы, приостановив ее выполнение. При этом пользователь может тестировать и модифицировать программу или данные, а затем возобновить ее выполнение. Другим примером является фоновый процесс, собирающий информацию о системе. Не исключено, что пользователь захочет иметь возможность включать и выключать этот процесс.
Рассмотрение временного графика работы также может привести к решению о целесообразности свопинга. Например, процесс, который должен периодически активизироваться с большим интервалом времени между активизациями и долго простаивает, имеет смысл выгружать из основной памяти на то время, в течение которого он не используется. Примером такого процесса может быть программа, ведущая учет использования ресурсов или активности пользователей.
Наконец, родительский процесс может захотеть приостановить процесс, который он породил. Например, пусть процесс А породил процесс В, чтобы прочитать файл. Впоследствии при выполнении процесса В возникла ошибка чтения, и он сообщил об этом процессу А. Процесс А приостанавливает процесс В и пытается выяснить и устранить причину ошибки. Во всех описанных выше случаях активизация приостановленного процесса происходит по запросу того агента, который перед этим вызвал временную остановку.
3.2. ОПИСАНИЕ ПРОЦЕССОВ
Операционная система управляет событиями, которые происходят в компьютерной системе. Она планирует и координирует выполнение процессов, выделяет им ресурсы и предоставляет по запросу системных и пользовательских программ основные сервисы. Мы можем представить себе операционную систему как некий механизм, управляющий тем, как процессы используют системные ресурсы.
Эта концепция проиллюстрирована на рис. 3.7. Пусть в многозадачной среде имеется несколько процессов (P1, . . ., Рn), которые уже созданы и загружены в
виртуальную память. Каждому процессу для его функционирования нужен доступ к определенным системным ресурсам, в число которых входят процессор, устройства ввода-вывода и основная память. В ситуации, изображенной на рисунке, процесс pi находится в состоянии выполнения, т.е. в основной памяти находится по крайней мере часть этого процесса. Кроме того, он осуществляет управление двумя устройствами ввода-вывода. Процесс Р2 тоже находится в основной памяти, но он блокирован, ожидая, пока освободится устройство ввода-вывода, находящееся в распоряжении процесса Р1. Процесс Рn выгружен из основной памяти и, соответственно, приостановлен.
Далее в этой главе мы подробно рассмотрим, как выглядит управление ресурсами со стороны операционной системы с точки зрения процессов. А пока что зададим себе более фундаментальный вопрос: какая информация нужна операционной системе, чтобы управлять процессами и выделяемыми для них ресурсами?
Дата добавления: 2016-06-05; просмотров: 2327;