Главная » Ядро Linux » Передача процессорного времени

0

Операционная система  Linux  предоставляет системный  вызов  sched_yiel d () как  механизм,  благодаря которому процесс может  явно  передать  процессор под управление другим  ожидающим процессам.  Этот  вызов  работает  путем  удаления процесса из активного массива приоритетов (где он  в данный момент  находится, потому  что процесс выполняется) с последующим помещением этого  процесса в истекший массив.      Получаемый аффект состоит не только в том, что процесс вытесняется и становшея последним в списке заданий с соответствующим приоритетом, а также  в том, что помещение процесса в истекший массив  гарантирует, что этот процесс не будет выполняться некоторое время.  Так как задачи  реального времени никогда не могут быть  помещены в истекший массив, они  составляют специальный случай.  Поэтому они  только  перемещаются в конец списка заданий с таким  же значением приоритета (и не помещаются в истекший массив). В более ранних  версиях

Глава 4

ОС.  Linux  семантика вызова  sched_yiel d ()   была  несколько иной. В лучшем  случае задание только  лишь  перемещалось в конец списка заданий с данным приоритетом. Сегодня  для  пользовательских  программ  и  даже  для  потоков  пространства  ядра должна  быть  полная  уверенность в  том,  что  действительно  необходимо  отказаться от  использования процессора,  перед  тем  как  ввязывать функцию  sched_yiel d () .

В коде  ядра, для  удобства,  можно   вызывать функцию  yiel d () ,  которая проверяет, что  состояние задачи  равно  TASK_RUNNING, а после  этого  вызывает функцию sched_yiel d () .  Пользовательские  программы должны  использовать системный  вызов  sched_yiel d () .

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

По теме:

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