Перво-наперво, ваши предположения неверны: ядро Linux предоставляет ограниченную возможность прерывания в режиме ядра, если заданы параметры конфигурации CONFIG_PREEMPT_VOLUNTARY
или CONFIG_PREEMPT
.
При включенном вытеснении задачи выиграныне выгружается, если они держат замки;разработчики ядра очень внимательно следят за тем, как долго процессы удерживают блокировки, и стараются сократить время, в течение которого блокировки удерживаются.(Частично для упреждающих, частично потому, что удерживаются более длинные блокировки, тем менее параллельной может быть система, если несколько процессоров борются за одну и ту же блокировку. Если блокировки удерживаются в течение коротких периодов времени, возникает меньше конфликтов и потенциально более высокая пропускная способность.)
Кроме того, разработчики ядра стараются ограничить время, которое процесс может проводить в режиме ядра.В конце концов, время, проведенное в ядре, - это время, которое не потрачено на приложение, а делает то, что делает приложение.
Если стандартное ядро Linux не может обеспечить вас достаточно хорошимПри резкой обработке прерываний производительности в режиме реального времени вы, конечно, можете использовать такую систему, как RTLinux , для которой доступна коммерческая поддержка .