Вы находитесь на странице: 1из 22

КУРС “Распределенные

операционные системы”

Глава 9. Планирование Linux,


Unix, W2K. Часть 5.

Aurelia Prepelita,
conf. univ., dr., Catedra TP, USM

Chisinau, 2010
Оглавление:
Глава 9. Планирование Linux, Unix, W2K. Часть 5.

 Планирование Linux
 Планирование UNIX SVR4
 Планирование WINDOWS 2000
 Приоритеты процессов и потоков
 Литература
Планирование Linux
Linux построен на традиционном планировании UNIX с
добавлением двух классов планирования для мягких заданий
реального времени. Таким образом, в Linux имеется три класса
планирования.
• SCHED_FIFO. Потоки реального времени с использованием
планирования по принципу "первым вошел — первым вышел« (с
вытеснением).
• SCHED_RR. Потоки реального времени с использованием
кругового планирования.
• SCHED_OTHER. Прочие потоки, не являющиеся потоками
реального времени.
В пределах каждого класса могут использоваться различные
приоритеты, причем приоритеты классов реального времени
выше приоритетов класса SCHED_OTHER.
Планирование Linux
Для потоков FIFO применимы следующие правила.
1. Система не прерывает выполняющийся поток этого класса за
исключением следующих ситуаций:
а) становится готовым другой поток этого же класса с более высоким
приоритетом;
б) выполнение потока блокируется ожиданием события (например,
выполнения операции ввода-вывода);
в) выполняющийся поток добровольно отдает процессор посредством вызова
примитива sched_yield.
2. При прерывании выполняющегося потока FIFO он помещается в
очередь, предназначенную для его уровня приоритета.
3. Если поток FIFO приходит в состояние готовности к выполнению и
имеет более высокий приоритет, чем выполняющийся, то текущий
поток вытесняется и начинает выполняться готовый поток с высшим
приоритетом. Если таких потоков несколько, выбирается поток,
находившийся в состоянии ожидания дольше других.
Планирование Linux
Стратегия SCHED_RR аналогична стратегии
SCHED_FIFO за исключением добавления
временной квоты, связанной с каждым
потоком. При выполнении потока RR дольше,
чем позволяет его квота, он
приостанавливается, и для выполнения
выбирается поток реального времени с
равным или более высоким приоритетом.
Планирование Linux
На рисунке приведен пример,
иллюстрирующий отличия использования
стратегий FIFO и RR. Предположим, что
программа содержит четыре потока с
относительными приоритетами,
показанными на рисунке. Предположим
также, что все ожидающие потоки готовы к
выполнению, текущий поток завершается или
переходит в состояние ожидания, и что в
процессе его выполнения не появляются
потоки с более высоким приоритетом.
Планирование Linux
Планирование в UNIX SVR4
Алгоритм планирования в UNIX SVR4 представляет собой преобразованный
алгоритм из ранних систем UNIX. Новый алгоритм разработан таким образом,
что дает наивысший приоритет процессам реального времени, приоритет
следующего уровня присваивается процессам ядра, а пользовательские
процессы (известные как процессы с разделением времени) получают низший
приоритет.
В SVR4 реализованы два основных изменения традиционного алгоритма.
1. Добавлено вытесняющее планирование на основе статических приоритетов;
в систему введено множество из 160 уровней приоритетов, разделенных на три
класса.
2. Внесены точки вытеснения. Поскольку базовое ядро не вытесняемо, его
выполнение может быть разделено на небольшие части, выполняемые до
завершения без прерывания. В промежутках между выполнением этих
фрагментов размещены точки вытеснения, в которых ядро может быть
безопас-
но прервано и в которых может начаться выполнение нового процесса. Точка
вытеснения может быть определена как область кода, где все структуры
дaнных ядра либо обновлены и согласованы, либо заблокированы при помощи
семафора.
Планирование в UNIX SVR4

В SVR4 160 уровней приоритетов. Каждый процесс принадлежит одному из


трех классов приоритетов и получает свой уровень приоритета в пределах
данного класса. Вот краткое описание каждого класса приоритетов.
• Реального времени (159-100). Процессы этих уровней приоритета
гарантированно выбираются для выполнения прежде любых процессов
ядра и процессов с разделением времени. Кроме того, процессы реального
времени могут использовать точки вытеснения для прерывания выполнения
процессов ядра и пользовательских процессов.
• Ядра (99—60). Процессы с этими уровнями приоритета гарантированно
выбираются для выполнения прежде всех процессов с разделением
времени, но уступают процессам реального времени.
• Разделения времени (59—0). Процессы с низшим приоритетом,
принадлежащие пользовательским приложениям (кроме приложений
реального времени).
Планирование в UNIX SVR4
Планирование в UNIX SVR4

