640 likes | 994 Views
2. Operatsioonisüsteemid. Sisukord. Tagasivaade Operatsioonisüsteemi struktuur Protsessid Lõimed Protsessoriaja planeerimine. Tagasivaade. Os - programm, mis käitub kui vahendaja kasutaja ja riistvara vahel Kaks põhisuunda OS-ide arendamisel Kasutamise mugavus
E N D
2 Operatsioonisüsteemid
Sisukord • Tagasivaade • Operatsioonisüsteemi struktuur • Protsessid • Lõimed • Protsessoriaja planeerimine
Tagasivaade • Os - programm, mis käitub kui vahendaja kasutaja ja riistvara vahel • Kaks põhisuunda OS-ide arendamisel • Kasutamise mugavus • Riistvara töö efektiivsus
Tagasivaade • OS-i eesmärgid • Riistvara varjamine läbi abstraktsioonide • Ressursside määramine protsessidele • Pakub sõbralikku ja efektiivset kasutajaliidest
Tagasivaade • OS-ide ajalugu • 1 generatsioon: ei olnud OS-i. Mehaanilised lülitid • 2 gen. : suured masinad, perfokaardid • 3 gen: kiiremad I/O seadmed, driverid aga ikka ikka aeglane ja riistvara kallis • Pakettsüsteemid operaatoritega • Multiprogrammsus: spooling • Ajajaotusega süsteemid: kiired ümberlülitused
Tagasivaade • Os-i ajalugu (jätk.) • 4 gen: personaal arvutid • Paralleelsüsteemid: ühine kell ja siin • Reaalaja süsteemid • Hajussüsteemid
Küsimus nr 1 • Personaalarvuti (70-ndatel) võimaldasid: • Mitme kasutaja tööd • Ekraani kasutust • Failisüsteemi kasutust • Failisüsteemi kaitset
Küsimus nr 2 • Tänapäeva OS-i arendus PC-del on: • Riistvara efektiivsuse suunas • Kasutaja mugavuse suunas
Küsimus nr 3 • Spooling võimaldab: • Kiiremini protsesse täita • Lugeda otse kaardilugejast vajalik info mällu • Hoida CPU töös, kui I/O tegevused • CPU saadab tulemuse kohe printerisse • CPU suhtleb ainult kettaga
Küsimus nr 4 • OS: • Määrab protsessidele ressursse • Võimaldab kasutajal suhelda otse riistvaraga • Pakub sõbraliku kasutajaliidest • Loob keskkonna, kus protsessid saaks joosta • Organiseerib mälu ja protsessi haldust
Küsimus nr 5 • OS arengut tõukasid tagant: • Tarkvara kallis hind • Kasutaja mugavus • Riistvara efektiivne kasutus • Kaardilugejate efektiivsus • Riistvara kiirus
OS-i struktuur: • Komponendid: • protsesside haldamine • põhimälu haldamine • failide haldamine • I/O haldamine • sekundaarmälu haldamine • võrgu haldamine • kaitsesüsteem • käsuinterpretaator
Protsesside haldamine • Ühest programmist -> mitu protsessi • Igal oma olek ja erinev käsuloendur • Süsteem koosneb protsesside komplektist • Igal ühel “oma” CPU • Protsessijuhtimine: • Protsesside loomine ja kustutamine • Protsesside peatamine ja taastamine • Protsesside sünkroniseerimine • Protsesside omavahelise kommunikatsiooni organiseerimine
Põhimälu haldamine • Põhimälu kui suur massiiv, kus igal sõnal või baidil oma aadress • CPU loeb käske, loeb ja kirjutab käsuoperante. • I/O loeb/kirjutab põhimällu DMA kaudu • OS-is järgnevad funktsioonid • Mälu seisu jälgimine • Protsessi valik vaba mälu eraldamisel • Mälu kinnistamine ja vabastamine
Failide haldamine • Kettad kui sisend ja väljund • Välismäluga seotud funktsioonid • Vaba kettaruumi haldamine, ruumi eraldamine • Kettamehhanismi juhtimine • Failidega seotud funktsioonid • Failide loomine ja kustutamine • Kataloogide loomine ja kustutamine • Failide salvestamine välismällu • Vahendid failide ja kataloogide manipuleerimiseks
I/O haldamine • Üks OS eesmärk: peita riistavara kasutaja eest. I/O seadmete poole pöörduvad vaid draiverid • I/O süsteem koosneb: • Puhvrite ja vahemälu süsteemist • Üldiste seadmete ja draiverite liidestest, I/O seadmete draiveritest
Võrgu haldamine • Väga oluline hajussüsteemides, kus protsessorid erinevates kohtades. Erinev kell, mälu.
Kaitsesüsteem • Kui OS lubab mitut konkureerivat protsessi: üht protsessi on teise eest vaja kaitsta • Samuti failid, juurdepääsuload • Kaitsesüsteem peab • Tegema vahet lubatud ja mittelubatu d vahel • Tagama mälujuhtimise ainult protsessile lubatud piirkonnas
Käsuinterpretaator • Vahendaja kasutaja ja OS-i vahel • Käsuinterpretaator tõlgib ja edastab juhtkäske, mis on seotud: • Protsesside loomine ja juhtimisega • I/O opratsioonidega • Välis- ja põhimälu juhtimisega • Failisüsteemi kasutamisega • Võrgu ja kaitsega
OS-i struktuur: • Teenused • programmi täitmine • I/O operatsioonid • failioperatsioonid • side (kommunikatsioon) • ressursside jagamine (allocation) • kaitse
OS-i struktuur: • Süsteemsed käsud • Infovahetuseks OS-i ja töötava protsessi vahel • Võivad vajada parameetreid • Register (kiire aga jäik meetod) • Tabelisse mälus ja tabeli aadress registrisse • Stack – programm lükkab parameetrid pinusse, millest OS need välja tõmbab
OS on põhimõtteliselt “sündmustest” juhitud süsteemid: mingi sündmus toimub -> reageering -> uue sündmuse ootamine
Protsessid • Programm –passiivne: kood, tähemärgid • Protsess – aktiivne: käivitamisega seotud info – muutub, iseloomustab • Protsess on töötav programm • Protsess vajab ressursse: • Protsessori aega • Mälu • Faile • I/O seadmeid
Protsess vs programm • Protsess ei ole ainult programmi kood. • Sisaldab • Käsuloendurit (program counter - PC) • Protsessi olek • CPU registrid • Muutujate väärtusi • Protsessi pinu (stack - SP). Sisaldab tavaliselt ajutist infot nagu alamprogrammide parameetrid, tagastusaadressid, ajutised muutujad • Globaalsete muutujate piirkonda
Protsessi juhtimine • Ühest programmist -> mitu protsessi • Igal oma olek ja erinev käsuloendur • Süsteem koosneb protsesside komplektist • Igal ühel “oma” CPU • Protsessijuhtimine: • Protsesside loomine ja kustutamine • Protsesside peatamine ja taastamine • Protsesside sünkroniseerimine • Protsesside omavahelise kommunikatsiooni organiseerimine
Protsessi elutsükkel Uus (new) Töötav – kasutab CPU-d (running) Lõpetanud (terminated) Valmis (ready) Blokeeritud (blocked) Ootab CPU järel Ootab mingi teisi protsessi järel
Programmist protsessini • Programmi tekst • Kompileerimine • Linkimine • Interpreteerimine • Kompilaator vs interpretaator
Programmi tekst • Tekst disaini faasis • Enamjaolt kõrgema taseme keeled • Protsessikeeled (nt. Fortran, Basic) - > lihtsalt tõlgitavad masinkäskude jadaks • Objektorienteeritud keeled -> seos masinkäskudega kaudsem
Kompileerimine • Tekst -> protsessorile vastuvõetavaks käskude jadaks ehk objektmooduliks • Objektmoodul koosneb • Päisest • Programmi sisu (käskude jada) • Andmete kirjeldus • Parameetrite edastamiseks 2 moodust: • Aadress • Väärtus
Linkimine • Kui objektmoodul vajab teisi objektmooduleid, siis linkimine • Tulemus: valmisprogramm ehk laademoodul • Laademoodul salvestatakse failina. • Süsteemi laadur laeb laadurmooduli mällu, luues uue protsessi
Interpreteerimine • Interpretaator: kompileerimine + linkimine • Programmi käivitamisel otse programmi teksti kasutab • Nt: Visual Basic
Kompilaator vs interpretaator? • Interpretaator: • Algtekst masintekstiks käivitamisel • Platvormist sõltumatu • Töötab aeglasemalt • Kompilaator: • Masinkoodiks kogu programm, salvestab faili • Sõltub OS-ist
Protsesside loomine • Üks protsess, vanem (parent) võib luua teisi protsesse, lapsi (child) • Protsesside puu • Pärast alamprotsessi loomist • Ootab kuni see lõpeb • Konkureerib • Alamprotsess: • On peaprotsessi koopia • Laeb uue programmi
Protsesside lõpetamine • Protsess lõpetab töö ja pöördub OS-i poole kasutades exit käsku • Lisaks: abort • Alamprotsess on ületanud lubatud ressursside piiri • Alamprotsessi tegevus ei ole enam vajalik • Peaprotsess lõpetab töö
Lõimed (threads) • Käskude voog • “Kergekaalulised” protsessid • Kood, andmed, OS ressursid ühised protsessi kõikidel lõimedel • Täidetakse paralleelselt • Lõim on vaadeldav kui traditsiooniline protsess
Lõimed vs protsessid • Sarnasused • Jagavad CPU-d ja ainult üks lõim jookseb korraga • Lõimi nagu protsesse täidetakse järjest • Lõimed saavad samuti luua “alalõimu” • Kui üks lõim on blokeerinud, saab teine joosta. • Erinevused • Lõimed ei ole üksteisest sõltumatud • Kõik lõimed saavad ligi kogu aadress ruumile, mis protsessil on • Lõimed on määratud üksteist aitama, toetama. Protsessid ei pruugi üksteist toetada (nt: loodud eri kasutaja poolt)
Lõimede liigid • Kasutaja (-taseme) lõimed: • kogu vastutus kasutaja programmil (loomine, haldamine) blokeerumisoht kogu protsessile, kui tuum on ühe lõimega • Tuuma (OS) lõimed: • kogu loomise, haldamise, planeerimise tegevus toimub süsteemi poolt või vahendusel
Lõimede eelised • osa protsessi blokeerimine ei peata kogu protsessi, kasutaja ei blokeeru • mälu ja teiste ressursside efektiivne kasutamine • ökonoomsus ressursside hõlvamisel ja ümberjagamisel • efektiivne multiprotsessorsüsteemi kasutamine
Mitu ühele • Nt: • Solarise “rohelised” lõimed
Üks ühele • Nt: • Windows XP/NT/2000 • Linux • Solaris 9+
Mitu mitmele • Nt: • Solaris enne 9 • Windows NT/2000 koos “ThreadFiber” paketiga
Sünkroniseerimine • - vaja siis kui protsessid mõjutavad üksteise tegevus (ehk koopereeruvad protsessid) • Kuidas mõjutavad: • Ühised andmed või kood (nt lõim) • Protsessid suhtlevad teadete kaudu • Probleem: üks loeb, teine kirjutab. Mida siis loeti? Vana või uut väärtust?
Deadlock • Ehk ummikud • Olukord, kus grupp protsessidega on pidevalt blokeeritud nii, et ükski protsess ei saa aktiivseks • Nt filosoofide lõunasöök • Nii sünkroniseerimisest kui ummikutest rohkem 5. loengus
Protsessoraja planeerimine • Protsessi tsükkel – CPU • CPU planeerija • Kui CPU vaba, valib ready seisundis olevatest protsessidest järgmise ja annab CPU selle kasutada • Valiku tegemiseks erinevaid meetodeid
Dispetšer • Moodul, mis annab üle CPU juhtimise üle protsessile, mille on valinud planeerija • Ülesanded: • Ümberlülitus teisele protsessile • Kasutajarežiimile üleminek • Suunamine õigele käsule kasutajaprogrammis • Oluline aeg: ühe seiskamine, teise taaskäivitamine
Planeerimise kriteeriumid • Protsessori kasutus – milline osa tööajast CPU hõivatud • Läbilaskevõime – mitu protsessi ajaühikus töödeldakse • Käibeaeg – aeg protsessi käivitamisest lõpetamiseni • Ooteaeg – aeg, mille jooksul protsess ootab CPU-d • Reaktsiooniaeg – aeg, mille jooksul protsess saab esimest korda CPU
Mitte ennetav • Planeerimisalgoritm on mitte ennetav, kui protsessile on antud CPU, siis seda enam ära ei võeta. • Lühemad protsessid võivad kauem oodata, kuid kõiki koheldakse võrdselt • Reageerimisaeg paremini etteaimatav • Dispetšer saadab protsessid CPU-sse: • Töötavast -> Valmis • Kui protsess lõpetab