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




Tentamen i

Operativsystem för civilingenjörer

onsdag 5 juni 2019

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


Hjälpmedel: Inga.
Poängkrav: Maximal poäng är 32. För godkänt betyg krävs 16 poäng.
Resultat: Meddelas på kursens hemsida eller via e-post senast onsdag 26 juni 2019.
Återlämning av tentor: Elektroniskt via Studentforum.
Examinator och jourhavande: Thomas Padron-McCarthy, telefon 070 - 73 47 013.



LYCKA TILL!

Uppgift 1 (2 p)

Vad är ett operativsystem?

Uppgift 2 (3 p)

Vilka är operativsystemets viktigaste uppgifter?

Uppgift 3 (3 p)

Här är ett C-program för Linux, kallat "program 1", som läser en gigabyte data från en fil:

#include <unistd.h>
#include <fcntl.h>

#define KILO 1024
#define MEGA (KILO*KILO) // 1048576
#define GIGA (KILO*KILO*KILO) // 1073741824

char data[GIGA];

int main(void) {
    int fd = open("data.bin", O_RDONLY);
    for (int i = 0; i < KILO; ++i) {
        read(fd, &data[i * MEGA], MEGA);
    }
    close(fd);
}
I en annan version av samma program, kallat "program 2", byter vi ut for-loopen mot den här:
    for (int i = 0; i < MEGA; ++i) {
        read(fd, &data[i * KILO], KILO);
    }
(Skillnaden är alltså att vi bytt plats på "MEGA" och "KILO".)

Programmen gör samma sak, och de fungerar korrekt, men man kan förvänta sig att ett av programmen går betydligt snabbare än det andra.

a) Vilket program är snabbast?
b) Förklara varför skillnaden mellan programmen blir så stor!

Uppgift 4 (5 p)

Operativsystemkärnan har, precis som många andra dataprogram, en hel del data som den håller reda på. Beskriv de viktigaste, och vilka datastrukturer man använder för dem.

Uppgift 5 (3 p)

En mikrokärna ("micro-kernel" på engelska) är ett sätt att bygga operativsystem. Vad innebär det att en operativsystem har en mikrokärna? Vilka fördelar och nackdelar medför det?

Uppgift 6 (3 p)

Vad är en process? Hur skiljer sig en process från en tråd?

Uppgift 7 (2 p)

Här är ett C-program för Linux. Vad skrivs ut när programmet körs?

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

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

Uppgift 8 (4 p)

a) Vad innebär virtuellt minne?

b) Varför måste man ha stöd i hårdvaran när man använder virtuellt minne?

c) Varför är sidstorlekar ("page size" på engelska) alltid jämna tvåpotenser? Visa med exempel!

Uppgift 9 (3 p)

I Unix finns en datastruktur som kallas i-nod (på engelska "i-node" eller "inode"). Vad används den till, och vad innehåller den?

Uppgift 10 (4 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?