Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
переделанное пособие.docx
Скачиваний:
2
Добавлен:
01.09.2019
Размер:
215.74 Кб
Скачать

5.9. Диспетчеризация процессов

Для управления процессами в многозадачной системе необходима их диспетчеризация. Чтобы удовлетворить потребность различных приложений, современные ОС предлагают три метода диспетчеризации: FIFO; карусель; адаптивный.

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

Данные методы диспетчеризации применимы, только когда два или более процесса с одинаковым приоритетом находятся в состоянии READY (т.е. эти процессы непосредственно конкурируют друг с другом). Если процесс с более высоким приоритетом переходит в состояние READY, то он немедленно вытесняет все процессы с более низким приоритетом.

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

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

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

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

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

  1. Если процесс использовал свой квант времени (т.е. он не блокировался), то его приоритет уменьшается на 1. Это получило название снижение приоритета (priority decay). Учтите, что "пониженный" процесс не будет продолжать "снижаться", даже если он использовал еще один квант времени и не блокировался - он снизится только на один уровень ниже своего исходного приоритета.

  2. Если процесс блокируется, то ему возвращается первоначальное значение приоритета.

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

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