Посмотрите на этот вопрос . «Реальное время» (для процесса) относится к алгоритму планирования или мышлению, которое делает ядро, когда решает, какой процесс запустить. Процесс реального времени будет выгружать всех других процессов (с меньшим весом планирования), когда получено прерывание, и оно должно быть запущено.
Программа, которая просто принимает пользовательский ввод, перейдет в спящий режим (блок) во время ожидания ввода или даже между нажатиями клавиш (в зависимости от ситуации). Такая программа не должна иметь такой высокий приоритет планирования. Для процессов RT необходимо , чтобы они опережали все остальные процессы в системе. Это может быть связано с тем, что процесс имеет решающее значение для достижения какой-то важной цели, или необходимы высокопроизводительные таймеры (в этом случае вам понадобится ОС реального времени, стандартным Linux которой является , а не ).
В любом случае, для обзора различий между SCHED_FIFO и SCHED_RR см. Вопрос, который я связал. Решение, которое вы должны принять, если созерцаете одно поверх другого, не , если программа должна работать как RT, это фундаментальное инженерное решение. Выбор между ними зависит только от того, как вы хотите, чтобы ваш процесс сотрудничал с другими.
Если бы я использовал стандартное ядро для управления лифтом, процесс, который обслуживал аппаратные прерывания от микровыключателей, вероятно, использовал бы SCHED_FIFO с весом RT. Опять же, я бы, наверное, не использовал стандартный Linux для этого.
Если бы я писал почтовый клиент, я использовал бы стандартный планировщик и позволил бы пользователю nice
запускать свои программы по своему усмотрению.