На компьютере с GNU/Linux, если вы хотите выполнять задачи реального времени (субмиллисекундные критически важные) задачи, вам почти всегда приходится проходить длительный, сложный и проблемный процесс исправления ядра, чтобы выявить адекватные поддержка [1][2].Каковы наилучшие способы приблизиться к задачам реального времени в ОС или ядре без реального времени?
Самая большая проблема заключается в том, что многие системы, в которых задачи в реальном времени наиболее полезны, не имеют основополагающих требований к оборудованию даже для того, чтобы эти исправления работали, а именно периферийное устройство с высоким разрешением. Или, если они это сделают, это специфично для аппаратного обеспечения, так что такие требования должны быть специально реализованы в патче в каждом конкретном случае. Это справедливо даже в том случае, если тактовая частота CPU/команды более чем достаточно высокая, чтобы обеспечить требуемую временную детализацию, а затем некоторые.
Итак, мой вопрос в том, что является лучшим из вторым местом способами/тегами, чтобы пройти как можно ближе к вышеуказанной цели в реальном времени? Вещи, которые можно просто сделать в исходном коде приложений, без глубокого знания базового оборудования или слишком много «взлома ядра».
Приоритет приоритета процесса, запуск дополнительной нити для «критических» задач и (в C) с использованием вариантов nanosleep() - наилучшие ответы/трюки, которые я придумал до сих пор. Надеюсь найти больше.
Спасибо, это полезно, фактически это была одна из вещей, которые я предлагал как возможность. В любом случае, можете ли вы изменить свой ответ, чтобы объяснить разницу между SCHED_FIFO и SCHED_RR.Я мог бы это сделать Google, но вы объясните это в своем ответе, вероятно, получите от меня лучший ответ. Еще раз спасибо. – Charlie