Linux 6.12 може да има “PREEMPT_RT” поддръжка в реално време

Preempt-RT е модификация, която позволява на задачи с по-висок приоритет да прекъсват задачи с по-нисък приоритет.

El концепция за система в реално време Това не е нещо, за което се е мислило през последните години в Linux, от идеята за това стартира преди почти 20 години, по-точно през 2005 г като част от проекта “Realtime-Preempt” (“-rt”) с разработването на режим PREEMPT_RT за ядрото на Linux.

За тези които не знаят PREEMPT_RT, те трябва да знаят това това е кръпка за ядрото на Linuxи преобразува операционната система в такава в реално време (в реално време). Основната цел на PREEMPT_RT е да намали латентността и да осигури предвидимост при изпълнението на задачите, което е от решаващо значение в приложения, които изискват бързи реакции.

С по-прости думи можем да кажем, че PREEMPT_RT позволява почти всички части на ядрото да бъдат прекъснати, което намалява латентността. За разлика от стандартното ядро, не всички секции могат да бъдат прекъснати, което може да причини забавяне на времето за реакция.

От 2015 г. проектът е под надзора на Linux Foundation и досега внедряването на режим PREEMPT_RT се предлагаше под формата на външни пачове. Въз основа на тези пачове, дистрибуции като RHEL, SUSE и Ubuntu създадоха издания в реално време на своите продукти, силно търсени в сектори като финансови системи, устройства за аудио и видео обработка, авиационни системи, медицина, роботика, телекомуникации и индустриални приложения, където е от съществено значение да се гарантира предвидимо време за реакция при събития.

En 2019 процесът на промоция започна от пачовете, разработени в проекта PREEMPT_RT към основното ядро ​​на Linux. Във версия 5.3 на ядрото опцията PREEMPT_RT беше включена в конфигурационния файл, за да активира режим в реално време.

Printk битовете, необходими за PREEMPT_RT, се намират в linux-next. това беше последното известно препятствие за PREEMPT_RT. RT опашката има също и "атомната конзола" за UART 8250, която все още не е включена linux-следващ. Това означава поведение на „наследена конзола“, както при липса на печат от атомния контекст в спешни случаи. Контролерът 8250 UART е единственият която днес осигурява поддръжка на „атомна конзола“.

Всички тази работа е на път да даде плодове, тъй като пълното интегриране на необходимите промени отне пет години и е към завършване, тъй като се очаква, че във версия 6.12 ядрото може да бъде компилирано в режим PREEMPT_RT, без да е необходимо да се прилагат допълнителни пачове.

Споменава се, че последното препятствие което попречи на активирането на PREEMPT_RT беше липсата на поддръжка за неблокиращ атомен изход с помощта на функцията printk. Тази функционалност вече съществува приет в linux-next клон. Освен това предстои внедряване на неблокираща атомна конзола за контролера 8250 UART, чието отсъствие в момента предотвратява извеждането на спешни съобщения към конзолата от код, изпълняван в атомен контекст.

С обединени printk битове, PREEMPT_RT може да бъде активиран на X86, ARM64 и Risc-V. Тези три обединени архитектури изискваха промени през годините.
години, оставяйки ме в положение, в което нямам съществени промени в
опашка, която би ги засегнала. ARM и POWERPC имат оставащи някои основни корекции...

Разработчици на ядро ​​на Linux обявиха интегрирането на последните необходими промени в клона linux-next, който ще се използва за компилиране на версия 6.12. Тези промени ще позволят ядрото да бъде компилирано с опцията PREEMPT_RT, която въвежда възможности в реално време.

След като тези промени бъдат приети на главния клон, режим PREEMPT_RT Той ще бъде достъпен за X86, ARM64 и RISC-V архитектури. Поддръжката за ARM и POWERPC архитектури ще бъде добавена по-късно, тъй като необходимите пачове все още не са напълно интегрирани.

Струва си да се спомене, че предложените промени все още не са окончателни и е възможно, ако PREEMPT_RT не пристигне в клона 6.12, той да бъде интегриран до следващата година във версия 6.13.

И накрая, ако се интересувате да научите повече за това, можете да проверите подробностите в следваща връзка.