Notes
Slide Show
Outline
1
Luento 8
Ohjelman toteutus järjestelmässä
  • Prosessi
  • Prosessin esitysmuoto järjestelmässä
  • Käyttöjärjestelmä
  • KJ-prosessit
2
Prosessi (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 suorituksessa 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?
3
Prosessi
4
Prosessin vaihto (4)
  • Suorittimella suoritusvuorossa olevan prosessin vaihtaminen
  • Tapahtuu aika usein
    • keskimäärin noin 2000-3000 konekäskyn välein?
    • esim. 50-500 kertaa sekunnissa?
  • Iso operaatio - paljon kopiointia
    • montako konekäskyä tähän kuluu?
5
Prosessin elinkaari (11)
  • Prosessin 5 suoritustilaa
    • Milloin tilanvaihto tapahtuu?
    • Mitä tilanvaihdossa tapahtuu?
6
Prosessin esitysmuoto järjestelmässä
  • PCB - Prosessin kuvaaja eli kontrollilohko
    (Process Control Block)
    • isohko tietue, joka sisältää kaiken yhdestä prosessista
      • muistialueet, tiedostot, tiedostojen käsittelykohdat
      • ei suorituksessa oleville myös: suorittimen tila
        (laiterekisterit, MMU:n rekisterit, kontrollirekisterit)
    • joka prosessista oma PCB
    • luodaan prosessin luonnin yhteydessä ja tuhotaan prosessin päättyessä
    • käyttöjärjestelmärutiinit manipuloivat PCB:tä
7
Prosessin kuvaajan sisältö (9)
  • Prosessin tunniste
  • Prioriteetti suorittimen vuoronantoa varten
  • Prosessin tila ja/tai odottamisen syy
  • Suoritinympäristö talletettuna odottamisen aikana
    • rekisterit, PC, SP, FP, tilarekisterit
  • Seuraavaksi suoritettavan käskyn osoite
  • Poikkeuskäsittelijöiden osoitteet (ellei oletusarv.)
  • Aikaviipale
  • Käytössä olevat muistialueet, aukiolevat tiedostot
  • KJ:n hallintotietoa (kokonaisaika, etc etc)
8
Prosessin tilanvaihdon toteutus (5)
  • Prosessin tilanvaihto tapahtuu siirtämällä prosessi (sen PCB) jonosta toiseen
    • ready-to-run jono (tai jonot)
    • running jono
      • ei oikeastaan ole olemassa
    • waiting jono
      • joka tyypille oma jononsa
      • esim: laitteen Disk1 I/O:n valmistumista odottavat
      • esim: näppäimistön painallusta odottavat
      • esim: kellolaitekeskeytystä odottavat
      • esim: prosessilta 1345 signaalia odottavat
9
Prosessit jonoissa (1)
10
KJ esimerkki: I/O keskeytys (5)
11
KJ esim: aikaviipalekeskeytys (3)
12
Prosessin 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 PC!)
  • Uuden 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
Prosessin prioriteetti (3)
  • Prosessin tärkeysjärjestys suorittimella
    • esim. pieni numero Þ iso (parempi) prioriteetti
  • Joka prioriteetti(luokalle) oma R-to-R 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 .... !
  • Prioriteetti voi vaihdella prosessin elinaikana
    • paljon suoritinaikaa Þ huonompi prioriteetti
    • kauan R-to-R jonossa Þ parempi prioriteetti
      (prosessi siirretään korkeamman prioriteetin
       R-to-R jonoon)
14
Käyttäjän näkökulma (käyttö)järjestelmään (5)
  • 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?
15
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ä) suorittimelle?
  • Minkä osan ajasta suoritin odottaa järkevää työtä?
  • Minkä osan ajasta kovalevyn hakuvarsi on liikkeessä?
  • Miten usein datamuistiviitteet löytyivät välimuistista?
  • Miten muistin lisääminen vaikuttaisi nopeuteen?
16
Käyttöjärjestelmä käyttöliittymänä laitteistoon
  • Loppukäyttäjälle (ihmiselle)
  • Sovellusohjelmille
  • Piilottaa laitteiston erityispiirteet käyttäjiltä
    • käskykanta
    • konekäskyn rakenne
    • suorittimen toteutus ja
      suorittimien lukumäärä
    • I/O:n toteutus
    • I/O-laitteiden sijainti


