170 likes | 252 Views
5.4 Käyttöjärjestelmät. operating system (OS) OS on systeemiohjelmistoista tärkein ja monimutkaisin tarkoituksena on helpottaa ja tehostaa tietokoneen käyttöä kaikissa tietokoneissa on OS OS:n tärkeimpiä tehtäviä:
E N D
5.4 Käyttöjärjestelmät • operating system (OS) • OS on systeemiohjelmistoista tärkein ja monimutkaisin • tarkoituksena on helpottaa ja tehostaa tietokoneen käyttöä • kaikissa tietokoneissa on OS OS:n tärkeimpiä tehtäviä: • monen laitteen samanaikainen hallinta - tiedonsiirron hallinta tietokonelaitteiston eri osien välillä (s/t ja ulkoiset muistilaitteet) • monen ohjelman samanaikainen hallinta - ohjelmien suorituksen ohjaus • monen käyttäjän samanaikainen hallinta – tietokoneen resurssien jako käyttäjille • muistinhallinta – keskus- ja toissijaisen muistin ylläpito - huolehtiminen tietojen säilytyksestä niitä käytettäessä ja myös pitkällä aikavälillä
Miksi käyttää käyttöjärjestelmää? • jos OS:ä ei olisi, mitään ei tehtäisi käyttäjän puolesta, käyttäjä joutuisi tekemään kaiken itse • esim. ohjelman suorittamiseksi vaadittavat askeleet: • siirrä kääntäjä oheismuistista keskusmuistiin • käynnistä kääntäjä, syötä sille käännettävä ohjelma joltakin syöttölaitteelta • käännä ohjelma, sijoita käännöksen tulos (objektiohjelma) oheismuistiin • linkitä objektiohjelma kirjastoihin yms. apuohjelmiin latausmoduuliksi • siirrä latausmoduuli oheismuistista keskusmuistiin • käynnistä suoritettava ohjelma, anna syöttötiedot joltakin syöttölaitteelta • vastaanota ohjelman tulosteet jollekin tulostuslaitteelle
Tietokoneen tehokas käyttö • mitä enemmän ihminen on mukana ek. prosessissa, sitä tehottomampaa tietokoneen käyttö on • käyttäjän valintoihin kuuluva aika on ikuisuus prosessorin kannalta • ratkaisu: vaiheiden automatisointi => tehokkuus kasvaa • myös siirräntätoiminnot ovat hitaita • prosessori pystyy tekemään niitä oheistoimintoina, tai niitä tekee toinen IO-prosessori • prosessori vapautuu muita tehtäviä varten • tehtäviä voi lomittaa sen sijaan, että suoritettaisiin peräkkäin
Jotta usean työn samanaikainen suorittaminen olisi mahdollista, käyttöjärjestelmän tulee tarjota seuraavat toiminnot: • resurssien varaaminen (resource allocation): • töille varataan resursseja: muistia, siirräntälaitteita, prosessoria • vuoronvaihto (dispatching) • prosessoriresurssin varaaminen työlle, työn vaihto suoritusvuoroon • ajoitus (scheduling) • päätös siitä, mikä oheismuistissa oleva työ tulee seuraavaksi suoritusvuoroon • kriteerejä: kiireellisyysaste, resurssien saatavuus, resurssien tarve, odotusaika • resurssien suojaus (resource protection) • varmistus siitä, että työ ei pääse käsiksi resurssiin, jota se ei ole varannut • keskeytysten käsittely (interrupt handling) • siirräntäpyyntöjen käsittely
5.4.1. Vuoronvaihto • prosessi = ohjelman suorittaminen tietokoneessa • OS:ssa monta käyttäjän sekä OS:n käynnistämää prosessia • jos halutaan suorittaa monta prosessia samanaikaisesti, tulee prosessori jakaa prosessien kesken • vaihdetaan suoritettavaa prosessia toistuvasti tietyin perustein • vaihto tapahtuu nopeasti • tulee samanaikaisuuden vaikutelma, vaikka kullakin hetkellä aina 1 prosessi on suoritettavana
Kun prosessi käynnistetään, se voi joutua mihin tahasna seuraavista tiloista: • suoritustila (running) • aikaviipale = ajanjakso, jonka prosessi voi olla yhtäjaksoisesti suoritettavana • prosessille annetaan uusi aikaviipale sen tullessa suoritustilaan • suoritusvalmiustila (ready to be run) • kun aikaviipale loppuu • siirräntälaitteen/muun resurssin odotustila (blocked) • tuli siirräntäpyyntö ja odotetaan, kunnes siirtäntä on valmis • vuoronantaja = prosessin vaihtaja (dispatcher) • pyrkii tasapuolisuuteen ajassa ja vuorojen määrässä • esim. jos prosessi on saanut ylivoimaisesti suoritusaikaa muihin prosesseihin nähden, vuoronantaja pienentää aikaviipaleen koon
5.1. Ajoitus ja resurssien varaaminen • Algoritmi tarvitsee aika-, muisti- ja laitteistoresursseja • yksi tehtävä koostuu monesta prosessista, joista kukin tarvitsee resursseja • ennen kun prosessi on suorituskelpoinen, sen tarvitsemat resurssit on varattava tietokoneesta • ajoittaja saattaa prosessit odotustilasta suoritusvalmiustilaan • suoritusjärjestys määräytyy seuraavien seikkojen mukaan: • prosessin tarvitsemien resurssien määrä • vapaina olevien resurssien määrä • prosessiin liittyvän työn prioriteetti (tärkeys, kiireellisyysaste) • työn odotusaika (jonka se on jo odottanut)
ajoittaja: • pitää kirjaa vapaina olevien resurssien määrästä, kun resurssit varataan/vapautetaan • resurssien varaus: • staattinen • kaikki prosessin tarvitsemat resurssit varataan kerralla • prosessi käynnistetään vasta, kun kaikki resurssit ovat saatavilla • dynaaminen • resurssi varataan vain ennen sen välitöntä käyttöä • prosessi voidaan käynnistää heti, mutta jos käytettävä resurssi on varattu, prosessi joutuu odotustilaan • parempi resurssien hyväksikäyttö, mutta lukkiuman mahdollisuus: - kaksi prosessia pitää kumpikin hallussaan resurssia, jota toinen tarvitsee - kummankaan suoritus ei voi jatkua - molemmat jäävät odottamaan ikuisesti - ratkaisu: toisen prosessin keskeytys, jotta toinen pääsisi jatkamaan
5.1.2 Muistinhallinta (memory management) • Muistin varaus (allocation) • prosessille varataan riittävästi muistia • Suojaus (protection) • prosessia ei saa päästää muistialueelle, jota sille ei ole varattu • Hyväksikäyttö (utilization) • muisti on ainoa paikka, jossa suoritettavat prosessit ja niiden data voivat sijaita • muistia tulee käyttää tehokkaasti hyväksi: • muistia varataan riittävästi, jotta prosessi pääsisi suorittamaan tehtäväänsä • muistia varataan siten, että siinä on aina suoritusvalmiustilassa olevia prosesseja • OS:n tulee voida • varata mikä tahansa riittävän suuri vapaa alue muistista • siirtää prosessin dataa muistialueelta toiselle • kun pienet varaamattomat alueet halutaan yhdistää yhdeksi isommaksi
Ohjelmaosoitteiden muuttaminen • objektikoodin osoitteet suhteellisia • osoitteiden laskenta osoitteesta 0 eteenpäin • ennen ohjelman (prosessin) suoritusta objektikoodin ohjelmaosoitteet on muutettava todellisiksi muistiosoitteiksi • jotta osoitteet sijaitsevat sillä muistialueella, minkä OS on prosessille varannut • kaksi muuntotapaa: • staattinen muunto • lataajan tekemä ennen suorituksen alkua • dynaaminen muunto • prosessorin tekemä objektiohjelman suorituksen aikana • alkusoitteiden käyttö • sivutus
1. Alkuosoitteiden käyttö • talletetaan prosessille varatun muistialueen alkuosoite • kun prosessi tulee suoritustilaan, alkuosoite siirtyy ns. kantarekisteriin • objektikoodisia konekielisiä käskyjä suorittaessa muistiviittaukset muutetaan dynaamisesti todellisiksi lisäämällä kantarekisterin arvo suhteelliseen osoitearvoon • tämä antaa OS:lle mahdollisuuden siirrellä koodipätkiä keskusmuistissa tarvittaessa • kun toinen prosessi tulee aktiiviseksi, se periaatteessa voisi viitata toisen prosessin muistialueeseen (hakkerointia) • estetään pitämällä yllä tietoa prosessin pituudesta (muistialueen pituus, eli muistipaikkojen lukumäärä) • menetelmän haitta: kaikkien tietojen tulee olla samanaikaisesti muistissa • muistia pitää olla tarpeeksi prosessin suorittamiseksi • RAM:ia on yleensä vähän
Heittovaihto (swapping) • keskusmuistia on tietokoneessa vähän(etenkin kovalevymuistin määrään verrattuna) • monta suoritettavaa prosessia • voidaan kasvattaa suoritusvalmiiden prosessorien määrä • siirretään odotustilassa olevien prosessien tiedot (koodi + data) oheismuistiin • yleensä siirretään erityiseen nk. heittovaihtotiedostoon • vapautetaan näin muistialue muiden prosessien käyttöön • kun prosessin odotustila on loppu (se on taas suoritusvalmis) • siirretään prosessin tiedot takaisin heittovaihtotiedostosta keskusmuistiin • Heittovaihdon suorituksen kriteerejä: • prosessin prioriteetti • prosessin varaama muistin määrä • siirrännän odotusaika (odotustilan kesto) • muistissa oloaika tähän saakka
Pirstoutuminen (fragmentation) • kun prosessin käyttämä muistialue vapautetaan (prosessin päätyttyä), alue voidaan varata toiselle prosessille, jonka muistintarve on pienempi • muistialueen loppuun jää käyttämätön pätkä • samoin voi käydä seuraavallekin muistialueelle • muistitilan vapauttamiset ja uudelleen varaamiset voivat aiheuttaa pirstoutumista • varattujen alueiden välissä on hyödyttömän pieniä yhtenäisiä vapaita alueita • ratkaisu: yhdistetään pirstoutuneet alueet yhdeksi isoksi alueeksi siirtämällä varatut muistialueet niin, että niiden väliin ei jää vapaata tilaa
2. Sivutus (paging) • mahdollistaa prosessin suorittamisen, vaikka kaikki sen tiedot eivät mahtuisikaan kerrallaan keskusmuistiin • tiedot jaetaan samankokoisiin osiin, sivuihin • myös RAM jaetaan sivunkokoisiin alueisiin, kehyksiin (frames) • sivukoko = montako sanaa (muistipaikkaa) mahtuu yhdelle sivulle • yleensä 2:n potenssi, 1024, 2048 • esim. vuoksi 1000 • todellisen muistiosoitteen laskenta: • millä ohjelmasivulla muistipaikka sijaitseemikä on muistipaikan numero ohjelmasivun alkuosoitteeseen nähden • esim. sivukoko 1000, ohjelmaosoite 2764 • ohjelmasivu on 2764//1000=2 ja siirros on 2764-2000=764 • mille RAM:in kehykselle (muistisivulle) ohjelmasivu sijoittuu • tieto on sivutaulussa (page table) • kuvaus muistisivu -> ohjelmasivu • OS pitää yllä sivutaulua kullekin suoritettavalle prosessille • sivutaulussa tiedot: • onko ohjelmasivu muistissa vai ei • jos on, sen muistisivun osoite, jossa ohjelmasivu on • jos ei, sijainti oheismuistissa (tiedoston nimi tai heittovaihtotiedoston paikka) • sivu täytyy hakea oheismuistista • prosessi siirtyy odottamaan siirron loppua
Sivutus… • virtuaalimuistitekniikka: • päästään suorittamaan ohjelmia, joiden muistitarve on isompi kuin keskusmuistin koko • ohjelman ei tarvitse olla kokonaan muistissa voidakseen tulla suoritetuksi • jos muistissa ei enää tilaa kun ohjelmasivu halutaan sijoittaa muistisivuun, jokin muistisivu pitää vapauttaa palauttamalla ohjelmasivu oheismuistiin • palautetaan: • muistissa pisimpään (longest resident) ollut sivu • kauimmin käyttämättä ollut (least recently used) sivu • harvimmin käytetty (least frequently used) sivu • ohjelmasivu = muistisivu (kehys) + pirstoutumista ei voi tapahtua + muistin käyttö on tehokasta - sivutaulujen ylläpito aiheuttaa oman kuormituksen (overhead)
5.4.4 Siirräntä • OS käsittelee siirräntälaitteita • OS:n tulee tietää • milloin siirräntätoiminto alkaa ja päättyy • helppoa järjestää jos OS käsittelee siirrännän • Siirräntälaitteet • jaettavissa olevia (shareable) • voivat käsitellä eri prosesseilta tulevaa data • esim. keskusmuisti • jakamattomia • esim. rivikirjoitin • korkeintaan 1 prosessin hallinnassa • käytetään sivuajoa (spooling) • jakamattoman laitteen ja käyttäjäprosessin välillä on jaettava resurssi, esim. levy, jolle pyynnöt ohjataan jonoon • esim. kirjoitin pysyvästi varattu kirjoitinspoolerille • se hakee tehtävät kirjoitinjonosta • hakee aina uuden työn, kun vanha on tulostettu • prosessi ei joudu keskeyttämään suoritusta, vaan voi jatkaa, kun spooleri huolehtii tulostuksesta
Siirräntäpyynnön käsittely • OS varmistaa pyynnön laillisuuden • prosessi on todellakin ko. laitteen ”omistaja” • OS käynnistää siirrännän • siirtää prosessin siirrännän odotustilaan • pyytää vuoronantajaa valitsemaan uuden prosessin suoritettavaksi • Kun siirräntä on valmis • laitteen tilarekisteriin kirjoitetaan arvo, jota kutsutaan keskeytyspyynnöksi • prosessori siirtyy suorittamaan keskeytyskäsittelijää (interrupt handler) • tunnistetaan keskeytyksen aiheuttanut laite ja prosessi • prosessin tila muutetaan takaisin suoritusvalmiustilaan • jatketaan sen prosessin suorittamista, jonka suoritus keskeytyi