Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet
Käyttöjärjestelmä ja sovellukset Käyttöjärjestelmän tarkoitus tarjoaa käyttäjälle liitynnän laitteiston käyttöön suorittaa sovelluksia Mistä sovellus koostuu? Miten sovellusten vaihto tehdään? Mitä reunaehtoja sovellusten suorittamiselle on?
Sovellukset prosesseina Miten prosessit kuvataan käyttöjärjestelmässä? Käyttöjärjestelmän pitää pystyä vaihtamaan suoritusta prosessien välillä määrittämään resursseja prosesseille ja suojata prosessit toisiltaan mahdollistaa tietojen vaihto prosessien välillä mahdollistaa prosessien synkronisointi
Sovellus ja resurssit Ei ole järkevää kirjoittaa sovelluksia käyttämään suoraan jotakin tiettyä laitteistoa Käyttöjärjestelmä tarjoaa sovellukselle liitynnän resursseihin Lisäksi KJ antaa jonkinlaisen kuvauksen saatavilla olevista resursseista
Käyttöjärjestelmä sovellusalustana KJ tarjoaa resurssit monen sovelluksen käyttöön Tärkein resurssi on prosessori Prosessorin aikaa jaetaan sovellusten kesken I/O-laitteita pitää myös voida käyttää tehokkaasti
Prosessi??? Ohjelmakoodia (mahdollisesti jaettua) Joukko dataa Joukko ominaisuuksia, jotka kuvaavat prosessin tilaa
Prosessi??? Kun prosessia ajetaan, sillä on tunniste tila prioriteetti ohjelmalaskuri muisti-osoittimet dataa I/O tilatieto laskutustiedot Näitä hallitsee KJ
Trace prosessin jälki Prosessin käyttäytymistä kuvaa lista käskyjä Tätä listaa kutsutaan jäljeksi = trace
Prosessien suoritus ja dispatcher Suoritettavan prosessin vaihtamiseksi tarvitaan erityinen ohjelma, dispatcher Kaikki suoritettavat ohjelmat ovat muistissa, mukaan lukien dispatcher (ei oteta huomioon virtuaalimuistia)
Trace ja prosessit
Trace ja prosessori Timeout I/O
Prosessin tilat yksinkertaistettu versio
Prosessijono
Prosessien luonti KJ luo uuden prosessin ja siihen liittyvän tietorakenteen Myös käynnissä oleva prosessi voi luoda uuden, jos se on sallittua: Isäprosessi = Parent (alkuperäinen, luo uuden prosessin) Lapsiprosessi = Child (uusi prosessi)
Prosessien lopettaminen Pitää olla keino ilmoittaa prosessin loppumisesta Esimerkkejä tilanteista: Pysäytyskäsky (HALT), generoi keskeytyksen Käyttäjän toiminto (esim. ohjelman lopetus) Virhetilanne Isäprosessin lopettaminen
Prosessimalli 5 tilaa
Blocked-tila (WAIT) Jos prosessi odottaa jotain resurssia tai tapahtumaa, niin sen tilaksi tulee Blocked (tai WAIT) Tämän prosessi tekee yleensä omasta pyynnöstään Kun resurssi saadaan tai tapahtuma toteutuu, niin prosessi siirtyy takaisin Ready -tilaan
Kaksi prosessijonoa
Suspend-tila Prosessori on nopeampi kuin I/O jopa kaikki prosessit voivat odottaa I/O:ta swapataan nämä levylle, jotta saadaan vapautettua muistia ja käytettyä prosessoria muille prosesseille Blocked -tila muuttuu Suspend -tilaksi, kun prosessi heitetään levylle Eli tulee vielä lisää tiloja: Blocked/Suspend Ready/Suspend
Kaksi Suspend-tilaa
Prosessien tiedot ja resurssit Mitä resursseja prosessit käyttävät? Mitä tietoa prosesseista?
Prosessien resurssit
Prosessien tiedot ja kontrollirakenteet KJ tarvitsee tietoa prosessien tilasta ja resursseista Nämä tiedot ovat eräänlaisissa tauluissa Kontrollitaulut Muisti I/O Tiedostot Prosessit
Muistitaulut Käytetään keskusmuistin ja virtuaalimuistin seurantaan Tiedot Keskusmuistin allokointi prosesseille Virtuaalimuistin allokointi prosesseille Suojaustiedot jaetuille muistialueille Virtuaalimuistin hallintatiedot
I/O-taulut Käytetään I/O-laitteiden hallintaan KJ:n tarvitsee tietää onko laite käytettävissä vai varattu I/O-operaation tila muistialue, jota käytetään tiedonvaihtoon I/O-laitteen kanssa
Tiedosto-taulut Pitää yllä tietoa olemassa olevista tiedostoista tiedostojen paikasta tiedoston tilasta muista attribuuteista Voi olla myös erillinen tiedostojärjestelmä (yleensä)
Prosessi-taulut Ylläpitää tietoa prosesseista tila prosessi-id paikka muistissa Process control block = prosessin hallintablokki Prosessitaulun tiedot täytyy jotenkin linkittää muiden taulujen tietoihin
Prosessien ominaisuudet Kolme ryhmää: Prosessin tunnistustieto - ID Prosessin tilatieto prosessorin rekisterit, PSW Prosessin hallintatieto KJ tarvitsemat tiedot prosessien hallintaa varten
Prosessit virtuaalimuistissa
Prosessin hallintablokki Tärkein tietorakenne KJ:ssä Määrittelee koko käyttöjärjestelmän tilan Tarvitsee hyvän suojauksen Virheellinen ohjelmakoodi voi tuhota tärkeää tietoa KJ ei pysty enää hallinnoimaan prosessia
Suoritustilat user & system modes Prosessorit tukevat vähintään kahta suoritustilaa User mode ei-etuoikeutettu tai vähemmän etuoikeutettu tila käyttäjän ohjelmat ajetaan tässä tilassa System mode etuoikeutettu tai enemmän etuoikeutettu tila käyttöjärjestelmän ydin (kernel) ajetaan tässä tilassa
Prosessin luonti KJ tekee seuraavat asiat prosessia luodessaan: antaa yksikäsitteisen prosessi ID:n prosessille allokoi tilan prosessille alustaa prosessin hallintablokin tekee tarpeen mukaiset linkitykset (eri taulut) päivittää mahdolliset muut tietorakenteet
Prosessien suorituksen vaihto Mikä laukaisee prosessien suorituksen vaihtamisen? Mechanism Cause Use Interrupt Trap External to the execution of the current instruction Associated with the execution of the current instruction Reaction to an asynchronous external event Handling of an error or an exception condition Supervisor call Explicit request Call to an operating system function Mitä tarvitsee tehdä eri tietorakenteille, jotta suoritusta voidaan vaihtaa prosessilta toiselle? paljon suunnittelussa huomioon otettavia asioita
Prosessin tilan vaihto Kun suoritus vaihdetaan prosessilta toiselle 1. talletetaan prosessorin tila (PC, rekisterit, ) 2. päivitetään nykyisen prosessin hallintablokki 3. siirretään prosessin hallintablokki oikeaan jonoon (ready, blocked, suspended, ) 4. valitaan seuraava suoritettava prosessi 5. päivitetään uuden prosessin hallintablokki 6. päivitetään muistinhallintarakenteet 7. palautetaan uuden prosessin konteksti prosessorille
KJ:n suoritus??? Onko KJ prosessi? Miten KJ:n suoritusta hallitaan? Kolme vaihtoehtoa: erillinen ydin (kernel) funktiot osa käyttäjän prosessseja funktiot erillisinä prosesseina
Ei-prosessipohjainen ydin KJ:n ydintä ajetaan prosessien ulkopuolella Yleinen vanhoissa käyttöjärjestelmissä Käyttöjärjestelmän funktiot ajetaan etuoikeutetussa moodissa
KJ ajetaan käyttäjän prosessien sisällä KJ:n funktiot ajetaan käyttäjän prosessien sisällä Ei tarvitse vaihtaa prosessia KJ:n rutiinien ajoa varten Yleinen pienten järjestelmien KJ:ssä (PC:t, työasemat)
Prosessipohjainen ydin KJ ajetaan prosesseina Pieni osa koodista prosessien ulkopuolella (prosessien vaihtoon) Voidaan rakentaa modulaarinen KJ Hyvä ratkaisu moniprosessorijärjestelmissä
Turvallisuusnäkökohta? KJ asettaa prosesseille tietyt oikeudet (=privileges) KJ:n ytimen tehtävät suoritetaan yleensä korkeimmilla (root, supervisor, ) oikeuksilla Mikään käyttäjän prosessi ei saisi saada korkeampia oikeuksia (turhaan)
Tehtävä: Windows-arkkitehtuuri Selvitä, minkälainen on Windows NT/2000/XP/Vistakäyttöjärjestelmän arkkitehtuuri Mitä osia ajetaan system/kernel mode:ssa ja mitä vastaavasti user mode:ssa? Mikä on kernelin tyyppi? (monolithic, microkernel, hybrid)