Передача процесорного часу

Операційна система 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 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*