Stýrikerfi I
09.12.41
Lokapróf 9. desember 1991
Leyfileg hjálpargögn: Kennslubækur og fyrirlestranótur
1. [10%] Einnar hliðar diskur hefur 16 geira per spor sem hver
inniheldur 64 bæti. Ef hámarks- flutningsgeta disksins er
3.072.000 bæti/sek hver er þá snúningshraðinn? Ef fjöldi spora
er 1200 og það tekur 10 msek að flytja leshausinn milli samliggjandi spora hvað
tekur það langan tíma að lesa allan diskinn? Úrskýrið allar forsendur sem þið
gefið ykkur.
2. [10%] Villukóda á 32 bita IEEE fleytitölu með Hamming kóda
þannig að hvert af hinum þremur sviðum í fleytitölunni (formerki,
veldi og brot) sé kódað sérstaklega. Hvað þarf þá marga bita fyrir hvert svið
fleytitölu? Sýnið hvernig slík kódun gengi fyrir sig fyrir fleytitöluna
-17,75.
3. [10%] Skrifið 8086-smalamálsfall sem reiknar út fall Ackermanns
og er kallanlegt frá Turbo- Pascal. Fall Ackermanns er skilgreint á
eftirfarandi hátt:
n+1 ef m=0
A(m, n) = A(m-1, 1) ef n=0
A(m-1, A(m, n-1)) annars
4. [30%] Fylki A er sagt hafa söðulpunkt
ef til er stak A[i, j], þannig að það er minnsta stakið
í línu i og stærsta stakið í dálki j. Þið eigið
að skrifa 8086 fall sem ákvarðar hvort fylki hafi söðulpunkt. Fallið
fær inn bendinn DS:SI sem bendir á fyrsta stak fylkisins. Gistið BX
inniheldur fjölda lína í fylkinu og CX fjölda dálka. Skila á 0 í AX ef
fylkið hefur ekki söðulpunkt, en annars 1 í AX. Gerið ráð fyrir að
fylkið sé geymt eftir línum í minninu, þannig að fyrst komi stak
A[0, 0], síðan A[0, 1], o.s.frv.
Lýsið vel aðferðinni sem þið notið til að finna söðulpunktinn.
Ekki er nauðsynlet að þið finnið bestu aðferðina, en forritið þarf að
vera skiljanlegt!
5. [10%] Skrifið HP PA-RISC smalamálsfall sem fær inn (í %arg0)
töluna n og skilar út (í %ret0) summu allra heiltalna frá 1 til
n. Þessi summa er n(n-1)/2, en þar sem margföldun
er dýr í PA-RISC skuluð þið nota lykkju og leggja saman allar tölur frá
1 til n. Reynið að gera forritið eins stutt og hægt er, þ.e.,
notið öll biðhólf og samsettar skipanir.
6. [20%] Gjörvi nokkur hefur aðeins eina skipun, sem er
DB <v1>, <v2>, <v3>
Öll viðföngin í þessari skipun eru minnisvistföng og skipunin lækkar
innihald <v1> um gildið í <v2> og hoppar í <v3> ef
niðurstaðan er < 0.
Hægt er að útbúa allar aðrar skipanir sem við þurfum með þessari einu
skipun. Til dæmis getum við núllað innihald minnishólfs með því að draga
það frá sjálfu sér. Hér að neðan er hólf 4 núllað. (Athugið að hér yrði
aldrei hoppað því niðurstaðan er alltaf 0).
DB 4, 4, merki
Við höfum því búið til skipunina NULL i, sem setur vistfang
i núll.
a) Sýnið uppsetningu skipananna
NEG i, j , sem setur andhverfu innihaldsins í hólfi
i í hólf j,
ADD i, j , sem leggur saman gildi hólfa i og
j og setur niðurstöðuna í hólf j,
COPY i, j , sem afritar gildið í hólfi i yfir
í hólf j.
b) Gerið ráð fyrir að minnishólf 0 innihaldi töluna n og
hólf 1 innihaldi töluna 1. Skrifið forrit sem setur í minnishólf 2 summu
allra talna frá 1 uppí n (þ.e. gildið n(n+1)/2).
Skrifið forritið fyrst með hjálp afleiddu skipananna NULL, NEG, ADD og
COPY áður en þið sýnið forrit með eintómum DB-skipunum.
7. [10%] Sumar tölvur (til dæmis HP PA-RISC) breyta ekki sýnarvistföngum
yfir í raunveruleg vistföng áður en vísað er í skyndiminni. Lýsið í grófum
dráttum vinnuganginum í slíku kerfi segið hvaða kosti og galla það hefur miðað
við að nota eingöngu raunveruleg vistföng í skyndiminninu.