Tietokoneen toiminta kesä -99

Laskuharjoitus 7 (keskiviikko 18.8.)

1. Vastaa seuraaviin kysymyksiin
a) Missä sijaitsee osoitemuunnospuskuri TLB (Translation Lookaside Buffer)? Mitä tietoa on talletettuna TLB:n alkioon?
b) Selitä, milloin ja kuinka osoitemuunnospuskuria käytetään. Mitä hyötyä on siitä, että laitteistossa on TLB? Voisiko virtuaalimuisti toimia ilman TLB:tä? Voisiko TLB:stä olla haittaa?
c) Mitä hyötyä olisi siitä, että TLB:n alkiossa olisi prosessin numero (PID) validibitin sijasta ja MMU:ssa lisärekisteri PidR suorituksessa olevan prosessin numeron säilyttämiseksi?
d) Mihin uudelleensijoistushakemistoa tarvitaan? Mitä sinne talletetaan?
e) Mihin linkittäjää tarvitaan?

2. Oletetaan, että prosessi Mittaa lukee jatkuvasti anturia ja päivittää (saattaa ajan tasalle) tietorakennetta, johon sisältyy viime aikoina mitattujen anturilukujen summa (SUM) ja mittausten lukumäärä (LKM). Olkoon prosessi Näytä toinen samalla samalla prosessorilla suorittava prosessi, joka jatkuvasti tulostaa viime aikoina mitatun anturin näytön keskiarvon (KESK).

Jos keskiarvo lasketaan silloin, kun summa (SUM) on jo päivitetty, mutta mittausten lukumäärää (LKM) ei ole vielä päivitetty, niin keskiarvoksi tulee liian iso luku! Tee semaforeja käyttävät aliohjelma Talleta ja funktio Keskiarvo, joita käyttäen em. prosessit synkronoivat toimintansa oikein (eli siis siten, että tulostettu keskiarvo on aina todellinen keskiarvo). Anna aliohjelman Talleta ja funktion Keskiarvo kuvaus oleellisella tasolla synkronointiprimitiivejä käyttäen. Voit vain mainita käyttämiesi semaforien nimet ja alkuarvot; sinun ei tarvitse murehtia, miten tai milloin ne asetetaan (tai kuka asettaa).

3. Laajenna monisteen kolmas semaforiesimerkki (s. 117) tilanteeseen, jossa prosesseja on kolme, eikä mikään niistä saa edetä ennenkuin muut ovat ehtineet tiettyyn kohtaan.

4. Oletetaan, että TTK-91 tietokoneen käyttöjärjestelmä tarjoaa palvelut:

SVC SP,=LUO_PROSESSI    ; luo prosessi
SVC SP,=HALT            ; lopeta prosessi
Mitä toimenpiteitä ko. palvelujen pitää tehdä?
Mitä tietoja kutsujan tulee välittää (pinossa tai rekistereissä) palvelurutiineille?
Muunmuassa komentotulkki käyttää palvelua LUO_PROSESSI, kun käyttäjä käynnistää uuden ohjelman.

5.Mitä tietoa KJ ylläpitää prosessista prosessin kuvaajassa (PCB)? Pohdi myös kunkin prosessin kuvaajaan talletettavan tiedon osalta milloin ja mihin KJ ko. tietoa tarvitsee. Missä prosessin kuvaaja sijaitsee?

6. Virtuaalimuistisivun koko on 1024 sanaa (0..1023), virtuaalimuistissa on 10 samankokoista sivua (virtuaaliosoitteet 0..10239) ja keskusmuistissa on 4 sivukehystä (fyysiset osoitteet 0..4095). Sivutaulun sisältö annetulla hetkellä on seuraavanlainen (jos sivu ei ole keskusmuistissa niin läsnäolobitti on arvoltaan nolla):

Sivun numero Sivukehys Läsnäolobitti
0 3 P=1
1 0 P=1
2 P=0
3 P=0
4 1 P=1
5 P=0
6 P=0
7 P=0
8 2 P=1
9 P=0

Mitkä osoitteet aiheuttavat sivunpuutoksen? Mitkä ovat virtuaaliosoitteita 546, 800, 1023, 1024, 2048, 8000, 9000 vastaavat fyysiset (todelliset) muistiosoitteet?