Главная » Ядро Linux » Режим реального времени

0

Операционная система Linux  обеспечивает две  стратегии планирования  в режиме реального времени (real-lime): SCHED_FIFO и SCHED_RR. Стратегия планирования SCHED_OTHER является обычной стратегией планирования, т.е.  стратегий планирования  не  в режиме реального времени. Стратегия SCHED_FIFO  обеспечивает простой алгоритм планирования  по  идеологии "первым вошел  — первым  обслужен" (first-in first-out, FIFO) без  квантов времени.  Готовое к выполнению задание со  стратегией планирования SCHED_FIFO  всегда  будет планироваться на  выполнение перед  всеми заданиями со стратегией планирования SCHED_OTHER.  Когда  задание со стратегией

SCHED_FIFO  становится готовым к  выполнению, то оно  будет  продолжать выполняться до тех пор, пока  не  заблокируется или  пока  явно  не  отдаст  управление. Две или  более  задач  с  одинаковым  приоритетом,  имеющие стратегию планирования SCHED_FIFO, будут планироваться на  выполнение по  круговому алгоритму (roundrobin). Если  задание, имеющее стратегию планирования SCHED_FIFO, является готовым  к выполнению, то все  задачи  с более  низким приоритетом не могут  выполняться до тех пор, пока  это  задание не завершится.

Стратегия SCHED_RR аналогична стратегии SCHED_FIFO,  за исключением того, что  процесс может  выполняться только  до  тех пор, пока  не  израсходует  предопределенный ему квант  времени. Таким образом, стратегия SCHED_RR — это  стратегия SCHED_FIFO с квантами времени, т.е. круговой алгоритм планирования (round-robin) реального времени. Когда  истекает квант  времени процесса со  стратегией планирования SCHED_RR, то  другие  процессы с таким  же  приоритетом  планируются по  круговому  алгоритму. Квант времени используется только  для  того, чтобы  перепланировать  выполнение заданий с таким  же  приоритетом. Так  же  как  в случае  стратегии SCHED_FIFO,  процесс с более  высоким приоритетом сразу же вытесняет процессы с более  низким приоритетом, а процесс с более  низким приоритетом никогда не  сможет  вытеснить процесс со стратегией планирования SCHED_RR,  даже  если  у последнего  истек  квант  времени.

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

Стратегии планирования  реального времени в операционной системе Linux  обеспечивают так  называемый мягкий режим  реального времени (soft real-time). Мягкий режим  реального времени обозначает,  что  ядро  пытается планировать выполнение пользовательских программ в границах допустимых временных сроков,  но  не  всегда гарантирует выполнение этой  задачи.   В  противоположность этому  операционные системы с жестким режимом реального времени  (hard  real-time) всегда  гарантируют выполнение всех  требований по  планированию выполнения процессов в заданных пределах. Операционная  система Linux  не  может  гарантировать возможности планирования задач  реального времени. Тем  не  менее  стратегия планирования  ОС  Linux гарантирует, что задачи  реального времени будут выполняться всякий раз, когда  они готовы  к выполнению. Хотя  в ОС  Linux  и  отсутствуют средства,  гарантирующие  работу  в жестком режиме реального времени,  тем  не  менее   производительность планировщика ОС  Linux  в режиме реального времени достаточно хорошая. Ядро  серии

2.6  в состоянии  удовлетворить очень  жестким временным требованиям.

Приоритеты реального времени лежат  в диапазоне от 1 до MAX_RT_PRIO минус  1, По  умолчанию значение константы MAX_RT_PRIO равно  100, поэтому диапазон  значений  приоритетов реального времени по  умолчанию  составляет от  1  до  99.  Это пространство приоритетов объединяется с  пространством  значений  параметра  nice для  стратегии планирования SCHED_OTHER,  которое соответствует диапазону приоритетов  от значения MAX_RT_PRIO до значения  (MAX_RT_PRIO+40). По  умолчанию это  означает, что диапазон значений параметра nice от -20 до +19  взаимно однозначно  отображается в диапазон значений приоритетов от  100 до  139.

Источник: Лав,  Роберт. Разработка ядра  Linux, 2-е  издание. : Пер.  с англ.  — М.  : ООО  «И.Д.  Вильяме» 2006. — 448 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии