Örebro universitet
Institutionen för naturvetenskap och teknik
Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se)





Tentamen i

Operativsystem för civilingenjörer

måndag 29 maj 2023

Gäller som tentamen för:
DT513G Operativsystem för civilingenjörer, provkod A001


Hjälpmedel: Ordbok för översättning.
Poängkrav: Maximal poäng är 31. För godkänt betyg krävs 18 poäng.
Resultat: Meddelas senast 15 arbetsdagar efter tentamensdatum.
Återlämning av tentor: Elektroniskt via webbportalen Studenttjänster.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.




LYCKA TILL!

Formelsamling

20 = 1 224 = 16777216
21 = 2 225 = 33554432
22 = 4 226 = 67108864
23 = 8 227 = 134217728
24 = 16 228 = 268435456
25 = 32 229 = 536870912
26 = 64 230 = 1073741824
27 = 128 231 = 2147483648
28 = 256 232 = 4294967296
29 = 512 233 = 8589934592
210 = 1024 234 = 17179869184
211 = 2048 235 = 34359738368
212 = 4096 236 = 68719476736
213 = 8192 237 = 137438953472
214 = 16384 238 = 274877906944
215 = 32768 239 = 549755813888
216 = 65536 240 = 1099511627776
217 = 131072 241 = 2199023255552
218 = 262144 242 = 4398046511104
219 = 524288 243 = 8796093022208
220 = 1048576 244 = 17592186044416
221 = 2097152 245 = 35184372088832
222 = 4194304 246 = 70368744177664
223 = 8388608 247 = 140737488355328

2x * 2y = 2x+y

Uppgift 1 (3 p)

En dator har många olika uppgifter som den behöver utföra för att underlätta för användarna. En del uppgifter utförs av operativsystemet, andra av applikationsprogram.

a) Ange en uppgift som det är operativsystemet som utför.

b) Ange en uppgift som operativsystemet inte utför.

c) Ange en uppgift där det inte är uppenbart ifall operativsystemet eller ett applikationsprogram ska lösa den.

Uppgift 2 (5 p)

En mikrokärna är en operativsystemkärna där man flyttat ut delar av kärnans uppgifter ut ur kärnan.

a) Det står att man "flyttat ut delar av kärnans uppgifter ut ur kärnan". Vart har man flyttat dem?

b) Varför vill man göra det, dvs vilka fördelar ger en mikrokärna?

c) Vilka nackdelar ger det?

d) Ge exempel på någon uppgift som man kan flytta ut ur kärnan.

e) Ge exempel på någon uppgift som man inte kan flytta ut ur kärnan. Varför går det inte att flytta ut den?

Uppgift 3 (5 p)

Här är ett C-program för Linux.
a) Vad skrivs ut när programmet körs?
b) Kan det bli olika utskrifter från gång till gång, och vad beror det i så fall på?

#include <stdio.h>
#include <unistd.h>

int x = 0;

int main(void) {
    int y = 0;
    fork();
    x = x + 1;
    y = y + 1;
    fork();
    x = x + 1;
    y = y + 1;
    fork();
    x = x + 1;
    y = y + 1;
    printf("x = %d, y = %d\n", x, y);
}

Uppgift 4 (5 p)

Här är ett annat C-program för Linux.
a) Vad skrivs ut när programmet körs?
b) Kan det bli olika utskrifter från gång till gång, och vad beror det i så fall på?

#include <stdio.h>
#include <pthread.h>

volatile int x = 0;

void *thread_body(void *arg) {
    int y = 0;
    x = x + 1;
    y = y + 1;
    printf("x = %d, y = %d\n", x, y);
    return NULL;
}

int main(void) {
    int z = 0;
    x = x + 1;
    z = z + 1;
    printf("x = %d, z = %d\n", x, z);
    pthread_t thread1, thread2;
    pthread_create(&thread1, NULL, thread_body, NULL);
    pthread_create(&thread2, NULL, thread_body, NULL);
    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);
    printf("x = %d, z = %d\n", x, z);
}

Uppgift 5 (7 p)

Som ett hobbyprojekt ska vi bygga en dator från grunden, med grindar ("gates") och transistorer i stället för en färdig processor. Datorn ska vara byteadresserad och ha virtuellt minne. Fysiska adresser består av 6 bitar, och virtuella adresser av 8 bitar. Offset är 4 bitar.

a) Hur stor är den virtuella adressrymden?

b) Hur stor är den fysiska adressrymden?

c) Hur stor är en virtuell minnessida ("page" på engelska)?

d) Hur stor är en fysisk frame ("ram" på svenska)?

e) Hur många frames (dvs platser för minnessidor) kan man ha i datorn?

f) Vi tänker oss att vi har en sidtabell ("page table") för en process, och att enligt den sidtabellen är virtuell minnessida 3 lagrad i fysisk frame 2. (Båda numreras med början på noll.) Ange en adress inom denna virtuella minnessida, och visa hur den översätts till en fysisk adress. Visa både hur översättningen görs och vad resultatet blir.

g) Om vi vill använda den här datorn till något, som till exempel beräkningar, vilka problem kommer vi att få?

Uppgift 6 (3 p)

När man ska lagra de data som hör till en process kan det vara svårt att hitta ett tillräckligt stort, sammanhängande utrymme i det fysiska primärminnet. Hur löser man det problemet på vanliga moderna datorer och med vanliga moderna operativsystem som Linux och Windows?

Uppgift 7 (3 p)

Varje process har normalt en egen minnesrymd, medan flera trådar kan dela samma minnesrymd. Man kan också med särskilda systemanrop få flera processer att dela ett gemensamt minnesutrymme. I Unix och Linux kan man använda systemanropet shm_open för att skapa delat minne, och systemanropet mmap för att lägga in detta delade minne i den virtuella minnesrymden för en process.

Om man låter två processer dela på ett gemensamt minnesutrymme, är en del av minnet alltså gemensamt för de två processerna. Har de blivit två trådar nu? Eller finns det skillnader jämfört med om de verkligen var trådar? Förklara!