Jakso 8 Ohjelman toteutus järjestelmässä rosessi rosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit 1 rosessi (4) Järjestelmässä olevan ohjelman esitysmuoto Järjestelmässä voi olla samalla kertaa monta prosessia joko samasta tai eri ohjelmasta käyttäjän (ihmisen) näkökulma ja aikaskaala (1 min, 1 sek?) suorittimella on yksi prosessi kerrallaan laitteiston näkökulma ja aikaskaala (1 ms, 1 µs, 1 ns?) Muut prosessit ovat odottamassa jotakin suoritinta?, I/O:ta?, viestiä toiselta prosessilta? vapaata muistitilaa 2 rosessi ääosa 2:n tiedoista muistissa suoritin prosessi 2 väylä ohjain rosessi 1 rosessi 2 rosessi 3 rosessi 1 muisti levy Data - ohjelmien -KJ:n Ohjelmakoodit Ohjelma Ohjelma Q rosessin vaihto (4) uorittimella suoritusvuorossa olevan prosessin vaihtaminen Tapahtuu aika usein keskimäärin noin 2000-3000 konekäskyn välein? Esim. 50-500 kertaa sekunnissa? Isooperaatio - paljon kopiointia satoja konekäskyjä 50-500? 3 4 luonti rosessin elinkaari (9) ready-to-run valmis suoritukseen odottaa rosessin viisi suoritustilaa Milloin tilanvaihto tapahtuu Mitä tilanvaihdossa tapahtuu? running poistettu tai tapettu Mitä suoritin tietää olevasta prosessista? 5 rosessin esitysmuoto järjestelmässä (4) CB - rosessin kuvaaja eli kontrollilohko (CB - process control block) isohko tietue, joka sisältää kaiken yhdestä prosessista muistialueet, tiedostot, tiedostojen käsittelykohdat ei oleville myös: suorittimen tila (laiterekisterit, MM:n rekisterit, kontrollirekisterit) joka prosessista oma CB luodaan prosessin luonnin yhteydessä ja tuhotaan prosessin päättyessä käyttöjärjestelmärutiinit manipuloivat CB:tä 6
rosessin kuvaajan sisältö (9) rosessin tunniste 14023 rioriteetti suorittimen vuoronantoa varten 143 rosessin tila ja/tai odottamisen syy -to- uoritinympäristö talletettuna odottamisen aikana rekisterit, C,, F, tilarekisterit euraavaksi suoritettavan käskyn osoite Main {} oikkeuskäsittelijöiden osoitteet (ellei oletusarv.) Aikaviipale Käytössä olevat muistialueet, aukiolevat tiedostot KJ:n hallintotietoa (kokonaisaika, etc etc) rosessin tilanvaihdon toteutus (9) rosessin tilanvaihto tapahtuu siirtämällä prosessi (sen CB) jonosta toiseen ready-to-run -jono (tai jonot) running-jono jota ei oikeastaan ole olemassa -jono joka tyypille oma jononsa esim: laitteen I/O:n valmistumista odottavat esim: näppäimistön painallusta odottavat esim: kellolaitekeskeytystä odottavat esim: prosessilta 1345 signaalia odottavat 7 8 rosessit jonoissa (1) KJ esimerkki: I/O keskeytys (5) -to- 1056 1766 unning 0188 0036 7654 9878 -to- Q unning 0555 Msg from 1345 2222 Vuoronanto: valitse seuraava prosessi eady-to-un -jonosta ja siirrä se suoritukseen C:lle (kopioi tämän prosessin suorittimen tila suorittimelle) rosessin 9878 kuvaaja (CB) 9 Msg from I/O keskeytys laitteelta prosessille? uoritin havaitsee keskeytyssignaalin ja suorittaa I/O keskeytyskäsittelyrutiinin (:n ympäristössä) siirretään -to- jonoon :n suoritus jatkuu vai jatkuuko? 10 KJ esimerkki: I/O keskeytys (ei anim) KJ esim: aikaviipalekeskeytys (7) -to- Q unning -to- Q Q unning Msg from Msg from I/O keskeytys laitteelta prosessille? uoritin havaitsee keskeytyssignaalin ja suorittaa I/O keskeytyskäsittelyrutiinin (:n ympäristössä) siirretään -to- jonoon :n suoritus jatkuu vai jatkuuko? 11 saa aikaviipalekeskeytyksen? siirretään takaisin -to- jonoon euraava prosessi saa suoritusvuoron Entä jos olisi pyytänyt levy I/O:ta :ltä? 12
KJ esim: aikaviipalekesk. (ei anim) -to- Q unning Msg from saa aikaviipalekeskeytyksen? siirretään takaisin -to- jonoon euraava prosessi saa suoritusvuoron Entä jos olisi pyytänyt levy I/O:ta :ltä? rosessin vaihto (4) Vaihdon tekee KJ rutiini sillä hetkellä suorittavan prosessin ympäristössä Talleta vanhan prosessin suoritinympäristö suorittimelta omalle talletusalueelle muistiin talleta kaikki suorittimella olevat tiedot muistiin Kopio uuden prosessin suoritinympäristö omalta talletusalueeltaan suorittimelle lataa kaikki suorittimen rekisterit (myös C!) uden prosessin suoritus jatkuu täsmälleen siitä mihin viime kerralla jäätiin sama konekäsky, käytännössä sama suoritusympäristö! usein keskellä prosessin vaihtoa suorittavaa KJ- rutiinia 13 14 rosessin prioriteetti (3) rosessin tärkeysjärjestys suorittimella esim. pieni numero iso prioriteetti Joka prioriteetti(luokalle) oma -to- jononsa KJ prosesseilla parempi prioriteetti kuin käyttäjätason prosesseilla tosiaikasovelluksen prosesseilla parempi prioriteetti kuin KJ prosesseilla muistakaa antaa KJ:lle aikaa aina joskus! rioriteetti voi vaihdella prosessin elinaikana paljon suoritinaikaa huonompi prioriteetti kauan -to- jonossa parempi prioriteetti (prosessi siirretään korkeamman prioriteetin -to- jonoon) 15 Käyttäjän näkökulma (käyttö)järjestelmään Miten järjestelmä toimii minun ohjelmani kanssa? Onko järjestelmä riittävän nopea pelaamaan suosikkipeliäni isolla näytöllä? Onko minun helppo asentaa uusi ohjelma koneelle? Onko minun helppo muuntaa (portata) ohjelmani tähän käyttöjärjestelmään? Miten muistin lisääminen vaikuttaisi minun ohjelmani nopeuteen? 16 Käyttöjärjestelmän näkökulma (käyttö)järjestelmään Ovatko kaikki systeemin resurssit mahdollisimman hyvässä käytössä? Mikä on keskimääräinen jonon pituus (prosessien lukumäärä) suorittimella? Minkä osan ajasta suoritin odottaa järkevää työtä? Minkä osan ajasta kovalevyn hakuvarsi on liikkeessä? Miten usein datamuistiviitteet löytyvät välimuistista? Miten muistin lisääminen vaikuttaisi nopeuteen? Käyttöjärjestelmä käyttöliittymänä laitteistoon Loppukäyttäjälle (ihmiselle) ovellusohjelmalle iilottaa laitteiston erityispiirteet käyttäjiltä käskykanta Käyttäjät /sovellukset konekäskynrakenne suorittimen toteutus ja suorittimien lukumäärä KJ I/O:n toteutus I/O-laitteiden sijainti HW 17 18
Käyttöjärjestelmän tavoitteet Laiteriippumaton (HWriippumaton) käyttöliittymä laitteistoon KJ järjestelmää on helppo käyttää järjestelmä antaa reilua palvelua kaikille sovellukset on helppo tehdä sovellukset helppo siirtää muista järjestelmistä ovellukset KJ:n laiteriippumaton taso KJ:n laitesidonnainen taso HW Käyttöjärjestelmän tavoitteet (jatk) Järjestelmän resurssien tehokas hallinta kaikista resursseista saatava maksimihyöty joustava resurssien yhteiskäyttö tiukka tietosuoja 19 20 Käyttöjärjestelmä resurssien vartijana uoritinaikaa reilusti kaikille kukaaan ei odota suoritinta ikuisesti kriittiset prosessit saavat ajoissa suoritinaikaa Tiedostojen (koodi, data) tehokas käyttö laitteistosta ja sijainnista riippumaton käyttö helppo yhteiskäyttö ja samalla tietojen suojaus Tietoliikenneverkkojen käyttö laiteriippumatoin käyttö Hallintokirjanpito KJ järjestelmän eheyden turvaajana Varauduttu kaikkiin mahdollisiin virheisiin ovellusohjelmat eivät voi häiritä KJ:tä tai muita prosesseja tahallaan (esim. tietokonevirukset) vahingossa (yleisin tapaus) Järjestelmä ei lukkiudu tai kaadu KJ:n omat tietorakenteet aina eheitä sovellusohjelmat eiväy koske KJ:n tietorakenteisiin sovellusohjelmat aina lopulta antavat vuoron KJ:lle 21 22 Käyttöjärjestelmän rakenne (4) rosessien hallinta prosessien luonti, tuhoaminen prosessien välinen viestintä (IC, Inter-rocess Comm.) Kenelle suoritinaikaa ja milloin? Muistin hallinta Miten keskusmuistia varataan eri prosessien käyttöön? kunkin prosessin muistitilan hallinta Tiedostojen ja laitteiden hallinta Miten tiedostoja voidaan lukea/kirjoittaa? Verkon hallinta Miten kommunikoida muiden koneiden kanssa? Käyttöjärjestelmän toteutus (5) Joukko prosesseja ja proseduureja prosessit elävät omaa elämäänsä (etuoikeutetussa tilassa eli root ina?) koko ajan swapper (nix) - muistinhallintaprosessi init prosessi (nix) - kaikkien käyttäjätason prosessien äiti laiteajurit proseduurit suoritetaan sen hetkisen prosessin ympäristössä (etuoikeutetussa tilassa?) keskeytyskäsittelijät saavat kontrollin aina tarvittaessa keskeytykset, VC, viestit ajastimet ja muut keskeytykset 23 24
KJ-palvelun kontrollin palautus Aliohjelmakutsut CALL EXIT VC VC IET Viestit viesti vastausviesti (lähettäjä odottaa vastausta ECEIVE:ssä) Ajastimet ja muut keskeytykset keskeytys IET IIÄNNÄN HIEAKIA keskeytys muuttujat OVELL laiteriippumaton taso KÄYTTÖJÄJETELMÄ laiteajurit LAITEOHJAIMET 25 syöttö tulostus Aliohjelmana (eli proseduurina) laiteajuri suoritetaan KJ-rutiinina tavallisen VC-kutsun kautta Vain yksi kutsu kerrallaan? Miksi? Miten voidaan valvoa? VC Laiteajuri aliohj 27 Aliohjelmana (eli proseduurina) laiteajuri suoritetaan KJ-rutiinina tavallisen aliohjelmakutsun tai VC-kutsun kautta osa tai kaikki koodista voi olla etuoikeutettua Vain yksi kutsu kerrallaan? Miksi? Miten voidaan valvoa? call exit ei etuoik. osa VC Laiteajuri (osa etuoikeut.) etuoik. osa 28 rosessina proseduurina kutsuttu laiteajurin tynkä (stub) lähettää I/O-pyynnön viestinä laiteajuriprosessille ja odottaa vastausta tynkä voi olla käyttäjätilainen ajuriprosessi voi ola (joskus) etuoikeutettu vaatii prosessien välistä viestintää Laiteajuri pros Laiteajuri stub msg receive send call -- Jakson 8 loppu -- [Tane99] msg exit receive send 29 Lisää tietoa? KJ kurssit, IO, HajJärj 30