Luentokerta 5 Ohjelman toteutus järjestelmässä (prosessi, käyttöjärjestelmä) Järjestelmän ulkoinen muisti

Samankaltaiset tiedostot
Muistihierarkia Kiintolevyt I/O:n toteutus

Luento 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Luento 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä

Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi Prosessin esitysmuoto järjestelmässä Käyttöjärjestelmä KJ-prosessit

Järjestelmän ulkoinen muisti I/O

Jakso 8 Ohjelman toteutus järjestelmässä

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessin elinkaari (10) Prosessin vaihto (4) Prosessin esitysmuoto järjestelmässä (4)

Muistihierarkia Kiintolevyt I/O:n toteutus

Prosessi (4) Luento 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4)

Prosessi (4) Jakso 8 Ohjelman toteutus järjestelmässä. Prosessi. Prosessin vaihto (4) Prosessin elinkaari (9)

Jakso 8 Ohjelman suoritus järjestelmässä

Jakso 8 Ohjelman suoritus järjestelmässä

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Prosessi (4) Suorituksessa olevan ohjelman esitysmuoto järjestelmässä. Jakso 8 Ohjelman suoritus järjestelmässä. Prosessin elinkaari (9)

Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Luento 8 Ohjelman toteutus järjestelmässä

Luento 9 Järjestelmän ulkoinen muisti. Muistihierarkia Kiintolevyt Muut pyörivät levyt I/O:n toteutus

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Luento 8 Ohjelman toteutus järjestelmässä. Tietokonejärjestelmä. Prosessi (4) Prosessi. Prosessin elinkaari (11) Prosessin vaihto (3)

Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia Kiintolevyt I/O:n toteutus. Käännös, Linkitys Lataus

Tietokoneen toiminta Teemu Kerola, Copyright Muistihierarkia

Luento 9 Järjestelmän ulkoinen muisti. Muistihierarkia Kiintolevyt Muut pyörivät levyt I/O:n toteutus

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia. Virtuaalimuisti. Tiedostojärjestelmä. Levymuistin saantiaika. Tietokoneen toiminta Luento 9, Ulkoinen muisti ja I/O 1

Tiedon muuttumattomuuden tarkistus Järjestelmän sisäinen muisti Ohjelman toteutus järjestelmässä

Tietokoneen toiminta Copyright Teemu Kerola Konekohtainen, jokaisella omansa Käskyt ovat 1 tai useamman tavun mittaisia

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus.

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Luento 9 Järjestelmän ulkoinen muisti

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

Luento 9 Järjestelmän ulkoinen muisti

Luento 9 Järjestelmän ulkoinen muisti

Muistihierarkia (4) Luento 9 Järjestelmän ulkoinen muisti. Ohjelman muistiosoitteet (3) Virtuaalimuisti (3) Virtuaalimuistin toteutus (2)

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Jakso 5 Suoritin ja väylä

Jakso 5 Suoritin ja väylä

Luento 5 (verkkoluento 5) Suoritin ja väylä

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Luento 4 Aliohjelmien toteutus

Jakso 5 Suoritin ja väylä. Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Luento 5 (verkkoluento 5) Suoritin ja väylä

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

1. Keskusyksikön rakenne

Käyttöjärjestelmät: prosessit

Luento 5 Suoritin ja väylä

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Jakso 4 Aliohjelmien toteutus

Aliohjelmien toteutus Suoritin ja väylä

Käyttöjärjestelmät II

Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Luento 5 Suoritin ja väylä

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2010

Tietokoneen toiminta Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2010

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne. Käskyjen nouto- ja suoritussykli (5)

Käyttöjärjestelmät. Tietokoneen rakenne. Stallings, Luku 1. KJ-I S2003 / Auvo Häkkinen, CT50A2602 / Leena Ikonen 1-1

Käyttöjärjestelmät II

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, K2000

Ulkoinen muisti ja IIO:n toteutus

Luento 4 Aliohjelmien toteutus

Luento 5 Suoritin ja väylä

Luento 5 Suoritin ja väylä

Tietokoneen toiminta, K Tavoitteet (4)

ltöä rjestelmä Luento 2: LAITTEISTOSTA Tietokonejärjestelm KESKUSYKSIKKÖ Keskusyksikkö Kuva 1.1 KJ-I S2005 / Tiina Niklander & Auvo Häkkinen 2-1

Jakso 4 Aliohjelmien toteutus

