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

2.3 Планирование

Планировщик (scheduler) — это компонент ядра, который выбирает из всех процессов системы тот, который должен выполняться следующим. Таким образом, планировщик (или, как еще его называют, планировщик выполнения процессов) можно рассматривать как программный код, распределяющий конечные ресурсы процессорного времени между теми процессами операционной системы, которые могут выполняться. Планировщик является основой многозадачных (multitasking) операционных систем, таких как ОС Linux. Принимая решение о том, какой процесс должен выполняться следующим, планировщик несет ответственность за наилучшее использование ресурсов системы и создает впечатление того, что несколько процессов выполняются одновременно. Эффективное использование процессора (процессорного времени) – всегда выполняется какой-нибудь процесс. Планировщик планирует работоспособные процессы (runnable). Неработоспособные процессы блокируются ядром до наступления нужного им события, становясь работоспособными.

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

ВИДЫ МНОГОЗАДАЧНЫХ ОС

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

В системах с кооперативной многозадачностью процесс продолжает выполняться до тех пор, пока он добровольно не примет решение о прекращении выполнения. Событие, связанное с произвольным замораживанием выполняющегося процесса, называется передачей управления. У такого подхода очень много недостатков: планировщик не может принимать глобальные решения относительно того, сколько процессы должны выполняться; процесс может монополизировать процессор на большее время, чем это необходимо пользователю; "зависший" процесс, который никогда не передает управление системе, потенциально может привести к неработоспособности системы. Наиболее известным исключением является операционная система Mac OS версии 9 и более ранних версий.

ВИДЫ ПРОЦЕССОВ

• Ограниченные вводом/выводом (I/Obound) – большую часть времени работают с вводом- выводом – как правило, могут выполняться в течение короткого периода • Желательно планировать часто • Примеры: приложения по работе с системами хранения, клавиатурой и т. п.

• Ограниченные процессором (processor-bound) – большую часть времени исполняют программный код – как правило, выполняются до вытеснения • Желательно планировать реже • Пример: вычисления, не требующие частых операций ввода/вывода

• Классификация условна • Сервер X Window – имеет частые операции ввода/вывода, но и сильно нагружает процессор • Vim – имеет редкие операции ввода/вывода – периодически нагружает процессор для автоматизации и поддержки синтаксиса.

ПРОБЛЕМЫ ПЛАНИРОВАНИЯ

• Нужно одновременно обеспечивать: – малую задержку (low latency) процессов — часто переключать процессы – высокую производительность (throughput) — позволять процессам работать дольше • В Linux процессы, ограниченные вводом/выводом имеют больший приоритет

ПРИОРИТЕТ ПРОЦЕССА

• Одни из алгоритмов планирования: – с управлением по приоритетам (priority-based) – c динамическим управлением по приоритетам (dynamic priority-based) — в Linux • Процессы с более высоким приоритетом: – выполняются раньше остальных – между собой планируются циклически (round-robin) – получают более длительный квант времени – вытесняют процессы, с меньшим приоритетом • Можно менять значение приоритета процесса

ВЫБОР КВАНТА ВРЕМЕНИ

• Больший квант времени — меньшая интерактивность приложения • Меньший квант времени — частое переключение процессов — увеличение накладных расходов • Процессам, ограниченным вводом/выводом, — не требуется продолжительный квант времени • Процессам, ограниченным процессором, — точно требуется продолжительный квант времени

• Квант (timeslice, quantum, processor slice) • Минимум — 5 мс (меньший приоритет или меньшая интерактивность) • По умолчанию — 100 мс • Максимум — 800 мс (больший приоритет или большая интерактивность) • Кванты времени определяются динамически от приоритета • Квант может расходоваться не за раз, а по частям — гарантия выполнения интерактивных задач в течение долгого времени • Пример: обозреватель и проигрыватель.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]