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.