Reaalaja operatsioonisüsteem: erinevus redaktsioonide vahel

Eemaldatud sisu Lisatud sisu
Anarij (arutelu | kaastöö)
PResümee puudub
P parandasin skripti abil kriipsud + muu
5. rida:
Reaalaja operatsioonisüsteemide tähtsaks osaks on [[ressursijaotus]]ega tegelev arenenud [[plaanur]]id. 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õim]]evahetuse 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.
 
==Disainifilosoofia==
 
Kõige enimlevinud disainid on:
* Sündmustel põhinev, mis lülitab töid ainult siis kui kõrgema prioriteediga töö vajab tegemist
* Aega jagavad töid vahetatakse korrapäraste ajavahemike järel - [[järjestikplaanur]]
 
Aega jagavad disainid lülitavad töid tihedamini kui rangelt vaja oleks, aga annavad ladusama [[multitegumitöö]], tekitades illusiooni, et protsess või kasutaja kasutab masinat üksi.
15. rida ⟶ 14. rida:
Vanad [[protsessor]]id vajasid tegumi vahetamiseks palju tsükleid, mille ajal protsessor ei saanud midagi kasuliku teha. Näiteks 20MHz [[68000]] protsessoril (tavaline kaheksakümmnendate lõpus) kulus tegumi vahetamisele umbes 20 mikrosekundit. 2008 aastast pärit 100MHz [[ARM_(arvutiarhitektuur)|ARM]]iga protsessoril kulub selleks alla 3 mikrosekundi. Sellel põhjusel üritasid varajased operatsioonisüsteemid suurendada kiirust vahetades tegumite vahel võimalikult harva.<ref>{{netiviide | URL =http://www.segger.com/cms/context-switching-time.html|Pealkiri = Context switching time|Autor=Segger|Keel=Inglise|Kasutatud = 23.12.2012}}</ref><ref>{{netiviide | URL =http://www.emb4fun.de/projects/chibios/index.html|Pealkiri = ChibiOS/RT|Keel=Inglise|Kasutatud = 23.12.2012}}</ref>
 
==Ressursijaotus==
 
Tavaliselt on protsessidel kolm staatust:<ref>{{netiviide | URL = http://www.e-uni.ee/e-kursused/eucip/haldus/214_protsess.html|Pealkiri = Protsess|Kasutatud = 23.12.2012}}</ref>
* Täitmisel (kasutab talle määratud protsessoriressurssi)
23. rida ⟶ 21. rida:
Enamus protsessid on suurema osa ajast blokeeritud või täitmiseks valmis, sest enamasti saab samal ajal ühe protsessori peal töötada ainult üks tegum. Järjekorras ootavate protsesside arv võib olla väga erinev, ning sõltub töötavate tegumite hulgast ja süsteemi kasutatavast plaanurist.
 
==Tegumite vaheline suhtlus ja ressursside jagamine==
 
Mitmiktegumitöö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älja lülitamine===
 
Tavalised operatsioonisüsteemid ei luba kasutaja programmidel [[katkestus]]i 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 ressurssiks. Paljud manussüsteemid ja reaalaja operatsioonisüsteemid, lubavad kõigil programmidel [[Tuum (informaatika)|tuum]]a õ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älja lü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 tagasi 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ükkel (programmeerimine)|tsükleid]]. Näiteks on see ideaalne kaitsmaks riistvara seadeid muutvaid [[Register_(arvutitehnika)|registreid]] nende muutmise ajal.
 
===Binaarne semafor===
 
Kui kriitiline kood on pikem kui mõni rida koodi või sisaldab endas 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==
 
===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 semafori süsteemidel, õnnestub lihtsatel sõnumeid saatvatel süsteemidel võidelda paremini ummikute vastu.
 
==Katkestuste juhtija ja plaanur==
 
Kuna katestuste juhtija plokid on kõige kõrgema prioriteediga jooksev tegum ja reaalajasüsteemide [[lõim]]e 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 [[ahelloend]]ist. 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.<ref>{{netiviide | URL =http://netlab.cse.yzu.edu.tw/~bpmania/%C5%F8%C0Y/%AD%D7%BD%D2/951%20%B4O%A4J%A6%A1%A7Y%AE%C9%A7@%B7~%A8t%B2%CE/%C1%BF%B8q/07%20Memory%20Management.pdf|Pealkiri = Reaalaja operatsioonisüsteemide mäluhaldus|Autor=C.-Z. Yang|Keel=Inglise|Kasutatud = 23.12.2012}}</ref>
 
==Näited==
* [[FreeRTOS]] - [[Vabavara]]line reaalajaoperatsioonisüsteem, mida kasutab ka [[Eesti tudengisatelliidi programm|Eesti tudengisatelliit]] [[ESTCube-1]].
* [[LynxOS]]
* [[OSE]]
60. rida ⟶ 52. rida:
* [[Windows CE]]
 
==Viited==
{{viited}}
 
70. rida ⟶ 62. rida:
[[cs:Operační systém reálného času]]
[[de:Echtzeitbetriebssystem]]
 
[[en:Real-time operating system]]
[[es:Sistema operativo de tiempo real]]