There might also be more questions than you have time to answer, but do as many as you can.
There are solutions to some of the questions, but try to solve them yourself first.
a) Vad menas med filsystem? Används ordet i flera olika betydelser?
b) 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?
c) En filkatalog ("directory" på engelska), även kallad mapp eller folder, innehåller filer. Eller gör den det? Vad är det katalogerna i Unix innehåller? Beror det på vad man menar med "innehåller"?
d) Vilka data som hör till filer och filsystem finns i operativsystemkärnan?
#include <stdio.h> int main(void) { FILE *f1 = fopen("hej.txt", "w"); fprintf(f1, "Hej!\n"); fprintf(f1, "Hej hej!\n"); fclose(f1); FILE *f2 = fopen("hej.txt", "r"); int c; while ((c = getc(f2)) != EOF) putchar(c); fclose(f2); return 0; } |
b) Vad är det för skillnad på ett operativsystem och en hypervisor?
c) Ibland skiljer man på hypervisors av typ 0, 1 och typ 2. Vad är skillnaden?
d) Hur skulle du klassificera VirtualBox? Är det en hypervisor, och i så fall vilken typ?
På en vanlig Linux-dator (en server, eller en stationär eller bärbar dator) kan man normalt inte göra det, utan alla applikationsprogram som man installerar får alla rättigheter, och det går inte (särskilt lätt) att begränsa dem.
Påstående | Sant | Falskt | |
---|---|---|---|
a | I Linux kan programmet strace användas för att visa vilka systemanrop en process gör. | ||
b | Äldre operativsystem var baserade på avbrott (interrupts), så att när det till exempel fanns data att läsa från en disk så skickade disken ett avbrott till operativsystemkärnan. Ett avbrott medför att den körande processen stoppas, och kärnan tar över. I moderna operativsystem använder man i stället pollning, dvs att kärnan hela tiden ligger och kollar om det finns data. Med flerkärniga processorer blir det effektivare, eftersom man kan ha en pollningstråd på varje kärna. | ||
c | Systemanropet wait i Linux gör att processen stoppas det antal sekunder som man skickar som argument, och sedan fortsätter köra. | ||
d | Virtualisering innebär att trådar kan flyttas mellan olika processer. | ||
e | Demand paging innebär att varje process när den startas måste ange hur mycket minne (mätt i antal sidor, eller på engelska "pages") som den maximalt kommer att behöva. Om den skulle begära mer minne, kommer operativsystemet i stället att avsluta processen. | ||
f | När primärminnet blir fullt kan operativsystemet behöva kasta ut en del av sidorna ("pages"), och det finns flera olika algoritmer för att välja vilka som ska kastas ut. Det bästa är att kasta ut de sidor som det kommer att dröja längst tid innan de behövs, men man kan normalt inte veta vilka det är. Det näst bästa är att i stället använda en FIFO-kö, och kasta ut den sida som funnits i minnet längst. | ||
g | Thrashing är samma sak som garbage collection, eller skräpsamling på svenska, tillämpat på sidorna i primärminnet. Operativsystemet går igenom minnet, och kastar ut de sidor som inte längre går att nå från något av de körande programmen. |