Диспетчер операционной системы

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

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

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

Типы планировщиков в операционных системах[править | править вики-текст]

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

Долговременный планировщик[править | править вики-текст]

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

Среднесрочный планировщик[править | править вики-текст]

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

  • процесс был неактивен некоторое время;
  • процесс имеет низкий приоритет;
  • процесс часто вызывает ошибки страниц (page fault);
  • процесс занимает большое количество основной памяти, а системе требуется свободная память для других целей (например, чтобы удовлетворить запрос выделения памяти для другого процесса).

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

Во многих современных системах, поддерживающих отображение виртуального адресного пространства на вторичную память, отличную от файла подкачки, среднесрочный планировщик может одновременно играть роль и долговременного планировщика, рассматривая новые процессы как процессы, которые были выгружены из основной памяти. Таким образом система может подгружать в основную память программный код только тогда, когда он понадобится процессу для выполнения (это называется загрузкой по требованию или «ленивой загрузкой»).[источник не указан 1523 дня]

Краткосрочный планировщик[править | править вики-текст]

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

Диспетчер[править | править вики-текст]

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

См. также[править | править вики-текст]