Datamatiske Systemer
Skriftlig eksamen
Januar 2002
Opgave 1: 10 %
Opgave 2: 15 %
Opgave 3: 20 %
Opgave 4: 15 %
Opgave 5: 10 %
Opgave 6: 20 %
Opgave 7: 10 %
I alt: 100 %
Bemærk:
Nogle besvarelser kræver er beskrivelse og/eller motivering. Der ønskes på ingen måde
en hel eller halv roman som svar, kun korte koncise svar med så få sætninger som muligt.
Opgave 1 (10 %)
Design et digitalt kredsløb, der implementerer nedenstående funktion. Tegn kredsløbet i formen "sum of products".
(5 % for omskrivning til sum of products, og 5 % for korrekt tegning.)
X = (A+B)CD
Opgave 2 (15 %)
Nedenfor ser du en del af et C++ program.
A, B, C og D er integers som er gemt i binær 2-komplement repræsentation.
De fylder 4 bytes hver og ligger lige efter hinanden med start i adresse 4096.
...
D = A + B - C;
...
-
Oversæt det til assembler. Brug ARC assembler fra Murdocca. (7 %)
Maskinen har ikke en "subcc" instruktion,
d.v.s. Murdocca side 212-213 må ikke bruges.
- Oversæt de fem første assemblerinstruktioner til objekt.kode. Brug ARC objekt-kode fra Murdocca. (8 %)
Opgave 3 (20 %)
En af de vigste opgaver et OS (Operating System) har i forbindelse med Memory Management er "Memory Protection".
- Hvorfor er det så vigtigt? (5 %)
- Forslå en måde at implementere Memory Protection. (5 %)
En anden vigtig opgave of OS Memory Management er "Relocation".
- Hvorfor er det vigtigt? (5 %)
- Forslå en måde at implementere Relocation. (5 %)
Opgave 4 (10 %)
Et banksystem, der bruges til at overføre penge fra en konto til et andet, er implementeret således.
(Kun den interessante del er vist. X og Y er kontonummre, og account[x] er ikke et array, men et konto-objekt-x i databasen.)
...
debit = account[x].readtotal();
credit = account[y].readtotal();
debit -= transfersum;
credit += transfersum;
account[x].settotal(debit);
account[y].settotal(credit);
...
Hvergang en bankansat skal flytte nogle penge fra en konto til en anden, så vil en kopi af ovenstående transfer-program
eksekveres på den centrale databaseserver.
Banken har mange filialer, mange ansatte, mange kunder og mange transaktioner.
Enhver løsning må tillade samtidige transaktioner og samtidig adgang til kontodatabasen.
- Der er et problem med ovenstående implementering. Hvad? (5 %)
- Løs problemet med semaforer. Opdater ovenstående program. (5 %)
Opgave 5 (15 %)
Kig på en 802.3 frame.
-
Når man laver en frame standard, så kan man vælge at placere de forskellige felter på forskellige pladser i framen.
Er der en grund til at "Destination Address" er det første felt i framen lige efter frame delimiter? Motiver
hvorfor man har valgt at placere "Destinations Address" først i framen, eller motiver hvorfor det er ligegyldigt
hvor den er placeret. (3 %)
-
Motiver hvorfor man har lagt "Check Sum" feltet sidst i framen,
eller motiver hvorfor det er ligegyldigt hvor den er placeret. (3 %)
- Hvorfor er der variabel længde på "Pad" feltet, og hvorledes vil det blive anvendt? (4 %)
-
Kan 802.3 (Ethernet) udnytte sin båndbredde bedre, dårligere eller lige så godt som 802.5 (Token Ring)? (1 %)
Hvorfor er den dårligere dålig? (2 %)
Hvorfor er den bedre bedre? (2 %)
Opgave 6 (20 %)
Nedenstående er en hexadecimal repræsentation af en IP-datagram. Svar skal gives i decimale talsystem og med danske bogstaver.
45000034
01170010
20067CB2
D6101043
810F120B
04020050
00000204
00200003
50101000
32E90000
44657420
65722067
6F647421
- Hvilken IP version bruges i dette datagram? (1 %)
- Hvor lang er IP headeren? (1 %)
- Hvor lang er hele IP datagrammet? (1 %)
- Hvor mange bytes er IP data? (1 %)
- Er IP datagrammet fragmenteret? (1 %)
- Hvis RFC1700 siger at TCP har nummer 6 og UDP har nummer 17, hvilken transportprotokol bruges her? (1 %)
- Hvad er afsenders IP adresse skrevet i dotted decimal notation? (2 %)
- Hvad er modtagers IP adresse skrevet i dotted decimal notation? (2 %)
- Hvilke klasser tilhører de ovenstående IP adresser? (2 %)
- Hvor mange bytes er TCP headeren? (1 %)
- Hvor mange bytes er TCP bruger-data? (1 %)
- Hvad er afsender port nummer? (1 %)
- Hvad er modtager port nummer? (1 %)
- Hvor stor er afsenders modtagevindue? (1 %)
- Hvis brugerdata er ASCII-tekst, hvilken tekst er sendt i dette segment? (3 %)
Opgave 7 (10 %)
Vi har et operativsystem der bruger "Virtual Memory" med "Paging".
Hver page er 4 kBytes. Herunder ses systemets Page Table.
Page |
Present |
Frame |
Load time |
Ref time |
Dirty |
0 |
0 |
0 |
1825 |
5826 |
0 |
1 |
0 |
0 |
1831 |
5843 |
0 |
2 |
0 |
0 |
1842 |
5851 |
0 |
3 |
1 |
0 |
1849 |
7318 |
1 |
4 |
1 |
1 |
1897 |
7293 |
0 |
5 |
0 |
0 |
1912 |
5897 |
0 |
6 |
0 |
0 |
5641 |
5641 |
0 |
7 |
0 |
0 |
4357 |
4392 |
0 |
8 |
0 |
0 |
2659 |
2986 |
0 |
9 |
1 |
6 |
2672 |
7129 |
1 |
10 |
0 |
0 |
2687 |
2993 |
0 |
11 |
0 |
0 |
3561 |
3561 |
0 |
12 |
1 |
4 |
1762 |
7093 |
0 |
13 |
1 |
7 |
1798 |
7032 |
0 |
14 |
0 |
0 |
1925 |
2649 |
0 |
15 |
0 |
0 |
1968 |
2831 |
0 |
16 |
0 |
0 |
2008 |
2846 |
0 |
17 |
1 |
2 |
2571 |
6838 |
0 |
18 |
0 |
0 |
2586 |
2868 |
0 |
19 |
0 |
0 |
2594 |
2871 |
0 |
20 |
0 |
0 |
2035 |
2879 |
0 |
21 |
0 |
0 |
2039 |
2894 |
0 |
22 |
0 |
0 |
0 |
0 |
0 |
23 |
0 |
0 |
0 |
0 |
0 |
24 |
0 |
0 |
0 |
0 |
0 |
25 |
0 |
0 |
0 |
0 |
0 |
26 |
0 |
0 |
0 |
0 |
0 |
27 |
0 |
0 |
0 |
0 |
0 |
28 |
0 |
0 |
2302 |
6058 |
0 |
29 |
1 |
3 |
2314 |
6872 |
0 |
30 |
1 |
5 |
2321 |
6956 |
1 |
31 |
0 |
0 |
2326 |
6074 |
0 |
- Hvor stor er RAM (det fysiske lager), og hvor stor er systemets virtuelle hukommelse / lager? (2 %)
- Programmet vil læse fra virtuel adresse 16684. Hvilken adresse i RAM vil blive adresseret? (3 %)
- Programmet vil læse fra virtuel adresse 69932. Hvilken adressen i RAM vil blive adresseret? (3 %)
-
Hvis systemet skal loade 2 nye sider (side 15 og 16) så skal 2 gamle sider fjernes fra 2 frames.
Hvilke sider vil blive fjernet hvis systemet bruger "Least Recently Used" algoritmen fra page replacement? (2 %)