581305-6 Tietokoneen toiminta, 2 ov, erilliskoe 26.3.2002 (Other side in English in English)

Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot: oma nimesi, henkilötunnus, kokeen tai kurssin nimi, nimikirjoitus ja sivunumero.
  1. [15 p] Prosessi
    1. [5 p] Mikä on prosessin esitysmuoto järjestelmässä? Missä ovat prosessin tiedot prosessin eri tilojen aikana? Suorittimella, muistissa, levyllä?
    2. [2 p] Anna esimerkki tilanteesta, jossa prosessin tila muuttuu tilasta "New" tilaan "Blocked"?
      Mitä järjestelmässä tapahtuu tilanvaihdon aikana?
    3. [2 p] Anna esimerkki tilanteesta, jossa prosessin tila muuttuu tilasta "Running" tilaan "Blocked"?
      Mitä järjestelmässä tapahtuu tilanvaihdon aikana?
    4. [2 p] Anna esimerkki tilanteesta, jossa prosessin tila muuttuu tilasta "New" tilaan "Ready"?
      Mitä järjestelmässä tapahtuu tilanvaihdon aikana?
    5. [2 p] Anna esimerkki tilanteesta, jossa prosessin tila muuttuu tilasta "Blocked" tilaan "Ready"?
      Mitä järjestelmässä tapahtuu tilanvaihdon aikana?
    6. [2 p] Anna esimerkki tilanteesta, jossa prosessin tila muuttuu tilasta "Ready" tilaan "Running"?
      Mitä järjestelmässä tapahtuu tilanvaihdon aikana?

  2. [15 p] Oletetaan, että levyn pyörimisnopeus on 7200 rpm, siinä on yksi luku/kirjoituspää per levypinta, sylintereiden (uraa per levypinta) lukumäärä on 2000, joka uralla on 50 sektoria ja sektorin koko on 0.5 KB. Otaksumme (epärealistisesti), että hakuvarren siirtoaika on lineaarinen urien lukumäärän suhteen ja että se on 0.02 ms per ura. Otaksumme (epärealistisesti), että luettavan tiedoston jokaisen sektorin sijainti on täysin satunnainen levyllä, mistä saadaan todennäköisyyslaskentaa käyttäen keskimääräiseksi ylitettävien urien lukumääräksi 667. Otaksumme edelleen (epärealistisesti), että tiedosto luetaan levyltä yksi sektori kerrallaan. Kauanko kestää 333.33 KB tiedoston lukeminen levyltä keskimäärin? Entä 24 MB tiedoston lukeminen?

  3. [15 p] Java ohjelmia (tavukoodia) voidaan suorittaa ainakin kolmella hyvin erilaisella tavalla. Kerro kustakin tavasta,
    1. miten suoritus tapahtuu sitä käyttäen?
    2. mikä käyttöjärjestelmän tuntema prosessi on suoritusvuorossa k.o. Java ohjelmaa suoritettaessa?
    3. esimerkki tilanteesta, jolloin kyseinen tapa olisi parempi kuin muut vaihtoehdot. Perustele.
    4. esimerkki tilanteesta, jolloin kyseinen tapa olisi huonompi kuin muut vaihtoehdot. Perustele.
    5. sopisiko tämä tapa muita paremmin Java-ohjelmoinnin harjoitustyön suorittamiseen? Miksi?

  4. [15 p]  Ttk-91 koneen konekieli. Kokonaislukuarvoiset muuttujat X ja I on määritelty pääohjelmatasolla. Kokonaislukuarvoinen taulukko T[100] on määritelty pääohjelmatasolla. Taulukossa on siis 100 alkiota (alkiot T[0], ..., T[99]). Tietuetyypin typeRec={Id, Age, Salary} mukaisille tietueille Rec1 ja Rec2 on varattu tilaa pääohjelmatasolla. Tietueiden Rec1 ja Rec2 sijainteja ei tiedetä (eli symboleja Rec1 ja Rec2 ei voi käyttää koodissa), mutta pääohjelmatasolla määritellyt osoitinmuuttujat ptrRec1 ja ptrRec2 sisältävät niiden osoitteet. Osoitinmuuttuja ptrRec1 osoittaa siis tietueeseen Rec1. Tietueiden kentät on talletettu annetussa järjestyksessä. Anna ttk-91 koneen symbolisella konekielellä (tai muulla vastaavalla sovitulla kielellä) käskyt, jotka suoritettaessa tekevät annetut toimenpiteet:
    1. [3 p] X = T[23];
    2. [3 p] X = T[I];                                  # assume (unrealistically) that value of I is in [0,99]
    3. [3 p] Nollaa taulukko T, eli aseta sen kaikkien alkioiden arvoksi nolla.
    4. [2 p] X = Rec1.Age;                          # field Age in Rec1, I.e., field Age in record pointed by ptrRec1
    5. [2 p] Rec1.Salary = Rec2.Salary;
    6. [2 p] Nollaa osoitinmuuttujan ptrRec1 osoittama tietue, eli aseta sen kaikkien kenttien arvoksi nolla.

 


    TTK-91 konekielen käskyt ovat: NOP, STORE, LOAD, IN, OUT, ADD, SUB, MUL, DIV, MOD, AND, OR, XOR, SHL, SHR, COMP, JUMP, JNEG, JZER, JPOS, JNNEG, JNZER, JNPOS, JLES, JEQU, JGRE, JNLES, JNEQU, JNGRE, CALL, EXIT, PUSH, POP, PUSHR, POPR, SVC