Самым непосредственным недостатком запуска процесса в реальном времени является то, что этот процесс может легко заморозить любой другой процесс в системе. Результатом, с вашей точки зрения, будет то, что компьютер полностью не реагирует на клавиатуру, мышь и, возможно, сеть, пока процесс реального времени использует процессор. Это может произойти, если что-то пойдет не так, и процесс перейдет в бесконечный цикл, или даже временно, если процесс начнет длительные вычисления без периодического ожидания ввода. (Так, например, не запускайте SETI @ home с приоритетом в реальном времени.)
Одиночный однопоточный процесс на многоядерном процессоре с меньшей вероятностью вызовет эту проблему, поскольку существуют другие ядра, которые может использовать процесс с более низким приоритетом. Но если этот процесс создает какие-либо дочерние процессы, они наследуют один и тот же приоритет в реальном времени, поэтому все может выйти из-под контроля, если вы не будете осторожны.
У sched_setscheduler(2)
man-страницы есть хороший совет:
Поскольку неблокирующий бесконечный цикл в процессе, запланированном в SCHED_FIFO или SCHED_RR, навсегда заблокирует все процессы с более низким приоритетом, разработчик программного обеспечения всегда должен держать на консоли доступную оболочку, запланированную с более высоким статическим приоритетом, чем у тестируемого приложения. Это позволит выполнить аварийное уничтожение протестированных приложений реального времени, которые не блокируются или не завершаются, как ожидалось. Смотрите также описание ограничения ресурса RLIMIT_RTTIME в getrlimit (2).
Это должна быть оболочка на консоли - не под Xterm, если только вы не хотите отдавать приоритет всему X в реальном времени.