Reaalaja operatsioonisüsteem

Reaalaja operatsioonisüsteem (RTOS) on reaalajaliste rakenduste kasutamiseks välja töötatud operatsioonisüsteem. Neid kasutatakse reaalajasüsteemides.
Reaalaja operatsioonisüsteemide võtmetunnuseks on rakenduste nõuete vastuvõtmisele ja täitmisele kuluva aja, kosteaja, pidevus ja ette ennustatus. Reaalaja operatsioonisüsteemid jagunevad rangeteks ning nõrkadeks reaalaja operatsioonisüsteemideks. Range reaalaja operatsioonisüsteem on pidevam ja paremini ette ennustatava ajalise kasutusega kui nõrk reaalaja operatsioonisüsteem. Reaalaja operatsioonisüsteem, mis enamasti või tavaliselt suudab täita tähtaegu on nõrk reaalaja operatsioonisüsteem. Kui süsteem suudab tähtaegu alati deterministlikult täita on tegemist range süsteemiga. Põhiline disainiprobleem ei ole mitte kõrge läbilaskevõime vaid tagatud nõrk või range jõudluskategooria.
Reaalaja operatsioonisüsteemide tähtsaks osaks on ressursijaotusega tegelev arenenud plaanurid. Paindlik ja keeruline plaanur lubab küll erinevamate prioriteetidega rakenduste hulka, aga reaalaja operatsioonisüsteemid on enamasti pühendatud kitsamale kasutusvaldkonnale. Võtmetegurid on katkestuste ja lõimevahetuse minimaalne latents. Reaalaja operatsioonisüsteemi puhul väärtustatakse rohkem kui kiirelt ja etteaimatavalt see suudab reageerida, mitte see kui palju tööd ajaühikus ära tehakse.

Tegumitevaheline suhtlus ja ressursside jagamine

Multitegumtöötlusega süsteemid peavad andmeid ja riistvara ressursse protsesside vahel jagama. Kui samal ajal üritavad mitu protsessi samale ressursile ligi pääseda tekivad ette ennustatamatud olukorrad. On kolm enam levinud lahendust selle probleemiga võitlemiseks.

Katkestuste ajutine väljalülitamine

Tavalised operatsioonisüsteemid ei luba kasutaja programmidel katkestusi välja lülitada, sest niiviisi võiks kasutaja programm kontrollida protsessorit nii kaua kui tahab. Modernsed protsessorid ei luba kasutaja programmidel katkestusi keelata, sest sellist kontrolli peetakse võtmetähtsusega operatsioonisüsteemi ressursiks. Paljud manussüsteemid ja reaalaja operatsioonisüsteemid, lubavad kõigil programmidel tuuma õigustes töötada, et tagada suurem süsteemikutse efektiivsus, ning lubada suuremat kontrolli riistvara üle.
Kui tegum töötab tuuma õigustes ühe protsessoriga süsteemis ja omab õigust katkestusi keelata, on nende väljalülitamine tihti parim (väikseima kuluga) lahendus takistamaks samaaegseid ligipääsemisi jagatud ressursile. Keelatud katkestustega ajal on protsessil eksklusiivne õigus protsessorile, sest mitte ükski teine tegum ega katkestus ei saa käivituda, seeläbi on kriitiline osa kaitstud. Kui tegum lõpetab kriitilise töö, peab ta katkestused uuesti sisse lülitama. Kui ootel oli katkestusi siis need käivituvad seejärel. Ajutiselt katkestuste keelamist peaks kasutama ainult siis kui kõige pikem tee läbi kriitilise osa võtab vähem aega kui maksimaalne katkestuse latents. Seda viisi kasutatakse enamasti siis kui kriitiline kood on mõned masinkäsud pikk ja ei sisalda tsükleid. Näiteks on see ideaalne kaitsmaks riistvara seadeid muutvaid registreid nende muutmise ajal.

Binaarne semafor

Kui kriitiline kood on pikem kui mõni rida koodi või sisaldab tsükleid, peab reaalaja operatsioonisüsteem kasutusele võtma tavalistes operatsioonisüsteemides kasutatavad lahendused.
Binaarne semafor on lukus lahti või lukus. Kui see on lukus peab tegum ootama kuni see lukust lahti võetakse. Semoforidel on ka hulk teada olevaid probleeme – näiteks õiguste ümberpöördumine ja ummik.

Sõnumite saatmine

Veel üks viis ressursside jagamiseks tegumite vahel, on organiseeritud sõnumite saatmise skeem. Sellises raamistikus omab ainult üks tegum otseselt ressurssi. Kui teine protsess tahab juurdepääsu ressursile saadab ta sõnumi haldavale protsessile. Kuigi nende reaalajaline käitumine on halvem kui semaforisüsteemidel, õnnestub lihtsatel sõnumeid saatvatel süsteemidel võidelda paremini ummikute vastu.

Katkestuste juhtija ja plaanur

Kuna katkestuste juhtija plokid on kõige kõrgema prioriteediga jooksev tegum ja reaalajasüsteemide lõime vahetuse aega hoitakse minimaalsena, on katkestuste kood võimalikult lühike. Enamasti katkestuse kood lihtsalt teadvustab katkestuse toimumist ja paneb vastava riistvaralise töö madalama prioriteediga juhtprogrammile, näiteks lukustades semafori lahti või saates teate. Tavaliselt pakuvad plaanurid viisi, kuidas katkestuse seest tegumeid lahti lukustada.

Mäluhaldus

Mäluhaldus on reaalaja operatsioonisüsteemis palju tähtsamal kohal kui tavalistes operatsioonisüsteemides. Mälu eraldamise kiirus on väga tähtis. Tavalised mäluhaldus süsteemid otsivad vaba mäluosa teadmata pikkusega ahelloendist. Reaalaja operatsioonisüsteemi vaatepunktist on see lubamatu, sest mälu eraldamine peab toimuma kindla aja jooksul. Reaalaja operatsioonisüsteemides kasutatakse seetõttu lihtsamaid ja kiiremaid algoritme, mis on vähem efektiivsed.