Luento 9 Järjestelmän ulkoinen Muistihierarkia Kiintot Muut pyörivät t I/O:n toteutus Muistihierarkia (4) ks. Fig. 2-18 [Tane99] Ulkoinen on halvempaa toteuttaa per tavu Ulkoinen on hyvin paljon hitaampaa kuin sisäinen Aika/tila optimointi suuret tietomäärät täytyy (kannattaa) kustannussyistä pitää ulkoisessa ssa pienet tietomäärät täytyy (kannattaa) tehokkuussyistä pitää sisäisessä ssa Kaiken viitatun tiedot tulee suoritusaikana olla sisäisessä ssa! 1 2 Virtuaali (3) Osa hierarkiaa Vastaus ongelmaan: miten tehdä suoritusaikaisesta sta yhtä suuri kuin ja yhtä nopea kuin keskus Muisti Kaksitasoinen: keskusssa kulloinkin käytössä alueet llä kaikki tiedot kopiointi tarvittaessa 3 Virtuaalin toteutus Toteutustavat kanta- ja rajarekisterit sivutus (segmentointi ja sivuttava segmentointi) Pääosatoteutuksesta ohjelmistotasolla Laitteistotuki MMU - nhallintayksikkö nopeuttaa viitatun paikan todelliosen osoitteen laskentaa rakenne ja toiminta vaihtelee virtuaalin toteutustavan mukaan Lisää Tietokoneen rakenne, tietoa? Käyttöjärjestelmäkurssit I, II 4 Tiedostojärjestelmä (5) 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ä ina (0.5-8 KB?) käyttäjätason prosessit käsittelevät tiedostoja tavuittain, niiden ei tarvitse tietää tiedoston todellista fyysistä rakennetta ( huolehtii siitä) 5 6 Luento 9, Ulkoinen & I/O 1
Levy (9) Levykkö pyörii nopeasti (koko ajan?) ~ 3600-10800 rpm luku/kirjoituspäät liikkuvat kaikki yhtä aikaa monta ä ~ 1-16 ä/kkö Levypinta ks. Fig.5.3, 5.4 [Stall99] 2 per (tai 1) ~ 2000-3000 uraa/pinta ura ~ 20-100 sektoria/ura sektori: pienin kerralla osoitettavissa oleva alue ~ 0.5-8 KB/ura sylinteri: päällekkäin olevat urat luku/kirj. pää samalla kohtaa ~ 1-32 uraa/sylinteri ks. Fig. 5.3 [Stall99] 150 MB-181GB/kkö 7 Levyn saantiaika (2) Tiedon osoite: pinta + ura + sektori etsii KJ-taulukoista loogisen osoitteen perusteella Saantiaika: ks. Fig.5.4 [Stall99] hakuvarren siirtoaika (seek time) aver 6.3 ms, min 2 ms, max 15 ms (?) odota kunnes sektori kohdalla (rotational delay) Esim. Pyörähdysviive on 3600 rpm: 8.33 ms on keskim. puolen pyörähdyksen aika; esim. 3600 rpm => yksi kierros kestää 16.666 ms = puoli kierrosta kestää 8.33 ms siirrä sektorin verran tietoa (data transfer time) esim. pyör.aika/sekt. lkm = 0.42 ms 8 Tiedoston talletus lle (2) Tiedosto koostuu useista ista per sektori (usea per sektori?) Levyn hakemistossa on tieto kunkin tiedoston käyttämistä ista luetaan t annetussa järjestyksessä hakemisto alkio FileA (unix) indeksi Levyn käyttö Virtuaalin tukina tiedostojen talletukseen Virtuaalin voi toteuttaa tiedostojärjestelmän päälle tai päinvastoin! VM tuki Sivu Sivu Sivu Sivu (tied) Sivu (tav) Sivu (tied) Sivu (tav) Sivu (tied) Sivu (tav) Sivu (tied) (tav) (tied) (tav) tiedostot 9 10 DOS-kkeen rakenne FAT -File Allocation Table kertoo, mitkä sektorit ovat vapaana kertoo, mitkä sektorit ovat käytössä millekin tiedostolle kiinteä paikka kkeellä, 2 kopiota jokaista n a vastaa yksi FAT:n alkio Hakemisto erikoistyyppinen hakemisto sisältää hakemistoalkion joka tiedostolle nimi, tyyppi, koko, muutos pvm ja kellonaika attribuutit (invisible, read-only, ) linkki ensimmäiseen sektoriin FAT:ssä 11 FAT - File Allocation Table (DOS) hakemistoalkio aa: 32 Hak. tdsto FAT varaustaulu 1. 34 36-1 32... 36 32 33 34 35 36 34 2. DOS kkeet: 1.44MB, 512 B, 2.9K a entä: 1 GB, 64 KB, 64K a OK? FAT 3.... 12 Luento 9, Ulkoinen & I/O 2
Mikä on hyvä n koko? Mihin käyttöön? Videokuvan talletus/playback? 1 minuutti 12.3 MB 1.64 Mbit /sek (koko ajan) 4KB? osoitetaulu? 12.3 MB/4KB = 3075 a epäsuorat viittaukset? riittääkö nopeus? entä jos 1 tunti? Riittääkö n kapasiteetti? 60*12.3 MB = 738 MB = 5904 Mb = 5.9 Gb => 184500 a a 4 KB 13 14 Laitteiden liittäminen järjestelmään (4) suoritin (CPU) Liitännät muiden koneiden kanssa tai t Liitännät laitteiden kanssa laiteohjaimet Liitännät ihmisten kanssa Kaikki samalla tavalla: ks. Fig. 2-29 [Tane99] 15 laite Laiteohjain (I/O Moduuli) Muisti data c/s laiteohjain suoritin laiteohjainprosessi (device controller, device controller process) käyttäjäprosessi KJ-prosessi, (tai aliohjelma?) laite Ks. Fig 6.4 [Stal99] 16 Laitteiden käytön toteutus (5) Käyttäjäohjelma kutsuu käyttöjärjestelmän a tekemään I/O:n. Laiteajuri suoritetaan samalla suorittimella kuin käyttäjäohjelmakin. Laiteajuri ohjaa laitteen toimintaa laitteen laiteohjaimella olevien kontrollirekisterien (alue) avulla Laiteajuri voi lukea laitteen tilatietoa laiteohjaimella olevien statusrekisterien (alue) avulla Laiteajuri voi lukea (kirjoittaa) laitteen lukemaa (laitteelle kirjoitettavaa) tietoa laiteohjaimella olevien datarekistereiden (alue) avulla Kontrolli-, status- ja datarekisteri kolmikko muodostaa I/O portin suorittimen näkökulmasta ks. laiteohjainkuva (ed. kalvo) 17 Laiteohjaimen rekistereihin viittaaminen (5) Ongelma: miten suorittimella ks. laiteohjainkuva suorittavan viittaa eri kortilla oleviin rekistereihin? Ratkaisu 1: omat I/O-konekäskyt tätä tarkoitusta varten käskyssä annetaan laiteohjaimen identifikaatio ja rekisterin nro (I/O-osoiteavaruus) vaikea laajentaa käyttöä uusiin laitteisiin, joilla rekisterit voivat olla hyvinkin erilaisia suorittimen konekäskyjä ei voi muuttaa x86: IN, OUT INS, OUTS KOKSI: IN R1, =KBD, OUT R2, =CRT 18 Luento 9, Ulkoinen & I/O 3
Ratkaisu 2: inkuvattu I/O (5) ks. laiteohjainkuva Laiteajuri lukee/kirjoittaa laiteohjaimella olevia rekistereitä (data, status/kontrolli) tavallisilla n luku/kirjoitus käskyillä ei tarvita erillisiä I/O-konekäskyjä! laiteohjaimella olevat rekisterit ovat samanlaista viitattavaa a kuin normaali soitteen ensimmäiset bitit valitsevat, mille laitteelle (vai tavallisen in) viittaus kohdistuu DiskCtr EQU 0x800000001 voidaan käyttää rinnan I/O käskyjen kanssa (laiterekistereihin voi siis viitata sekä I/O-käskyillä että inkuvatun I/O:n avulla) esim. Intelin arkkitehtuurit load R1, =DiskRd store R2, DiskCtr 19 I/O-tyypit (2) Suora I/O: odottaa tiukassa silmukassa, kunnes laiteohjaimen statusrekisteri ilmoittaa I/O-pyynnön valmistuneen (direct I/O) siirtää tietoa n ja datarekisterin välillä Epäsuora I/O: I/O:n odotusaikana suorittimella suoritetaan (indirect I/O jotain muuta ohjelmaa interrupt driven I/O) 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. siirtää tietoa n ja datarekisterin välillä ks. laiteohjainkuva 20 I/O-tyypit (jatkoa) (4) ks. laiteohjainkuva DMA - Direct Memory Access älykkäämpi laiteohjain laiteohjain voi suoraan kopioida tiedot keskusin (n ei tarvitse siirtää tietoa n ja datarekisterin välillä) laiteohjain tekee paljon suuremman määrän työtä itsenäisesti (kuin epäsuorassa I/O:ssa) ennen suorittimelle annettavaa laitekeskeytystä SIIRRÄNNÄN HIERARKIA keskeytys muuttujat SOVELLUS laiteriippumaton taso KÄYTTÖJÄRJESTELMÄ t LAITEOHJAIMET 21 syöttö tulostus Siirrännän hierarkia sovellusohjelmataso loogisia kokonaisuuksia, tietueita ja tiedostoja ohjelman sisäisiä nimiä Readln (File1, X) Open (Tdsto, RW) käyttöjärjestelmätaso laitteisto 23 Siirrännän hierarkia sovellusohjelmataso käyttöjärjestelmätaso rutiinit, jotka toteuttavat ja valvovat siirräntää laiteriippumaton siirräntä sovellukselle yhtenäinen tapa käyttää kaikkia siirräntäpalveluita laiteriippuva siirräntä laitteiden todelliseen käyttöön liittyvä ohjausohjelmisto koodattu laiteajureihin laitteisto Luento 9, Ulkoinen & I/O 4
Siirrännän hierarkia sovellusohjelmataso käyttöjärjestelmätaso laitteisto siirräntä voidaan toteuttaa kokonaan prosessorin valvonnassa ei hyödynnetä rinnakkaisuutta laiteohjain (siirräntään erikoistunut prosessori) huolehtii itsenäisesti siirrännästä prosessorin ja ohjainten välinen kommunikointi laitekuvaaja yksi kutakin laitetyyppiä varten talletettavat tiedot riippuvat laitteesta laitteen yksilöivä tunnus (osoite) ohjeet laitteen käytöstä urien, sektorien ja pintojen määrä, n koko viitteet näppäimistön merkinmuunnostauluihin laitteen tilatietoa varattu/vapaa/rikki viitteet jonottaviin palvelupyyntöihin viite laitetta käyttävän prosessin kuvaajaan laiteriippumattoman siirrännän tehtäviä loogisesta tiedostonimestä => käytettävän laitteen tyyppi pitää kirjaa tilan vapaista ja varatuista alueista siirrännän puskurointi () luku/kirjoituskohdan ylläpito tarvittaessa käynnistää fyysisen siirrännän antaa lle tehtävän n tehtäviä tehtävät riippuvat laitteesta muodostaa parametrien ja laitekuvaajan perusteella laitetta ohjaavat käskyt esim. numeroiden muuttaminen pinnan, uran ja sektorin numeroiksi pyyntöjen optimointi ohjaimella tehtävän fyysisen siirrännän käynnistys siirrännän kirjanpito siirron oikeellisuuden tarkistukset ja virheiden korjausyritykset AJURI- PROSESSI MUISTI LEVYOHJAIN PROSESSORI MUISTI LEVYOHJAIN Laiterekisterit -data -ohjaus -ok puskuri osoite lkm MUISTIINKUVATTU I/O: siirrettävä tieto + ohjaustiedot keskusin kommunikointialueelle LEVY DMA-SIIRTO: ohjain siirtää itsenäisesti tietoa ltä keskusin LEVY Luento 9, Ulkoinen & I/O 5
Sovellus DATA- ALUE Sovellus DATA- ALUE KÄYTTÖJÄRJESTELMÄ laiteriippumaton taso 1 2 3... Sovellus Laiteajuri dataalue siirtopyyntö aiheuttaa keskeytyksen ja vie prosessin WAIT-jonoon Laiteriippumaton taso Laiteriippumaton taso valmistelee ja käynnistää siirron ja jää odottamaan siirron valmistumista Laiteajuri käynnistää pyydettäessä fyysisen I/O:n ja jää odottamaan siirron valmistumista Laiteohjain suorittaa pyydetyn siirron puskurit n siirron valmistuminen vie prosessin READY-jonoon ja aikanaan suoritukseen Lohkopuskurit Käyttöjärjestelmä Laiteohjain data laitteella Esimerkki: kirjoittimen ttk- 91-koneelle Laitteella voi tulostaa kokonaislukuja yksi kerrallaan Muistiinkuvattu I/O, suora I/O Laiteportti kontrollirekisteri paikka 1048567= 0x80000 tilarekisteri paikka 1048577 = 0x80001 datarekisteri paikka 1048578 = 0x80002 Laiteajuri toimii etuoikeutetussa tilassa Kutsu: PUSH SP, =0 ; paluuarvo: onnistui/epäonnistui PUSH SP, X ; parametri SVC SP, =Print ; POP SP, R1 JNZER R1, TakeCareOfTrouble 33 Esim. n toteutus ptrcrt DC 1048576; control register address ptrstat DC 1048577; status register address ptrdata DC 10485678 retval EQU -3 pardata EQU -2 Oletus: SVC:n ja IRET:n toteutus samalla tavalla kuin CALL ja EXIT ptrctr ptrstat 1 1 0 ptrdata 200 Print Wait Done Solution with no timeout PUSHR SP ; save regs LOAD R1, pardata(fp) STORE R1,@prtData ; data to print LOAD R1, =0 STORE R1, @ptrstat ; init stat register LOAD R1, =1 STORE R1,@ptrCtr ; command to print LOAD R1, @prtstat ; chech stat register JNZER R1, Done JUMP Wait ; wait until I/O done LOAD R1, =0 ; return SUCCESS STORE R1, retval(fp) POPR SP ; recover regs IRET SP, =1 34 Tiedostopalvelin (4) (Lähi)verkossa oleva palvelin Käytettäessätiedoston (osien) kopio on ssa (ja ehkä myös paikallisella llä) suoritin suoritin orig. tiedosto tiedoston kopio? tiedostopalvelin 35 Tiedostopalvelin Käytetään kuin paikallista ä systeemin KJ:n liitospalikan avulla Paljon hitaampi kuin paikallinen Tiedostovälit (puskurit tai puskurit) nopeuttavat toimintaa käytännössä (file cache) omassa järjestelmässä palvelimella 50% oman järjestelmän keskussta voi olla varattu tiedostovälille tiedon päivitys tiedoston kirjoituksen yhteydessä? Lisää tietoa? käyttöjärjestelmä kurssit 36 Luento 9, Ulkoinen & I/O 6
Kiinto Erilaisia jä ZIP-ke Levyke CD-ROM, CD-R, CD-RW DVD..?.. Kiinto (7) Kiinteä, ei vaihdettavissa oleva Tila: 150 MB - 70 GB Hakuaika: 5-15 ms 1-10 ä Pyörimisnopeus: 4500-10800 rpm 16 g 43 x 36 x 5 mm Siirtonopeus: 5-50 MB/sec 37 38 Zip- & Jazkeasemat (6) Levykeasema (6) Vaihdettava ke Tila: 0.1-2 GB Hakuaika: 10-30 ms Pyörimisnopeus: 3000-5400 rpm Siirtonopeus: 1-6 MB/sec Vaihdettava ke Tila: 1.44 MB Hakuaika 90 ms Pyörimisnopeus: 300 rpm Siirtonopeus 0.05 MB/sec 39 40 CD - Compact Disc (9) DVD - Digital Versatile Disk (9) Vaihdettava ke CD-R (Recordable) CD-RW (Rewritable) Yksi pitkä spiraalimainen ura Tila: 650 MB Hakuaika 90 ms Pyörimisnopeus 200-9000 rpm Siirtonopeus 0.1-2 MB/sec Vaihdettava ke DVD-ROM DVD-R (Recordable) DVD-RAM (kuten tavallinen kova) Tila: 4.7-17 GB Hakuaika 100-180 ms Pyörimisnopeus 2000-8000 rpm Siirtonopeus 2-8 MB/sec hitaampi kuin kova 41 42 Luento 9, Ulkoinen & I/O 7
-- Luennon 9 loppu -- Fig. 5.47 from Hennessy-Patterson, Computer Architecture Alpha AXP 21064 memory hierarchy käskyjen TLB data TLB dataväli käskyväli Käskyjen ja datan yhteinen L2 väli Lisää tietoa? Tietokoneen rakenne 43 Luento 9, Ulkoinen & I/O 8