17
Käyttöjärjestelmän tavoitteet
  • Laiteriippumaton (HW-riippumaton) käyttöliittymä laitteistoon
    • järjestelmää on helppo
      käyttää
    • järjestelmä antaa reilua
      palvelua kaikille
    • sovellukset on helppo
      tehdä
    • sovellukset on helppo
      siirtää muista järjestelmistä
18
Käyttöjärjestelmän tavoitteet (jatk)
  • Järjestelmän resurssien tehokas hallinta
    • kaikista resursseista saada maksimihyöty
      • kuka osti liikaa levyjä?
    • joustava resurssien yhteiskäyttö
      • lue tiedosto levyltä vai verkkopalvelimelta?
    • tiukka tietosuoja
      • kuka muu kuin Pekka ja Maija luki tietojani?
19
Käyttöjärjestelmä resurssien vartijana
  • Suoritinaikaa reilusti kaikille
    • kukaan ei odota suoritinta ikuisesti
    • kriittiset prosessit saavat ajoissa suoritinaikaa
  • Tiedostojen (koodi, data) tehokas käyttö
    • laitteesta ja sijainnista riippumaton käyttö
    • helppo yhteiskäyttö ja samalla tietojen suojaus
  • Tietoliikenneverkkojen käyttö
    • laiteriippumaton käyttö
    • helppo yhteiskäyttö ja samalla tietojen suojaus
  • Hallintokirjanpito
20
KJ järjestelmän eheyden turvaajana
  • Varauduttu kaikkiin mahdollisiin virheisiin
  • Sovellusohjelmat 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 ovat aina eheitä
    • sovellusohjelmat eivät voi koskea KJ:n tietorakenteisiin
    • sovellusohjelmat aina lopulta antavat vuoron KJ:lle

21
Käyttöjärjestelmän rakenne (4)
  • Prosessien hallinta
    • prosessien luonti, tuhoaminen
    • prosessien välinen viestintä (IPC, Inter-Process Comm)
    • kenelle suoritinaikaa ja milloin?
  • Muistin hallinta
    • miten keskusmuistia varataan eri prosessien käyttöön?
    • kunkin prosessin muistitilan hallinta
    • yhteiskäyttö ja tiedon suojaus
  • Tiedostojen ja laitteiden hallinta
    • miten tiedostoja voidaan lukea/kirjoittaa?
    • yhteiskäyttö ja tiedon suojaus
  • Verkon hallinta
    • miten kommunikoida muiden koneiden kanssa?
22
Käyttöjärjestelmän toteutus (5)
  • Joukko prosesseja ja/tai aliohjelmia
    • prosessit elävät omaa elämäänsä (etuoikeutetussa tilassa eli root’ina?)
      • swapper (Unix) - muistinhallintaprosessi
      • init prosessi (Unix) - kaikkien käyttäjätason prosessien ”äiti”
      • laiteajurit
    • aliohjelmat suoritetaan sen hetkisen prosessin ympäristössä (etuoikeutetussa tilassa?)
      • keskeytyskäsittelijät
    • saavat kontrollin aina tarvittaessa
      • aliohjelmakutsut, SVC, viestit
      • ajastimet ja muut keskeytykset
23
KJ palvelun kontrollin palautus
  • Aliohjelmakutsut
    • CALL → RETURN
  • SVC
    • SVC → IRET
  • Viestit
    • viesti → vastausviesti 
      (lähettäjä odottaa vastausta RECEIVE:ssä)
  • Ajastimet ja muut keskeytykset
    • keskeytys → IRET
24
Prosessit ja aliohjelmat (7)
25
KJ esimerkki: laiteajuri
  • Aliohjelmana (eli proseduurina)
    • laiteajuri suoritetaan KJ-rutiinina tavallisen SVC-kutsun kautta
      • vain yksi kutsu kerrallaan suorituksessa?
        miksi? miten voidaan valvoa?
26
KJ esimerkki: laiteajuri (jatk.)
  • Aliohjelmana (eli proseduurina)
    • laiteajuri suoritetaan KJ-rutiinina tavallisen aliohjelmakutsun ja/tai SVC-kutsun kautta
      • osa tai kaikki koodista voi olla etuoikeutettua
      • vain yksi kutsu kerrallaan suorituksessa?
        miksi? miten voidaan valvoa?
27
KJ esimerkki: laiteajuri
  • Prosessina
    • 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 olla (joskus) etuoikeutettu
      • vaatii prosessien välistä viestintää
28
-- Luennon 8 loppu --