Intereting Posts
Удалить все файлы путем поиска awk или sed для запуска каждого столбца файла из требуемых местоположений или позиции байта cron запускает работу в неожиданные моменты времени Клонировать Linux для другого Linux Linux – как я могу воспроизвести звуковой файл через задний разъем через командную строку Не удалось подключиться к сети WiFi на Fedora 20? Linux Mint 13 не устанавливает Каков правильный способ добавления недостающих дистрибутивов в исполняемый FreeBSD? Сумма альтернативных значений в столбце с использованием команды sed или nawk Как (mysql) процесс узнает «свой» терминал, если не от stdio? Fedora24, пытаясь установить java (JDK) Мой ноутбук не может регулировать яркость Как безопасно отменить поиск dns на ip в сценарии оболочки Sata hotplug не работает Как округлить или преобразовать значение float в int с помощью bc? получение: "(standard_in) 1: синтаксическая ошибка"

Рекомендуется использовать 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ов могут работать одновременно на каждом своем процессоре.