От шедулера к планировщику



См. две другие статьи этой группы — Делаем многозадачность и Преемптивность: как отнять процессор.



Сразу просьба к строгим читателям. Если вы не поняли какой-либо термин из применённых — спросите, я подскажу, что я имел в виду. А если вам нравится другое написание или перевод этого термина — укажите его в комментарии. Я применяю те, которые нравятся мне.



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



Как я уже говорил, шедулер — это просто функция, которая отвечает на вопрос: какую нить и на сколько времени поставить на процессор.



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



Говоря о шедулере нельзя не сказать о приоритетах.



Приоритет — свойство нити (или процесса) влияющее на конкуренцию этой нити с другими нитями за процессор.



Приоритет обычно описывается парой <класс приоритета, значение приоритета внутри класса>.



Подробнее: https://habrahabr.ru/post/282213/