Ю. Вахалия - UNIX изнутри (2003) (1114670), страница 54
Текст из файла (страница 54)
Другие реализации планирования 229 В идеальном случае цланировшик стреми~ся выполнять высокоприоритетные готовые к выполнению нити на всех доступных процессорах. Такая политика требует от планировшика поддержания глобального набора очередей выполнения, разделяемого всеми процессорами. Это может стать причиной эффекта «бутылочного горлыгцка», когда все процессоры будут стремиться получить монопольный доступ (то есть блокировать доступ другим) к этим очередям. Более того, когда нить начинает свое выполнение, каши процессора заполняются ее данными и инструкциями. И если на короткий промежуток времени эта нить будет вытеснена и затем снова назначена на выполнение, то по возможности она должна продолжаться на том же процессоре, так как при этом она получит определенный выигрыш из-за наличия в кэшах процессора ранее размешенных данных и инструкций.
Для согласования вышеуказанных моментов в системе Р!В1га! 1)Х!Х для нитей режима разделения времени используется политика мягкого сродства (зогГ а11!п1гу). Такие нити хранятся в локальных очередях выполнения процессора, следовательно, они вновь назначаются на выполнение на том же самом процессоре, что и раньше. Это также сокрашает борьбу за очереди выполнения. Планировшик следит за очередями для каждого процессора и предотвращает возможный дисбаланс путем перемешения нитей из очереди более загруженного процессора в очередь менее занятого.
Нити с фиксированными приоритетами назначаются на выполнение из глобальной очереди, потому что они должны начать свое выполнение как можно быстрее. 1'1о возможности ядро отправляет их на тот же самый процессор, который использовался ими в предыдуший раз. В завершение следует также отметить, что, система Р1я1га! 1)Х1Х обеспечивает вызов Ыпд 1о сра, который принуждает нить к выполнению ~ольке на определенном процессоре. Эта возможность полезна для кода, функционирование которого на более чем одном процессоре небезопасно. Планировшик системы Р1яйа! 1)Х1Х предоставляет совместимый с РОЯХ интерфейс планирования реального времени.
Однако он не обладает многими возможностями, имеющимися в Мас!1 и БЧК4. Он также не обеспечивает интерфейс для выделения наборов процессоров или механизм «ручного» планирования. Ядро Р!я!та! 1)Х1Х является невытесняюшим и не имеет никаких средств для контроля за инверсией приоритетов. 5.9. Другие реализации планирования Реализация алгоритмов планирования системы зависит, главным образом, от требований приложений, которые будут работать в данной ОС. В некоторых системах работают критичные ко времени программы и приложения реального времени, в других — крупные, работающие в режиме разделения времени приложения, в третьих — и те и другие.
В иных системах выполняется 230 Глава 5. Планирование процессов огромное количество процессов, для которых существующие методики планирования не соответствуют требованиям по масштабированию. Такое положение дел побудило к созданию ряда планировщиков, которые частично были реализованы в различных вариантах НйцХ. Их описанию и посвящен этот раздел книги.
5.9.1. Планирование справедливого разделения Планировщик справедливого разделения (1а|г-зйаге) предоставляет фиксированный объем разделяемых ресурсов процессора каждой разделяющей группе процессов. Такие группы могут состоять из единичного процесса, всех процессов одного пользователя, всех процессов сеанса входа в систему и т. д.
Выбор распределения процессорного времени между разделяющими группами доступен только суперпользователю системы. Ядро отслеживает использование процессора для выбора схемы его распределения. Если одна из групп не использовала выделенную ей часть ресурсов, то их оставшаяся часть обычно делится между остальными группами пропорционально изначально предоставленным им ресурсам.
Такой подход дает каждой разделяющей группе прогнозируемый объем процессорного времени, который не зависит от общей загруженности системы. Это особенно полезно в средах, где время вычисления является строго расписанным ресурсом, поскольку ресурсы могут выделяться пользователям фиксированными объемами. Это также пригодно для гарантии предоставления необходимых ресурсов критичным к ним приложениям в системах разделения времени. Одна из реализаций планировщика равного разделения описана в ~71. 5.9.2. Планирование по крайнему сроку Многие приложения реального времени должны отвечать на события в течение определенного ограниченного периода. Например, мультимедийный сервер может передавать видеокадры клиенту каждые 33 миллисекунд. Если сервер читает данные с диска, то он может установить крайний срок завершения операции чтения.
Если в течение этого времени операция не успеет завершиться, кэдр будет задержан. Механизм назначения крайних сроков также применим для запросов на ввод-вывод или вычислений. В последнем случае нить может запросить выделения определенного объема процессорного времени, которое должно быть ей предоставлено до окончания установленного крайнего срока. Производительность описываемых видов приложений повысится при использовании технологии планирования па крайнему сроку.
Основным принципом этого метода является динамическое изменение приоритетов, увеличение которых происходит при приближении к конечному сроку. Примером реализации подобного алгоритма является планировщик Ееггапг|чОг1й1пасед 5.9. Другие реализации планирования 231 Кеа!-Т1ше Ехсепгйопз со 1)й1!Х (ГОКТУЫ1Х), описанный в 13).
Его алгоритм определяет четыре уровня приоритетов; + Жесткие приоритеты реального времени для крайних сроков, которые всегда должны быть соблюдены при удовлетворении чего-либо. + Мягкие приоритеты реального времени, при которых требования удовлетворить что-либо до наступления крайнего срока должны реализовываться с наибольшей вероятностью, однако при этом случаи неукладывания в граничные сроки возможны. + Приоритеты разделения времени без определенных конечных сроков, но с требованием, чтобы были установленны разумные пределы времени реакции. + Приоритеты пакетных заданий, для которых крайние сроки выражаются в часах (а не в миллисекундах).
Система осуществляет планирование процессов в соответствии с их уровнями приоритетов. Например, процесс реального времени с мягким приоритетом будет выполнен только в случае отсутствия готовых к выполнению процессов с жесткими приоритетами. Процессы классов 1, 2 и 4 выполняются в соответствии с их крайними сроками: процесс, обладающий наименьшим оставшимся временем, будет назначен на выполнение первым. Процессы перечисленных выше классов будут выполняться до тех пор, пока они не завершатся или не будут блокированы, если только не появится готовый к выполнению процесс из более старшего класса или того же класса, но с меньшим временем, оставшимся до достижения крайнего срока. Процессы режима разделения времени планируются на выполнение в традиционной манере П~ПХ на основе их приоритетов, зависящих от фактора любезности и использования процессора.
Планирование по крайнему сроку подходит для систем, в которых работают процессы с известными заранее требованиями по времени реакции. Подобная схема приоритетов применима для планирования запросов ввода-вывода к диску и т. д. 5.9.3. Трехуровневый планировщик Планировщики 1)й11Х не способны гарантированно обеспечить соблюдение требований приложений реального времени, но в то же время позволяют осуществлять произвольную смешанную рабочую нагрузку. Основной причиной недостатков является отсутствие управления доступом (ас)щ1зз)оп сопгго1).
Не существует ограничений иа количество или типы приложений реального времени и задач общего назначения, запускаемых в системе. Система позволяет всем процессам состязаться за ресурсы, не контролируя этот процесс. Забота о том, чтобы в системе не возникало перегрузок, лежит фактически на ее пользователях. 232 Глава 5. Планирование процессов В работе [141 описывается трехуровневый планировщик, применяющийся в системах реального времени для мультипротокольных файлов и медиа-серверов. Планировщик поддерживает три класса служб; изохронный, реального времени и общего применения. Изохронный класс подразумевает периодические действия, такие как передача видеокадров, через определенные интервалы с минимальным дромспнием изображения, или колебаниями. Класс реального времени требуется для апериодических задач, нуждающихся в ограниченной задержке обслуживания планировщиком.