планирование в реальном времени в Linux

Сегодня утром я прочитал о планировании Linux в реальном времени. Согласно книге Роберта Лава «Системное программирование Linux», есть два основных расписания. Один - SCHED_FIFO, fifo, второй - SCHED_RR, циклический. И я понял, как работает алгоритм fifo и rr. Но поскольку у нас есть системный вызов

sched_setscheduler (pid_t pid, int policy, const struct sched_parem *sp)

, мы можем явно установить политику планирования для нашего процесса. Таким образом, в некоторых случаях два процесса, запущенные от имени root, могут иметь разную политику планирования. Один процесс имеет SCHED_FIFO, а другой - SCHED_RR и имеет одинаковый приоритет. В таком случае, какой процесс будет выбран первым? процесс класса FIFO или процесс класса RR? Почему?

Рассмотрим этот случай. Есть три процесса A, B, C. У всех одинаковый приоритет. A и B - это процессы класса RR, а C - процессы класса FIFO. A и B запускаются (так что оба работают поочередно через некоторый промежуток времени). И в настоящее время A работает. Теперь C становится работоспособным. В этом случае,

1. A will preempt for C, or
2. A will run until its timeslice goes zero and let C run. Or
3. A will run until its timeslice goes zero and let B run.
   a) here after B runs till its timeslice becomes zero and let C run or
   b) after B runs till its timeslice becomes zero and let A run again (then C will starve untill A and B finishes)
21
задан jacknad 19 December 2016 в 20:51
поделиться