Luento 1 Tietokonejärjestelmän rakenne

Luento 12 Yhteenveto

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 suorittimen rakenne (1) TTK-91 muistin rakenne

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? 29/01/2001 Teemu Kerola, Copyright 2001

Luento 4 Aliohjelmien toteutus

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat?

Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright Tavoitteet (4)

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Tavoitteet (4) Luento 12 Yhteenveto. Keskeisiä asioita. Mitä hyötyä tästä on? (2) Esimerkkikone: TTK-91 laitteisto suoritin - CPU

Luento 4 Aliohjelmien toteutus

Kertausluento 2 (lu04, lu05, lu06) Aliohjelmien toteutus Suoritin, väylä, tiedon esitys

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Transkriptio:

Luentokerta 5 Ohjelman toteutus järjestelmässä (prosessi, käyttöjärjestelmä) Järjestelmän ulkoinen muisti Prosessi, sen esitysmuoto Käyttöjärjestelmä KJ-prosessit Muistihierarkia Kiintolevyt I/O:n toteutus 1

Prosessi = ohjelma järjestelmässä 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 vain 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

Prosessi Suoritin prosessi P2 prosessi P1 prosessi P2 prosessi P3 prosessi Q1 Muisti Data - ohjelmien - KJ:n Ohjelmakoodit Ohjain Väylä pääosa P2:n tiedoista on edelleen muistissa! Levy ohjelma P ohjelma Q 3

Prosessin vaihto 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? 50-500? 0? 4

Prosessin elinkaari ready-to-run valmis suoritukseen running suorituksessa luonti odottaa poistettu tai tapettu waiting Prosessin 5 suoritustilaa Milloin tilanvaihto tapahtuu? Mitä tilanvaihdossa tapahtuu? Mitä suoritin tietää suorituksessa olevasta prosessista? 5

Prosessin kuvaaja PCB - Prosessin kuvaaja eli kontrollilohko (Process Control Block, myös process table entry) isohko tietue, joka sisältää kaiken yhdestä prosessista muistialueet, tiedostot, tiedostojen käsittelykohdat odottavilla prosesseilla myös: suorittimen tila (laiterekisterit, MMU:n rekisterit, kontrollirekisterit) joka prosessista oma kuvaaja luodaan prosessin luonnin yhteydessä ja tuhotaan prosessin päättyessä käyttöjärjestelmärutiinit manipuloivat PCB:tä 6

Prosessin kuvaajan sisältö Prosessin tunniste 14023 Prioriteetti suorittimen vuoronantoa varten 143 Prosessin tila ja/tai odottamisen syy R-to-R Suoritinympäristö talletettuna odottamisen aikana rekisterit, PC, SP, FP, tilarekisterit Seuraavaksi suoritettavan käskyn osoite Main {} Poikkeuskäsittelijöiden osoitteet (ellei oletusarv.) Aikaviipale Käytössä olevat muistialueet, aukiolevat tiedostot KJ:n hallintotietoa (kokonaisaika, etc etc) 7

Prosessin tilanvaihdon toteutus 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 odottaa suoritinta suorituksessa odottaa jotakin esim: laitteen Disk1 I/O:n valmistumista odottavat esim: näppäimistön painallusta odottavat esim: kellolaitekeskeytystä odottavat esim: prosessilta 1345 signaalia odottavat ready-to-run valmis suoritukseen running suorituksessa luonti odottaa 8 poistettu tai tapettu waiting

Prosessit jonoissa R-to-R 1056 1766 Running 0188 Disk1 0036 7654 9878 waiting Timer 0555 Msg from 1345 2222 Prosessin 9878 kuvaaja (PCB) Vuoronanto: valitse seuraava prosessi Ready-to-Run -jonosta ja siirrä se suoritukseen CPU:lle (kopioi tämän prosessin suorittimen tila suorittimelle) 9

Prosessin vaihto Vaihdon tekee KJ rutiini sillä hetkellä suorittavan prosessin ympäristössä Talleta vanhan prosessin suoritinympäristö (eli suorittimen tila) suorittimelta omalle talletusalueelle muistiin Rekisterit, myös PC (tästä jatketaan joskus ) Ei talteen, jos vanha prosessi tapetaan Kopioi 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 10

Prosessin prioriteetti Prosessin tärkeysjärjestys suorittimella esim. pieni numero iso (parempi) prioriteetti (tai toisinpäin) 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 11

