Intereting Posts
Минимальное диалоговое окно настроек xfce4-display-settings не отображает параметр «перейти вправо» Почему кратковременно мигает терминальный курсор? Как предотвратить временный дрейф в гостевой системе Debian на хосте CentOS KVM? Ярлык клавиатуры для установки заголовка вкладки gnome-terminal Как очистить и понизить пакеты PPA с прекращенной версией Ubuntu Использовать git pull через команду ssh invoke Сопоставимые определения цвета в файле vimrc Как использовать «rm! (* Keyword) в bash 4.1.2? Проблемы с цветами после обновления до Debian Stretch (vim 8.0) Как остановить все единицы, принадлежащие одной и той же цели? Does Control + C удаляет файлы, которые вы загружали и устанавливали? Попытка отключить некоторые функции Bluetooth на RPi3 Почему JFS так неясна? Shell Script для извлечения процессов linux и отображения количества процессов для отдельного пользователя как «.» Как настроить 3 экрана с 2 ATI GPU Debian Squeeze

Рекомендуется использовать param.sched_priority в Linux FIFO при создании streamа?

В моем встроенном устройстве я использую странное поведение с протоколом, который мы используем, иногда для отправки данных через последовательное устройство через FIFO требуется некоторое время.

Я подозреваю, что Linux – это не ОС реального времени, и почему у них есть такая эмулируемая функция реального времени, как pthread_setschedparam ? и наличие такого приоритета в очереди, вызывающего остановку другого процесса из-за того, что для обнаружения подчиненного устройства требуется много времени.

Я просто хочу знать, желательно ли использовать param.sched_priority = 40; в линуксе? Я попытался настроить этот параметр, но проблему довольно сложно воспроизвести, это происходит в полевых условиях.

Это код

if (1) { int policy; int r; struct sched_param param; policy = SCHED_FIFO; param.sched_priority = 40; r = pthread_setschedparam(cc_state->ser_thread, policy, &param); printf("%s: pthread_setschedparam %d", __func__, r); } 

Linux в реальном времени не является эмуляцией, есть системные вызовы, влияющие на планирование. Смотри man sched(7) . Из вашего вопроса не ясно, что вы пытаетесь сделать и в чем именно заключается ваша проблема. Значение sched_priority имеет отношение только к приоритетам других streamов. Например, если есть только один stream с приоритетом> 0, не имеет значения, является ли приоритет 1 или 40; более высокое значение не даст дополнительного «усиления» streamу. Вы должны будете определить относительный приоритет, требуемый вашими streamами, и назначить им значения приоритетов соответственно.

Обратите внимание, что нет никакого кванта времени, связанного с streamами SCHED_FIFO . SCHED_FIFO работает до тех пор, пока не произойдет одно из следующих событий: stream заблокирован, потому что он ожидает ввода-вывода, stream с более высоким приоритетом готов к работе или stream добровольно возвращает процессор. Вы должны будете принять это во внимание, если у вас есть несколько streamов с одинаковым приоритетом, в противном случае один stream может захватить процессор из других streamов. Конечно, на многопроцессорной машине несколько streamов могут работать одновременно на каждом своем процессоре.