Tietokoneen toiminta, kesä 2000

Harjoitus 6

Käsitellään harjoitusryhmässä torstaina 24.8.2000.
  1. Vastaa seuraaviin kysymyksiin
    1. Missä sijaitsee osoitemuunnospuskuri TLB (Translation Lookaside Buffer)? Mitä tietoa on talletettuna TLB:n alkioon?
    2. 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?
    3. 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?

  2. Virtuaalimuisti. Oletetaan, että (sana)osoitteen pituus on 16 bittiä, sivun koko 256 sanaa ja sivutaulun (alkuosan) sisältö seuraavanlainen:

    Sivun nro Oikeudet Läsnäolo/Muutettu Sivuraami
    0 r 1/0 12
    1 rw 1/0 5
    2 rw 1/1 6
    3 rw 0/0 ??
    4 rw 1/1 2
    5 rw 1/1 0
    6 r 1/0 55
    7 r 1/1 22

    1. Jos muuttujien X, Y ja Z virtuaaliosoitteet ovat 0x0144, 0x052D ja 0x03AA, niin mitkä ovat niiden fyysiset osoitteet?
    2. Mikä virtuaaliosoite kohdistuu fyysiseen muistipaikkaan 0x5555?
    3. Kumpi on muuttujan X oikea osoite, 0x0144 vai sen fyysinen osoite?
    4. Kumpi osoite X:lle on konekäskyssä, virtuaaliosoite vai fyysinen osoite?
    5. Mitä tietoja TLB:ssä on muuttujiin X, Y ja Z kohdistuneista viittauksista?
    6. Missä sivutaulu sijaitsee?
    7. Voiko virtuaalinen osoiteavaruus olla suurempi kuin fyysinen osoiteavaruus? Miksi?
    8. Voiko virtuaalinen osoiteavaruus olla pienempi kuin fyysinen osoiteavaruus? Miksi?

  3. Selitä yksityiskohtaisesti, kuinka prosessori ja käyttöjärjestelmä toimivat, kun suorituksessa olevan prosessin aikaviipale täyttyy. Selostuksestasi tulee siis käydä ilmi vastaukset ainakin seuraaviin kysymyksiin:
    1. Mistä CPU tietää, että viipale on täysi?
    2. Miten CPU saadaan suorittamaan käyttöjärjestelmää?
    3. Miten CPU otetaan pois vanhalta prosessilta?
    4. Miten se annetaan uudelle prosessille? Mille?
    5. Anna esimerkkejä tilanteista, jolloin on järkevää, että keskeytyksen käsittelyn jälkeen jatketaan eri käyttäjäprosessia (user process) kuin mikä oli suoritusvuorossa keskeytyksen tapahtuessa. Anna myös esimerkkejä tilanteista, jolloin keskeytyksen jälkeen on järkevää jatkaa saman prosessin suoritusta.

  4. Nimien sidonta. Anna esimerkki nimen sidonnasta, jossa sidonnan täytyy tapahtua
    1. ohjelman kirjoitusaikana
    2. käännösaikana
    3. linkityksen aikana
    4. latausaikana
    5. kantarekisterin (tai muun KJ rekisterin) asetuksen aikana
    6. konekäskyn suoritusaikana
    Kussakin tapauksessa perustele, miksi sidonta ei voisi tapahtua aikaisemmin/myöhemmin.

  5. Käännös ja linkitys
    1. Esitä melko yksityiskohtaisesti, kuinka kääntäjä kääntää seuraavan ohjelman konekielelle. Selvitä erityisesti, kuinka symbolitaulua käytetään käännöksessä.
          Z     EQU 0
          sata  EQU 100
          taulu DS 100
          
          alku  IN R1, =KBR
                JNEG R1, pois
                COMP R1, =sata
                JNLE pois
                LOAD R2, =Z
          uus   STORE R2, taulu(R1)
                SUB R1, =1
                JNNEG R1, uus
          pois  SVC SP, =HALT      
      
    2. Mitä tälle ohjelmalle tapahtuu linkitysvaiheessa?
    3. Mihin uudelleensijoitushakemistoa tarvitaan? Mitä sinne talletetaan?

  6. Kurssin asiasisältö
    1. Listaa kurssin kolme (3) tärkeintä asiakokonaisuutta. Perustele valintasi.
    2. Mitkä olivat kaksi seuraavaksi tärkeintä asiakokonaisuutta ja miksi ne jäivät sijoille 4 ja 5?
    3. Mikä oli kurssilla mielestäsi hyödyttömintä asiaa?
    4. Anna erillisellä paperilla harjoituksen vetäjälle kolme vinkkiä siitä, mitä kokeessa ehdottomasti kannattaisi kysyä. Perustele valintasi lyhyesti!
    5. Täytä kurssiarvostelulomake sivulla http://www.cs.helsinki.fi/kurssit/kyselyt/kesa_2000/.