Porinaa prosesseista Pikaäänestys: Kuinka usein prosessia vaihdetaan? Kauanko prosessin vaihto kestää? Jos levytapahtumaa oli odottamassa 3 prosessia, miten tiedetään mikä niistä pitää herättää? Mitä hyötyä saavutetaan, kun joka prioriteettiluokalle on oma Ready-to-Run (R-toR) -jono sen sijaan, että olisi vain yksi jono? 12

Käyttöjärjestelmä Laiteriippumaton (HW-riippumaton) rajapinta laitteistoon Helpottaa käyttöä KJ Jakaa palvelua kaikille reilusti Resurssien hallinta ja valvonta Sovellukset on helpompi toteuttaa ja siirtää muualta sovellukset KJ:n laiteriippumaton taso KJ:n laitesidonnainen taso HW 13

Resurssien hallinnan tavoitteita Kaikista resursseista maksimihyöty Miten optimoida resurssien käyttö? Kuka osti liikaa levyjä? Joustava resurssien yhteiskäyttö Lue tiedosto levyltä vai verkkopalvelimelta? Tiukka tietosuoja Kuka muu kuin Pekka tai Maija luki tietojani? Estä luvaton käyttö 14

Resurssien hallinta ja valvonta Suorittimen vuorottaminen jaa 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 15

KJ 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 16

Käyttöjärjestelmän rakenne 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? 17

