Tietokoneen toiminta, 2 ov
Kurssikuulustelu 13.2.2003
Kirjoita jokaiseen vastauspaperiisi seuraavat tiedot:
oma nimi, opiskelijanumero (tai henkilötunnus),
kurssin nimi, nimikirjoitus ja sivunumero.
[12 p] Konekäskyjen suoritus.
[2 p] Millä tavoin suoritin (processor) suorittaa konekäskyn?
[2 p] Miten suoritin tietää, mikä konekäsky on kulloinkin suoritusvuorossa?
[3 p] Mitä ovat keskeytykset (exception, interrupt) ja minkä tyyppisiä
keskeytyksiä on olemassa?
[2 p] Miten keskeytykset käsitellään suorittimella?
[3 p] Mitä tarkoittaa käsite "etuoikeutettu tila" (supervisor
state, priviledged state) ja miten se vaikuttaa käskyjen suoritukseen?
[12 p] Tiedon sijainti
[3 p] Mainitse 3 eri tiedon sijaintipaikkaa konekäskyssä käytettävälle
tiedolle (dataviite, ei koodiviite). Mitkä ovat niiden nopeudet (karkealla
tasolla)?
HUOM: välimuistia ei oteta huomioon tässä tapauksessa,
vaikka data usein sijaitseekin siellä.
[6 p] Anna kullekin tiedon sijaintipaikalle ttk-91 symbolista konekieltä
käyttäen esimerkki (konekäsky), jossa juuri siinä sijaintipaikassa olevaan
tietoon (dataan, ei koodiin) viitataan. Kerro erityisesti, missä käskyn
suorituksen vaiheessa kyseinen viittaus tapahtuu ja miten viitattu tieto
löytyy järjestelmästä konekäskyssä olevien tietojen perusteella.
[3 p] Anna kullekin tiedon sijaintipaikalle esimerkki tiedosta, joka
olisi järkevää tai välttämätöntä sijoittaa juuri siihen paikkaa eikä vaihtoehtoisiin
sijaintipaikkoihin. Anna perustelut, miksi näin kannattaisi tai olisi
välttämätöntä tehdä.
[12 p] I/O:n toteutus. Käsitellään tässä käyttäjätason
prosessia P, joka kirjoittaa 20000 sanan datasegmentin kovalevylle. Käytössä
on suoraa I/O:ta (direct I/O) käyttävä toteutus.
[2 p] Mitkä kaikki laitteiston osat osallistuvat I/O:n toteuttamiseen?
[2 p] Mitkä kaikki prosessit osallistuvat I/O:n toteuttamiseen?
Missä laitteiston osassa kukin prosessi on (suorittamassa koodiaan)?
[4 p] Mitä kaikkea järjestelmässä tapahtuu siitä
hetkestä alkaen kun P aloittaa I/O:n, siihen hetkeen asti, kun P
jatkaa suoritustaan I/O:n jälkeen?
[2 p] Miten tilanne (kohdat a-c) muuttuisi, jos käytössä
olisikin epäsuora I/O (indirect I/O)?
[2 p] Miten tilanne (kohdat a-c) muuttuisi, jos käytössä
olisikin DMA-perustainen I/O?
[12 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.
Esimerkiksi, osoitinmuuttuja ptrRec1 osoittaa tietueeseen Rec1. Tietueiden
kentät on talletettu annetussa järjestyksessä. Anna ttk-91 koneen symbolisella
konekielellä käskyt, jotka suoritettaessa tekevät annetut toimenpiteet:
[2 p] X = T[23];
[2 p] X = T[I];
# oleta (epärealistisesti), että I:n arvo on välillä
[0,99]
[2 p] Nollaa taulukko T, eli aseta sen kaikkien alkioiden arvoksi nolla.
[2 p] X = Rec1.Age; #
kenttä Age tietueessa Rec1, eli
# kenttä Age osoitinmuuttujan ptrRec1 osoittamassa tietueessa
[2 p] Rec1.Salary = Rec2.Salary;
[2 p] Nollaa osoitinmuuttujan ptrRec1 osoittama tietue, eli aseta sen
kaikkien kenttien arvoksi nolla.