Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы построения операционных систем.doc
Скачиваний:
50
Добавлен:
07.11.2018
Размер:
5.07 Mб
Скачать

4.1.4. Планирование процессов

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

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

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

Рис. 4.3. Двухуровневая система планирования

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

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

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

Рис. 4.4. Трехуровневая система планирования

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

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

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