Ответ 1
Если вы спрашиваете, как запускать некоторые потоки в режиме реального времени, а другие - как обычные потоки обмена временем, тогда вам нужно установить используя sched_setscheduler
.
Потоки с разделением времени хотят быть SCHED_OTHER
; потоки симулятора реального времени должны быть SCHED_FIFO
или SCHED_RR
.
В Linux, чтобы работать в приоритетах в реальном времени, ваш пользователь должен иметь ограничения на ресурсы (man 2 rlimit), который позволяет это, В частности, ваш rtprio
rlimit должен быть установлен на самый высокий приоритет, который вам понадобится. Кроме того, вы можете запустить приложение с правами администратора. В linux-системе с PAM это обычно выполняется путем добавления соответствующей строки к /etc/security/limits.conf
@realtime - rtprio 99
Это предоставит rtprio ограничения до 99 приоритета в реальном времени для группы реального времени. Затем вы добавляете группу в режиме реального времени в /etc/groups
и убедитесь, что ваш пользователь находится в группе.
(И поскольку это, как представляется, в первый раз делает это, вы также можете захотеть, чтобы в режиме реального времени был задействован высокоприоритетный поток в реальном времени, чтобы убедиться, что ваш симулятор не выходит из-под контроля и сделать систему непригодной... если вы имитируете высокую загрузку процессора, вы можете получить высокую нагрузку на CPU и не сможете остановить все без перезагрузки.)