Käyttöjärjestelmän toteutus Joukko prosesseja ja/tai aliohjelmia prosessit elävät omaa elämäänsä (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 18

KJ palvelun kontrollin palautus Explisiittinen KJ-palvelun kutsu = Palvelupyyntö Implisiittinen KJ-palvelun kutsu Aliohjelmakutsut CALL RETURN SVC SVC IRET Viestit viesti vastausviesti (lähettäjä odottaa vastausta RECEIVE:ssä) Ajastimet ja muut keskeytykset keskeytys IRET 19

KJ prosessit ja aliohjelmat suoritin käyttäjätasolla suoritin etuoik. tasolla Sovellus P (käyttäjätaso) KJ prosessi ServProc-1 (käyttäjätaso) SVC MSG MSG KJ palvelu PrivSub-Msg (etuoik. taso) MSG MSG KJ prosessi PrivProc-1 (etuoik. taso) Sovellus Q (käyttäjätaso) SVC SVC CALL CALL SVC CALL KJ (KJ) aliohj. Sub-1 (käyttäjätaso) SVC KJ aliohj. PrivSub-1 (etuoik. taso) 20

KJ esimerkki: laiteajuri Aliohjelmana (eli proseduurina) laiteajuri suoritetaan KJ-rutiinina tavallisen SVC-kutsun kautta käyttäjätilassa vain yksi kutsu kerrallaan suorituksessa? miksi? miten voidaan valvoa? sov. prosessi laiteajuri aliohj. iret 21

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? sov. prosessi laiteajuri (osa etuoikeutettuna) return ei etuoik. osa iret etuoik. osa 22

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ää sov. prosessi laiteajuri stub laiteajuri pros. msg msg 23

Muistihierarkia Ulkoinen muisti on halvempaa toteuttaa per tavu Ulkoinen muisti on paljon hitaampaa kuin sisäinen muisti Aika/tila optimointi suuret tietomäärät täytyy (kannattaa) kustannussyistä pitää ulkoisessa muistissa pienet tietomäärät täytyy (kannattaa) tehokkuussyistä pitää sisäisessä muistissa Kaiken viitatun tiedot tulee suoritusaikana olla sisäisessä muistissa! Fig 4.1 [Stal10] 24

Virtuaalimuisti Osa muistihierarkiaa Vastaus ongelmaan miten tehdä suoritusaikaisesta muistista yhtä suuri kuin levymuisti ja yhtä nopea kuin keskusmuisti? Kaksitasoinen: keskusmuistissa kulloinkin käytössä olevat alueet levyllä kaikki tiedot kopiointi tarvittaessa Muisti väylä levy 25

Virtuaalimuistin toteutus Toteutustavat kanta- ja rajarekisterit sivutus (segmentointi ja sivuttava segmentointi) Pääosa toteutuksesta ohjelmistotasolla Laitteistotuki MMU muistinhallintayksikkö nopeuttaa viitatun muistipaikan todellisen osoitteen laskentaa osoitetta ei tarvitse laskea usealla konekäskyllä, kun MMU tekee sen laitteistotasolla rakenne ja toiminta vaihtelee virtuaalimuistin toteutustavan mukaan Lisää tietoa? Käyttö- järj. Tietokoneen rakenne 26

Tiedostojärjestelmä KJ:n osa, hallitsee kaikkia tiedostoja Valvoo oikeuksia tiedostoa avattaessa Muuntaa tiedostonimet fyysisiksi osoitteiksi Ylläpitää taulukoita, joista näkee mitä kohtaa mistäkin tiedostosta kukin prosessi on käsittelemässä Tiedostojärjestelmä lukee ja kirjoittaa tiedostoja suurina kerralla käsiteltävinä lohkoina (0.5-8 KB?) käyttäjätason prosessit käsittelevät tiedostoja tavuittain eikä niiden tarvitse tietää tiedoston todellista fyysistä rakennetta (KJ:n laiteajuri huolehtii siitä) 27

Tiedoston talletus levylle Tiedosto koostuu useista lohkoista lohko per sektori (lohko per usea sektori?) Levyn hakemistossa on tieto kunkin tiedoston käyttämistä lohkoista luetaan lohkot annetussa järjestyksessä hakemisto alkio FileA (unix) indeksi lohko lohko lohko lohko lohko 28

Levyn käyttö Virtuaalimuistin tukimuistina Tiedostojen talletukseen Virtuaalimuistin voi toteuttaa tiedostojärjestelmän päälle (sitä käyttäen), tai päinvastoin! Muisti page page page page page page page page sivu (tdsto) sivu (tav.) Väylä Levy VM tukimuisti sivu sivu sivu sivu sivu sivu sivu sivu Tiedostot lohko lohko lohko lohko 29

Levymuistin saantiaika Tiedon (lohkon) osoite: levypinta + ura + sektori laiteajuri etsii KJ-taulukoista loogisen osoitteen perusteella Figs 6.5&6.2 [Stal10] 30

Levymuistin saantiaika Saantiaika: (seek time) hakuvarren siirtoaika Esim: keskiarvo 6.3 ms, min-max 2-15 ms? odota kunnes sektori kohdalla Esim: pyörähdysviive kun 3600 rpm: 8.33 ms (keskim. puolen kierroksen aika) (rotational delay) siirrä sektorin verran tietoa Esim: pyör.aika / sekt. lkm = 0.42 ms (data transfer time) Fig 6.2 [Stal10] 31

Laiteohjain (I/O Moduuli) Muisti väylä suoritin käyttäjäprosessi laiteajuri KJ prosessi (tai aliohjelma?) laite data c/s laiteohjain laiteohjainprosessi (device controller, device controller process) laite Ks. Fig 7.4 [Stal10] 32

Laitteiden käytön toteutus ks. laiteohjainkuva (ed. kalvo) Käyttäjäohjelma kutsuu käyttöjärjestelmän laiteajuria tekemään I/O:n. Laiteajuri suoritetaan samalla suorittimella kuin käyttäjäohjelmakin. Laiteajuri ohjaa laitteen toimintaa laitteen laiteohjaimella olevien kontrollirekisterien (muistialue c ) avulla Laiteajuri voi lukea laitteen tilatietoa laiteohjaimella olevien statusrekisterien (muistialue s ) avulla Laiteajuri voi lukea (kirjoittaa) laitteen lukemaa (laitteelle kirjoitettavaa) tietoa laiteohjaimella olevien datarekistereiden (muistialue data ) avulla Kontrolli-, status- ja datarekisteri kolmikko muodostaa I/O portin suorittimen näkökulmasta 33

Laiteohjaimen rekistereihin viittaaminen Ongelma: miten suorittimella suorittavan laiteajuri viittaa eri kortilla oleviin rekistereihin (muistiin)? Ratkaisu 1: omat I/O-konekäskyt tätä tarkoitusta varten käskyssä annetaan laiteohjaimen identifikaatio ja laiterekisterin nro (oma I/O osoiteavaruus) vaikea laajentaa käyttöä uusiin laitteisiin, joilla laiterekisterit voivat olla hyvinkin erilaisia suorittimen konekäskyjä ei voi muuttaa ks. laiteohjainkuva x86: IN, OUT INS, OUTS KOKSI: IN, OUT 34

Ratkaisu 2: muistiinkuvattu I/O Voisiko tiedostoja lukea muistiosoitteiden kautta? Laiteajuri lukee/kirjoittaa laiteohjaimella olevia rekistereitä (data, status/kontrolli) tavallisilla muistin luku/kirjoitus käskyillä ei tarvita erillisiä I/O-konekäskyjä! laiteohjaimella olevat laiterekisterit ovat samanlaista viitattavaa muistia kuin normaali muisti muistisoitteen ensimmäiset bitit (ei siis käskykoodi) valitsevat, mille laitteelle (vai tavallisen muistiin) viittaus kohdistuu DiskCtr EQU 0x80000001 voidaan käyttää rinnan I/O käskyjen kanssa (laiterekistereihin voi siis viitata sekä I/O-käskyillä että muistiinkuvatun I/O:n avulla) esim. Intelin arkkitehtuurit ks. laiteohjainkuva load R1,=DiskRd store R2, DiskCtr 35

I/O tyypit Suora I/O: laiteajuri odottaa tiukassa silmukassa, kunnes laiteohjaimen statusrekisteri ilmoittaa I/O-pyynnön valmistuneen laiteajuri siirtää tietoa muistin ja datarekisterin välillä Epäsuora I/O: I/O:n odotusaikana suorittimella suoritetaan jotain muuta ohjelmaa Kun I/O-pyyntö valmistuu, laiteohjain antaa keskeytyksen (laitekeskeytys, I/O interrupt) suorittimelle, joka (jonkin ajan kuluttua) jatkaa kesken jäänyttä I/O-pyynnön esittänyttä ohjelmaa. laiteajuri siirtää tietoa muistin ja datarekisterin välillä (direct I/O, programmed I/O) (indirect I/O interrupt driven I/O) 36

Suora I/O Epäsuora I/O DMA I/O Device driver (laiteajuri) Input of a Block of data Direct I/O Fig 7.4 [Stal10] 37

I/O tyypit (jatkoa) DMA - Direct Memory Access Älykkäämpi laiteohjain Laiteohjain voi suoraan kopioida tiedot keskusmuistiin laiteajurin ei tarvitse laiterekistereitä käyttäen siirtää tietoa muistin ja datarekisterin välillä Tieto kulkee väylän kautta vain yhden kerran! Laiteohjain tekee paljon suuremman määrän työtä itsenäisesti (kuin epäsuorassa I/O:ssa) ennen suorittimelle annettavaa laitekeskeytystä Mitä haittaa DMA-laitteesta voi olla suorittimella suorittavalle prosessille? 38

Esimerkki: kirjoittimen laiteajuri ttk-91 koneelle Laitteella voi tulostaa kokonaislukuja yksi kerrallaan Muistiinkuvattu I/O, suora I/O Laiteportti kontrollirekisteri muistipaikka 1048576 = 0x80000 tilarekisteri muistipaikka 1048577 = 0x80001 datarekisteri muistipaikka 1048578 = 0x80002 Laiteajuri Print toimii etuoikeutetussa tilassa Kutsu: PUSH SP, =0 ; space for return value PUSH SP, X ; parameter to print SVC SP, =Print ; returns Success/Failure POP SP, R1 JNZER R1, TakeCareOfTrouble 39

Esim: laiteajurin toteutus ptrctr DC 1048576 ; control register address ptrstat DC 1048577 ; status register address ptrdata DC 1048578 ; data Print register PUSHR address SP ;save regs retval EQU -3 LOAD R1, pardata(fp) pardata EQU -2 Oleta: SVC:n ja IRET:n toteutus samalla tavalla kuin CALL ja EXIT Solution with no timeout STORE R1, @ptrdata ; data to print LOAD R1, =0 STORE R1, @ptrstat ; init (clear) state register LOAD R1, =1 STORE R1, @ptrctr ; give command to print ptrctl ptrstat ptrdata 1 01 200 See: driver.k91 Wait LOAD R1, @PtrStat ; check state register JNZER R1, Done JUMP Wait ; wait until I/O done Done LOAD R1, =0 ; return Success STORE R1, retval(fp) POPR SP ; recover regs IRET SP, =1 40

Tiedostopalvelin (Lähi)verkossa oleva palvelin Käytettäessä tiedoston (osien) kopio on muistissa (ja ehkä myös paikallisella levyllä) orig. tiedosto tiedoston kopio? Tiedostopalvelin suoritin muisti suoritin muisti väylä väylä levy levy 41

-- Luennon 5 loppu -- [Tane99] Lisää tietoa? KJ kurssi 42