1
|
- Muistihierarkia
- Kiintolevyt
- Muut pyörivät levyt
- I/O:n toteutus
|
2
|
- Ulkoinen muisti on halvempaa toteuttaa per tavu
- Ulkoinen muisti on hyvin 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!
|
3
|
- 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
|
4
|
- 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
|
5
|
|
6
|
- 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ä)
|
7
|
- Levykkö
- pyörii nopeasti (koko ajan?)
- luku/kirjoituspäät liikkuvat kaikki yhtä aikaa?
- monta levyä
- Levypinta
- 2 per levy (tai 1)
- ura
- sektori: pienin kerralla
osoitettavissa oleva alue
- sylinteri: päällekkäin olevat urat,
luku/kirj. pää samalla kohtaa
|
8
|
- Tiedon osoite: levypinta + ura +
sektori
- laiteajuri etsii KJ-taulukoista
loogisen osoitteen perusteella
- Saantiaika:
- hakuvarren siirtoaika
Esim: aver 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)
- siirrä sektorin verran tietoa
Esim: pyör.aika / sekt. lkm = 0.42 ms
|
9
|
- 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ä
|
10
|
|
11
|
- FAT – File Allocation Table
- kertoo, mitkä sektorit ovat vapaana
- kertoo, mitkä sektorit ovat käytössä millekin tiedostolle
- kiinteä paikka levykkeellä, 2 kopiota
- Hakemisto
- erikoistyyppinen tiedosto
- sisältää hakemistoalkion joka tiedostolle
- nimi, tyyppi, koko, muutos pvm ja kellonaika
- attribuutit (invisible, read-only, ...)
- linkki ensimmäiseen sektoriin (FAT ja itse tiedosto)
|
12
|
|
13
|
- Mihin käyttöön?
- Videokuvan talletus/playback?
- 1 minuutti
- 12.3 MB
- lohko 4KB?
osoitetaulu?
- epäsuorat viittaukset?
- riittääkö levyn/väylän/ohjaimien nopeus?
- entä jos 1 tunti? riittääkö levyn kapasiteetti?
|
14
|
|
15
|
|
16
|
|
17
|
- 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
|
18
|
- Ongelma: miten suorittimella
suorittavan laiteajuri viittaa
eri kortilla oleviin rekistereihin?
- 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
|
19
|
- 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 valitsevat, mille laitteelle (vai
tavallisen muistiin)
viittaus kohdistuu
- voidaan käyttää rinnan I/O käskyjen kanssa
(laiterekistereihin voi siis viitata sekä I/O-käskyillä että
muistiinkuvatun I/O:n
avulla)
|
20
|
- 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ä
|
21
|
- 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ä
- laiteohjain tekee paljon suuremman määrän työtä itsenäisesti (kuin
epäsuorassa I/O:ssa) ennen suorittimelle annettavaa laitekeskeytystä
|
22
|
- (Lähi)verkossa oleva palvelin
- Käytettäessä tiedoston (osien) kopio on muistissa (ja ehkä myös
paikallisella levyllä)
|
23
|
- Käytetään kuten paikallista levyä oman systeemin KJ:n liitospalikan
avulla
- Paljon hitaampi kuin paikallinen levy
- Tiedostovälimuistit
(muistipuskurit tai levypuskurit) nopeuttavat toimintaa
käytännössä
- omassa järjestelmässä
- palvelimella
- 50% oman järjestelmän keskusmuistista voi olla varattu
tiedostovälimuistille
- tiedon päivitys tiedoston
kirjoituksen yhteydessä?
|
24
|
|
25
|
- 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:
|
26
|
|
27
|
|
28
|
- Kiintolevy
- ZIP levyke
- Levyke
- CD-ROM, CD-R, CD-RW
- DVD
- ...?...
|
29
|
- Kiinteä, ei vaihdettavissa oleva levy
- Tila: 0.150-181 GB
(v. 2000)
- Hakuaika: 5-15 ms
- 1-10 levyä
- Pyörimisnopeus:
4500-10800 rpm
- Siirtonopeus: 5-50 MB/sec
|
30
|
- Vaihdettava levyke
- Tila: 0.1-2 GB
- Hakuaika: 10-30 ms
- Pyörimisnopeus: 3000-5400 rpm
- Siirtonopeus: 1-6 MB/sec
|
31
|
- Vaihdettava
levyke
- Tila: 1.44 MB
- Hakuaika 90 ms
- Pyörimisnopeus
300 rpm
- Siirtonopeus
0.05 MB/sec
|
32
|
- Vaihdettava levyke
- 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
|
33
|
- Vaihdettava levyke
- DVD-ROM
- DVD-R (Recordable)
- DVD-RAM
- kuten tavallinen kovalevy
- Tila: 4.7-17 GB
- Hakuaika 100-180 ms
- Pyörimisnopeus 2000-8000 rpm
- Siirtonopeus 2-8 MB/sec
|
34
|
|