El koncept sistema v realnem času To ni nekaj, o čemer so razmišljali v zadnjih letih v Linuxu, od ideje o tem se je začelo pred skoraj 20 leti, natančneje leta 2005 kot del projekta “Realtime-Preempt” (“-rt”) z razvojem načina PREEMPT_RT za jedro Linuxa.
Za tiste, ki ne veste PREEMPT_RT, to bi morali vedeti to je obliž za jedro Linuxain pretvori operacijski sistem v realnočasovnega (v realnem času). Glavni cilj PREEMPT_RT je zmanjšati zakasnitev in zagotoviti predvidljivost pri izvajanju nalog, kar je ključnega pomena pri aplikacijah, ki zahtevajo hitre odzive.
Z enostavnejšimi besedami lahko rečemo, da PREEMPT_RT omogoča prekinitev skoraj vseh delov jedra, ki zmanjša zakasnitev. Za razliko od standardnega jedra ni mogoče prekiniti vseh odsekov, kar lahko povzroči zamude v odzivnih časih.
Od leta 2015 je projekt pod nadzorom fundacije Linux in do sedaj je bila izvedba načina PREEMPT_RT na voljo v obliki zunanjih popravkov. Na podlagi teh popravkov so distribucije, kot je npr RHEL, SUSE in Ubuntu so ustvarili izdaje svojih izdelkov v realnem času, zelo zahteven v sektorjih, kot so finančni sistemi, naprave za obdelavo zvoka in videa, letalski sistemi, medicina, robotika, telekomunikacije in industrijske aplikacije, kjer je bistveno zagotoviti predvidljiv odzivni čas za dogodke.
En 2019 se je začel postopek napredovanja popravkov, razvitih v projektu PREEMPT_RT v glavno jedro Linuxa. V različici jedra 5.3 je bila možnost PREEMPT_RT vključena v konfiguracijsko datoteko za omogočanje načina v realnem času.
Biti printk, potrebni za PREEMPT_RT, se nahajajo v linux-next. to je bila zadnja znana ovira za PREEMPT_RT. Čakalna vrsta RT ima tudi "atomsko konzolo" za UART 8250, ki je še ni linux-next. To pomeni vedenje "podedovane konzole", kot če ne tiskate iz atomski kontekst v nujnih primerih. Krmilnik 8250 UART je edini ki danes zagotavlja podporo za »atomsko konzolo«.
Vsi to delo bo kmalu obrodilo sadove, saj je popolna integracija potrebnih sprememb trajala pet let in se bliža zaključku, saj se pričakuje, da bo v različici 6.12 jedro mogoče prevesti v načinu PREEMPT_RT brez potrebe po uporabi dodatnih popravkov.
Omenjena je zadnja ovira ki je preprečilo, da bi bil PREEMPT_RT omogočen, je pomanjkanje podpora za neblokirni atomski izhod z uporabo funkcije printk. Ta funkcionalnost je že obstajala sprejet v veji linux-next. Poleg tega čaka na implementacijo atomske konzole brez blokiranja za krmilnik 8250 UART, katere odsotnost trenutno preprečuje izhod sporočil v sili na konzolo iz kode, ki se izvaja v atomskih kontekstih.
Z združitvijo bitov printk bi bilo mogoče PREEMPT_RT omogočiti na X86, ARM64 in Risc-V. Te tri združene arhitekture so z leti zahtevale spremembe.
leta, zaradi česar sem v položaju, ko nimam bistvenih sprememb v
čakalno vrsto, ki bi jih prizadela. ARM in POWERPC imata še nekaj bistvenih popravkov ...
Razvijalci jedra Linux so napovedali integracijo zadnjih potrebnih sprememb v vejo linux-next, ki bo uporabljen za prevajanje različice 6.12. Te spremembe bodo omogočile prevajanje jedra z možnostjo PREEMPT_RT, ki uvaja zmogljivosti v realnem času.
Ko so te spremembe sprejete na glavni veji, način PREEMPT_RT Na voljo bo za arhitekture X86, ARM64 in RISC-V. Podpora za arhitekturi ARM in POWERPC bo dodana pozneje, saj potrebni popravki še niso v celoti integrirani.
Omeniti velja, da predlagane spremembe še niso dokončne in je možno, da če PREEMPT_RT ne prispe v vejo 6.12, bo integriran do naslednjega leta v različici 6.13.
Končno, če vas zanima več o tem, podrobnosti lahko preverite v naslednja povezava.