Tentamen i ID2206, ID2200 samt IS1350 Operativsystem

Tentamen i ID2206, ID2200 samt IS1350
Operativsystem
Tisdagen 2014-03-18 kl 09:00-13:00
Examinator: ID2206, ID2200 Robert Rönngren, IS1350 Jim Dowling
Hjälpmedel: Inga
Tentamensfrågorna behöver inte återlämnas efter avslutad tentamen.
Ange vilken kurs du tenterar och vilken termin du registrerades ffg. på kursen.
Varje inlämnat blad skall förses med följande information:
ˆ Namn och personnummer
ˆ Nummer för behandlade uppgifter
ˆ Sidnummer
Rättning:
ˆ Alla svar, även på delfrågor, måste ha åtminstone en kortfattad motivering för att ge
poäng
Betygsgränser:
ˆ Godkänt (E) garanteras från 50% av den maximala poängen på respektive kurs
Frågor:
(1) Vad är en translation lookaside buffer, TLB, och varför behövs den?
(1p)
Vad innehåller normalt en entry i en TLB?
(1p)
I ett virtuellminnessystem baserat på paging så görs adressöversättningen vid exekveringen.
Har man en sidtabell i vanligt minne så får man minst en fördubbling av minnesaccesstiden
om man först måste slå upp översättninngen sida-¿ ram i sidtabellen i vanligt minne och sedan
accessa den minnesposition man avsåg. Delvis kan det här problemet minskas om man har
sidtabellerna i de vanliga cacharna. Men för att få acceptabel prestanda så inför man oftast
en liten, mycket snabb tabell i hårdvara nära processorn där man håller de senast accessade
adressöversättningrana i. Den kallas Translation Lookaside Buffer.
TLB:n måste innehålla ¡Sidnr, Ramnr, övrig info från sidtabellen som skyddsbitar, PID¿,
Pid behövs om man inte vill behöva tömma hela TLB:n då man byter process.
2014-03-18
Sidan 1/5
(2) När man bygger distribuerade system, kan man använda både blockerande- och ickeblockerande kommunikation. Beskriv en viktig fördel och en viktig nackdel med att vänta tills
ett meddelande har skickats istället för att vänta tills mottagaren har tagit emot meddelandet.
(2p)
Non-blocking sockets kan vara både TCP och UDP - dvs, non-blocking TCP är inte nödvändigtvis
mindre pålitligt än blocking TCP. Vad är annorlunda är att clienten som skickar medelandet
blockeras inte - clienten kan fortsätta göra beräkningar. Non-blocking skalar bättre på multicore hårdvara. En nackdel är att det är svårare att programmera message-passing applikationer
än RPC applikationer, eftersom flödeskontroll inte längre är sekventiellt.
(3) Förklara vad följände 64bitars NASM kod gör. Vad händer om vi byter positioner av rad
9 och rad 12 (dvs., flytter rad 9 till rad 12 och rad 12 till rad 9)? Varför?
(2p)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
s e c t i o n . data
msg :
db
. len :
equ
” Tentan i d a g ! ” , 10
$ − msg
section . text
global start
start :
mov
mov
mov
mov
syscall
mov
mov
syscall
rax ,
rdi ,
rsi ,
rdx ,
0 x1 ; w r i t e
2
msg
msg . l e n
rax , 0 x3c ; e x i t
rdi , 0
Programmet skriver meddelandet ’Tentan idag!’ till stderr (fildescriptor 2). Ingenting
händer när vi flytter raderna. När vi anropar syscall, däremot, måste alla parametrar vara p
a plats, så att kärnan kan avläer dem och syscall nummret.
(4) Vilka delar av den virtuella adressrymden är delade mellan trådar i en process?
(1p)
i) Stack
ii) Heap
iii) BSS
iv) Data
v) Text
Samtliga utom stacken som varje tråd har en egen privat. (BSS Block Started by Symbol,
dataarea för globala variabler med odefinierat eller nollställt initialvärde)
(5) Linux har två systemcall clone och fork som kan användas för att skapa en ny process.
Förklara vad clone och fork gör och skillnaden mellan dem.
(1p)
Vilken systemcall brukar trådbibliotek i Linux använda för att skapa tråder? Varför?
(1p)
Fork skapar en ny barn process som får en kopia av föreldrars adressrymd, men en copy-onwrite kopia. Clone skapar en ny process som delar det mesta (förrutom stack) med sin föreldrar
process. Clone används för att skapar tråder i Linux.
Sidan 2/5
2014-03-18
(6) DMA kan reducera tiden för att överföra data till/från minne jämfort med ren avbrottstyrd
I/O. Förklara hur DMA fungerar och varför DMA är snabbare.
(2p)
Vid avbrottstyrd I/O måste CPU:n ta hand om varje avbrott, t.ex. efter varje överfört
tecken. Vid DMA har man en ”slav-processor” som kan instrueras att föra över större mängder
data till/från minne och bara avbryta CPU:n då hela överföringen är klar. DMA är alltså at
föredra vid överföring av atörre mängder data.
(7) Hur många sidfel får man givet ett primärminne om 4 ramar som är tomt från början,
ren demand-paging och följande referenssträng:
743645135235762
För sidutbytesalgoritmerna FIFO, LRU och OPT.
(1p)
Fifo 10, LRU 11, OPT 8
(8) Svältning är ett problem man måste ta hänsyn till då man inför prioritetsbaserad schemaläggning
av processer. Beskriv hur en schemaläggare kan förhindra att problemet uppstår.
(1p)
Ett annat problem kan uppstår när en tråd exekveras över en längre tid på en multiprocessor
dator som kör Linux. Tråden kan context switchas ofta och schemaläggas på olika processorer.
Förklara varför problemet uppstår och hur man kan förhindra att problemet uppstår.
(1p)
Schemaläggare kan temporärt öka prioritet för en processs schemaläggningen från basprioriteten. Man vill sedan sänka den ökade prioritet, ibland genom aging - man antingen sänker
prioriteten för processer som fått exekvera mycket eller höjer prioriteten för processer som inte
fått exekvera eller som fått exekvera lite. Man kan använda affinity-based schemaläggning för
att se till att en tråd fortsätter köra på samma CPUn. Man kan också konfigurera linux så att
alla avbrott hanteras av bara en CPU - en som inte kör tråden.
(9) Beskriv kortfattat två fördelar med distribuerade filsystem (som, t.ex. NFS) jämfört med
lokala filsystem.
(1p)
Distribuerade filsystem underlättar delning av filer/mapper mellan användare. Distribuerade filsystem är lättre att administrera uppdatera mjukvara, auktorisering, osw. Distribuerad
filsystem är mer skalbar de kan innehåller många datorer och stödja större filsystem.
(10) Varför genererar kompilatorer i de flesta moderna operativsystem relokerbar kod? (1p)
Detta ges av att man i virtuellminnessystem inte före exekveringen vet i) var koden kommer
att laddas i minnet; ii) Om man länkar ihop flera kodmoduler vet man inte exakt var i den
laddbara modulen de hamnar (hur långt från början)
(11) Kalle är ägare till en fil i ett Unix filsystem som just nu kan läsas/skrivas/exekveras av
alla änvändare i systemet. Hur kan Kalle skyddar filen så att ingen annan kan läsa, skriva eller
exekvera filen?
(1p)
Chmod kan användas för att ändra rättigheterna på filen. Kom ihåg att ta bort rättigheterna
för gruppen också - man vill att ingen annan har tillgång till filen. Det finns 3 grupper av
användare alla, gruppen, och ägaren. Om man ägar filen själv, man kan se till att andra
användare inte tillhör grupperna som har rättigheter till filen eller man kan sätta rättighera så
att bara ägaren kan läsa/skriva/exekvera filen.
(12) I ett Unix filsystem, vilka datastrukturer används för att hantera öppna filer?
I ett Unix filsystem, hur håller man ordning på lediga blockar på disken?
2014-03-18
(1p)
(1p)
Sidan 3/5
Val av blockstorlek är ett viktigt beslut när man konfiguerera ett Unix filsystem. Beskriv
kortfattat fördeler och nackdelar med ett blockstorlek på 1 KB.
(1p)
Per process fil-descriptor tabeller, Gemensam tabell för öppna filer, i-nodes tabell för öppna
filer. Ett bitvektor är inte bra eftersom den växer linärt med antal blockar. Man kan använda
länkade listor som är lagrada i lediga blockar. Fördelar med 1KB blocker: mindre intern
defragmentering, snabbare att läsa in en block till minnet. Nackdelar med små blocker: page
storleken är oftast 4 KB i Unix/Linux, och när man läser in blockar från disk, man alltid läser
in 4 blockar åt gången. Relativt mer overhead per block med små blockstorlekar. Kan leda till
mer extern defragmentering.
(13) Vilka information sparas i Windows Registry?
(1p)
Registry i Windows sparar inställningar, information och datorn, filextensioner, och användare.
Registry är en inställningsdatabas. Registryn är uppdelat i inställningar för hela datorn, alla
användare och även för varje användare.
(14) Beskriv vad händer (kontrollflöde) när man anropar en funktion från användernivå som
i sin tur anropar en device driver i ett UNIX/LINUX system. Beskriv vilka datastrukturer man
går igenom i kärnan.
(2p)
En device-driver anropas indirekt via ett systemanrop, t.ex read(), write(), när man skriver/läser
till en enhet eller en fil. Abstraktionen för en enhet i UNIX/LINUX är en fil med tillhörande
i-nod. Det betyder att oavsett om man gör I/O mot en fil eller en specifik I/O enhet har
den en i-nod och i den finns information om device-id (major device number) Major device
number används för att i device-driver vektorn slå upp en datastruktur med pekarna till
gränssnittsfunktionerna för device-drivern. Gränssnittsfunktionerna implementerar funktionerna motsvarande systemanropen för att manipulera filer (read(), write() etc.)
(15) Vilka är Coffmans fyra villkor för deadlock?
(1p)
Ömsesidig uteslutning Behåll och vänta Ingen pre-emption (konfiskering ) Cirkulär väntan
(16) Varför kan en flertrådad process ibland exekvera snabbare även på en dator med en enda
processorkärna än motsvarande process som bara utnyttjar en tråd (en enkel-trådad process)?
(1p)
Om man har kärntrådar kan man överlappa I/O och beräkningar. I en enkeltrådad process
blockeras hela processen om man gör blockerande I/O. I en flertrådad process blockeras bara
den tråd som gör I/O om man har kärntrådar.
(17) Context switch tiden att byta mellan två kärntrådar är betydligt mindre än att byta
mellan två processer. Förklara varför och beskriv vilket tillstånd man byter ut när man context
switchar både processer och trådar.
(1p)
Att byter mellan processer kräver att man byter ut sidtabeller, tabeller med fildescriptorer
osv. Dessa delas av trådar i en och samma process och vid trådbyte behöbver man i princip
bara byta stack och programpekare och registerinnehåll.
(18) Vad kan händer om ett virus kan lyckas ta kontroll över avbrottshanteraren i kärnan.
(1p)
Man kan logga den mesta I/O som görs på maskinen, dvs., allt som händer på tangentbord,
mus tryckningar, osv.
Sidan 4/5
2014-03-18
(19) Hur skiljer sig periodiska jobb från aperiodiska jobb i ett realtidsoperativ system? (1p)
Beskriv bivillkorna schemaläggningensalgoritmer måste ta hänsyn till i hårda realtidsystem.
(1p)
Ett periodiskt jobb sköter en uppgift som utförs med regelbundna intervall. Aperiodiska
jobb är inte periodiska utan förorsakas av någon händelse i systemet.
Bivillkor i en realtidsschemaläggningsalgoritm för att klara alla jobb:
ˆ Deadlines
ˆ Beräkningstider, C
ˆ Starttider, S
ˆ Ordning mellan jobb (ex. jobb A måste vara klart före jobb B)
ˆ Vikter
(20) Operativsystem beskrivs ibland som ”resurshanterare” och ibland som ”virtuella maskiner”. Beskriv kortfattat de olika synvinkel!
(1p)
Ser man OS:et som en virtuell (utökad/extended) maskin är de primära målen att: Isolera
program från hårdvaran, Bättre programmeringsmodell, Portabilitet. Ser man OS:et främst
som en resurshanterare ligger istället fokus på vilka resurser OS:et hanterar: Filsystem, Minne,
CPU tid, I/O enheter
2014-03-18
Sidan 5/5