как реализовано планирование в SVR4. С каждым уровнем приоритета


связана своя очередь, и процессы одного уровня приоритета планируются с
использованием круговой стратегии. Битовый вектор dqactmap содержит по
одному биту для каждого уровня приоритета; этот бит устанавливается,
если соответствующая данному приоритету очередь не пуста. Когда
выполняющийся процесс блокируется или вытесняется, диспетчер
обращается к вектору с^асЬтар и запускает готовый к выполнению процесс
из непустой очереди с наивысшим приоритетом. Кроме того, по достижении
точки вытеснения ядро проверяет состояние флага kprunrun. Если данный
флаг установлен, это означает, что в состоянии готовности имеется как
минимум один процесс реального времени, и в этом случае ядро вытесняет
текущий процесс (если его приоритет ниже, чем у готового к выполнению
процесса реального времени с наивысшим приоритетом).
Планирование в UNIX SVR4

Приоритет процесса в классе разделяемого времени является величиной


переменной. Планировщик снижает приоритет процесса всякий раз при
использовании им очередного кванта времени и повышает — при
блокировке процесса в ожидании некоторого события или ресурса. Квант
времени, выделяемый процессу с разделением времени, зависит от его
приоритета и изменяется от 100 ms для приоритета 0 до 10 ms для
приоритета 59. Для сравнения — каждый процесс реального времени имеет
фиксированный приоритет и фиксированный квант времени.
Планирование WINDOWS 2000

Операционная система WINDOWS 2000 (W2К) разработана таким образом,


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

Приоритеты в W2К организованы в виде двух групп, или классов:


реального времени и переменные. Каждая из этих групп состоит
из 16 уровней приоритета. Потоки, требующие немедленного
внимания, находятся в классе реального времени, который
включает такие функции, как осуществление коммуникаций и
задачи реального времени.
В целом, поскольку W2К использует вытесняющий планировщик
с учетом приоритетов, потоки с приоритетами реального времени
имеют преимущество по отношению к прочим потокам. В
однопроцессорной системе, когда становится готовым к
выполнению поток с приоритетом более высоким, чем у
выполняющегося в настоящий момент, низкоприоритетный поток
вытесняется и начинает выполняться более
высокоприоритетный поток.
Приоритеты потоков Windows NT
Планирование WINDOWS 2000
Приоритеты процессов и потоков
Приоритеты из разных классов обрабатываются несколько по-разному.
В классе приоритетов реального времени все потоки имеют
фиксированный приоритет, который никогда не изменяется, и все
активные потоки с определенным уровнем приоритета располагаются в
круговой очереди данного уровня. В классе переменных приоритетов
поток начинает работу с некоторым изначально присвоенным ему
приоритетом, который затем может измениться, как в большую, так и в
меньшую сторону. Таким образом на каждом уровне приоритета
имеется своя очередь, но процессы могут переходить из одной очереди
в другую в пределах одного класса переменных приоритетов. Поток с
приоритетом 15 не может получить приоритет 16, как и какой-либо другой
приоритет из класса реального времени.
Планирование WINDOWS 2000
Приоритеты процессов и потоков
Начальный приоритет потока в классе переменных приоритетов
определяется двумя величинами:
• - базовым приоритетом процесса
• - базовым приоритетом потока.

Одним из атрибутов процесса является его базовый приоритет,


который может принимать значение от 0 до 15. Каждый объект
Потока, связанный с обьектом процесса, имеет собственный базовый
приоритет потока по отношению к приоритету процесса, и может
отличаться от базового приоритета процесса не более чем на 2 уровня в
большую или меньшую сторону. Так, например, если базовый приоритет
процесса равен 4, а базовый приоритет одного из его потоков равен -1,
то начальный приоритет этого потока равен 3.
После активации потока из класса переменных приоритетов его
действительный приоритет (динамический приоритет потока) может
колебаться но он не может упасть ниже наименьшего базового
приоритета потока и подняться выше максимально возможного
Значения приоритета данного класса, 15.
Планирование WINDOWS 2000
Приоритеты процессов и потоков
Если поток прерывается в связи стем, что он полностью использовал
отпущенный ему квант времени, то его приоритет снижается.
если же поток прерван в связи с ожиданием завершения операции ввода-
вывода, его приоритет повышается. Таким образом, имеется тенденция
повышения приоритетов, ориентированных на ввод-вывод, и снижения
приоритетов, ориентированных на вычисления. В потоках,
ориентированных на ввод-вывод, приоритет потоков, ожидающих
завершения интерактивной операции (например, вывод на экран или
ввод с клавиатуры) повышается больше, чем для других операций
ввода-вывода (например, дисковых). Следовательно, в пределах класса
переменных приоритетов интерактивные потоки стремятся к получению
наивысшего приоритета.
Planificarea WINDOWS 2000

Planificarea proceselor si firelor in


SO WINDOWS 2000
Многопроцессорное планирование
При работе W2К в системе с одним процессором поток с
наивысшим приоритетом всегда активен (если только не
ожидает наступления какого-либо события). Если имеется
несколько потоков с наивысшим приоритетом, то процессор
работает с ними с использованием кругового планирования. В
многопроцессорной системе с N процессорами всегда активны
N-1 потоков с наивысшими приоритетами, работающими на
дополнительных N-1 процессорах. С остальными потоками с
более низким приоритетом работает единственный оставшийся
процессор. Например, если в системе три процессора, то два
потока с наивысшими приоритетами будут выполняться на двух
процессорах, в то время как третий процессор будет работать
со всеми остальными потоками с более низкими приоритетами.
Описанный принцип управляется свидетельством сродства
потока с процессором. Если поток готов к выполнению, но
доступные процессоры не находятся во множестве сродства
потока, такой поток вынужден находиться в состоянии
ожидания, в то время как планировщик запускает другой
доступный поток.
Литература
1. Жданов А.А. Операционные системы реального времени. PCWeek. 1999. 8.
2. Сигаев А. Операционные системы для встраиваемых применений. Компоненты и технологии. 2000. 4.
3. Melanson Ph., Tafazoli S. A Selection Methodology for the RTOS Market, Canadian Space Agency, Space
Technologies Branch, Software and Ground Segment 6767 route de l`Aeropor. St-Hubert, Quebec, Canada. J3Y
8Y9.
4. Kevin M. Obeland, POSIX in Real-Time, Embedded Systems Programming. 2001.
5. The LynxOS 3.0.1 Performance Page (http://www.ro.feri.uni-mb.si/predst/mar-tin/4_
12_2000/301specs.html).
6. Commercial Off-The-Self Real-Time Operating System and Architectural Consideration. Final Report. U.S. Federal
Aviation Administration, DOT/FAA/AR/03/77. February 2004.
7. Partitioning in Avionics. Architecture: Requirements, Mechanics and Assurance. Final Report. National Aeronautics
and Space Administration. DOT/FAA/AR/99/58, NASA/CR/1999/209347. March 2000.
8. Study of Commercial Off-The-Self (COTS) Real-Time Operating System (RTOS) in Aviation Application. Final
Report. U.S. Federal Aviation Administration. DOT/FAA/AR/02/118. December 2002.
9. Evaluation of real-time operating systems -the role of standards. Avionic Systems Standartisation Committee
(ASSC). No: ASSC/330/2/141. March 1997.
10. COTS Security Protection Profile - Operating Systems (CSPP-OS). NISTIR 6985. April 2003.
11. Common Criteria for Information Technology Security Evaluation. Part 3: Security Assurance Requirements.
August 1999. Version 2.1. CCIMB/99/033 (http://csrc.nist.gov/cc/Documents/CC%20v2.1/p3-v21.pdf).
12. Раманатан Р.М. Передовые технологии Intel - от настольных систем к телекоммуникациям
(http://www.intel.com/cd/corporate/europe/emea/rus/update/251102?htm).
13. Embedded Linux on the Move. Dec 30, 2005 (http://www.realworldlinux-biz.com/artman/publish/embeds.shtml).
Литература

Жданов А.А., Операционные системы реального времени, ЗАО "РТСофт", PCWeek, 8/1999
(URL: www.rtsoft.ru)
Сергей Золотарёв, Операционные системы реального времени для 32-разрядных микропроцессоров,
ЗАО "РТСофт", Современная электроника 7/2006

LynxSecure: время операционных систем реального времени в MILS-архитектуре пришло (С.В.


Золотарёв, ЗАО "РТСофт", МКА 4/07) 06.02.2008

Использование QNX Neutrino в системах автоматического управления для ответственных


применений (В. Клепиков, Д. Подхватилин, Г. Шарапов, Н.Захаров, ИТМ ВМ им. С.А. Лебедева
РАН) 28.11.2007

LynxOS – операционная система реального времени в стандарте POSIX (Золотарев С.В., Калядин А.Ю.,
ЗАО "РТСофт") 30.10.2004

Операционные системы реального времени (Жданов А.А., ЗАО "РТСофт", PCWeek, 8/1999) 15.03.1999

Kontron: встраиваемые компьютерные технологии от А до Я (Александр Калядин, ЗАО "РТСофт",


PCWeek, 10/2003) 18.08.2004

Вам также может понравиться