Tentamen i ID2206, ID2200 samt IS1350 Operativsystem
Tisdagen 2014-03-18 kl 09:00-13:00
Examinator: ID2206, ID2200 Robert R¨onngren, IS1350 Jim Dowling Hj¨alpmedel: Inga
Tentamensfr˚agorna beh¨over inte ˚aterl¨amnas efter avslutad tentamen.
Ange vilken kurs du tenterar och vilken termin du registrerades ffg. p˚a kursen.
Varje inl¨amnat blad skall f¨orses med f¨oljande information:
Namn och personnummer
Nummer f¨or behandlade uppgifter
Sidnummer R¨attning:
Alla svar, ¨aven p˚a delfr˚agor, m˚aste ha ˚atminstone en kortfattad motivering f¨or att ge po¨ang
Betygsgr¨anser:
Godk¨ant (E) garanteras fr˚an 50% av den maximala po¨angen p˚a respektive kurs
Fr˚ agor:
(1) Vad ¨ar en translation lookaside buffer, TLB, och varf¨or beh¨ovs den? (1p)
Vad inneh˚aller normalt en entry i en TLB? (1p)
I ett virtuellminnessystem baserat p˚a paging s˚a g¨ors adress¨overs¨attningen vid exekveringen.
Har man en sidtabell i vanligt minne s˚a f˚ar man minst en f¨ordubbling av minnesaccesstiden om man f¨orst m˚aste sl˚a upp ¨overs¨attninngen sida-¿ ram i sidtabellen i vanligt minne och sedan accessa den minnesposition man avs˚ag. Delvis kan det h¨ar problemet minskas om man har sidtabellerna i de vanliga cacharna. Men f¨or att f˚a acceptabel prestanda s˚a inf¨or man oftast en liten, mycket snabb tabell i h˚ardvara n¨ara processorn d¨ar man h˚aller de senast accessade adress¨overs¨attningrana i. Den kallas Translation Lookaside Buffer.
TLB:n m˚aste inneh˚alla ¡Sidnr, Ramnr, ¨ovrig info fr˚an sidtabellen som skyddsbitar, PID¿, Pid beh¨ovs om man inte vill beh¨ova t¨omma hela TLB:n d˚a man byter process.
(2) N¨ar man bygger distribuerade system, kan man anv¨anda b˚ade blockerande- och icke- blockerande kommunikation. Beskriv en viktig f¨ordel och en viktig nackdel med att v¨anta tills ett meddelande har skickats ist¨allet f¨or att v¨anta tills mottagaren har tagit emot meddelandet.
(2p)
Non-blocking sockets kan vara b˚ade TCP och UDP - dvs, non-blocking TCP ¨ar inte n¨odv¨andigtvis mindre p˚alitligt ¨an blocking TCP. Vad ¨ar annorlunda ¨ar att clienten som skickar medelandet blockeras inte - clienten kan forts¨atta g¨ora ber¨akningar. Non-blocking skalar b¨attre p˚a multi- core h˚ardvara. En nackdel ¨ar att det ¨ar sv˚arare att programmera message-passing applikationer
¨
an RPC applikationer, eftersom fl¨odeskontroll inte l¨angre ¨ar sekventiellt.
(3) F¨orklara vad f¨olj¨ande 64bitars NASM kod g¨or. Vad h¨ander om vi byter positioner av rad 9 och rad 12 (dvs., flytter rad 9 till rad 12 och rad 12 till rad 9)? Varf¨or? (2p) 1 s e c t i o n . d a t a
2 msg : db ” Tentan i d a g ! ” , 10 3 . l e n : equ $ − msg
4
5 s e c t i o n . t e x t 6 g l o b a l s t a r t 7
8 s t a r t :
9 mov rax , 0 x1 ; w r i t e
10 mov r d i , 2
11 mov r s i , msg
12 mov rdx , msg . l e n 13 s y s c a l l
14 mov rax , 0 x3c ; e x i t
15 mov r d i , 0
16 s y s c a l l
Programmet skriver meddelandet ’Tentan idag!’ till stderr (fildescriptor 2). Ingenting h¨ander n¨ar vi flytter raderna. N¨ar vi anropar syscall, d¨aremot, m˚aste alla parametrar vara p a plats, s˚a att k¨arnan kan avl¨aer dem och syscall nummret.
(4) Vilka delar av den virtuella adressrymden ¨ar delade mellan tr˚adar i en process? (1p) i) Stack
ii) Heap iii) BSS iv) Data v) Text
Samtliga utom stacken som varje tr˚ad har en egen privat. (BSS Block Started by Symbol, dataarea f¨or globala variabler med odefinierat eller nollst¨allt initialv¨arde)
(5) Linux har tv˚a systemcall clone och fork som kan anv¨andas f¨or att skapa en ny process.
F¨orklara vad clone och fork g¨or och skillnaden mellan dem. (1p) Vilken systemcall brukar tr˚adbibliotek i Linux anv¨anda f¨or att skapa tr˚ader? Varf¨or? (1p) Fork skapar en ny barn process som f˚ar en kopia av f¨oreldrars adressrymd, men en copy-on- write kopia. Clone skapar en ny process som delar det mesta (f¨orrutom stack) med sin f¨oreldrar process. Clone anv¨ands f¨or att skapar tr˚ader i Linux.
(6) DMA kan reducera tiden f¨or att ¨overf¨ora data till/fr˚an minne j¨amfort med ren avbrottstyrd I/O. F¨orklara hur DMA fungerar och varf¨or DMA ¨ar snabbare. (2p) Vid avbrottstyrd I/O m˚aste CPU:n ta hand om varje avbrott, t.ex. efter varje ¨overf¨ort tecken. Vid DMA har man en ”slav-processor” som kan instrueras att f¨ora ¨over st¨orre m¨angder data till/fr˚an minne och bara avbryta CPU:n d˚a hela ¨overf¨oringen ¨ar klar. DMA ¨ar allts˚a at f¨oredra vid ¨overf¨oring av at¨orre m¨angder data.
(7) Hur m˚anga sidfel f˚ar man givet ett prim¨arminne om 4 ramar som ¨ar tomt fr˚an b¨orjan, ren demand-paging och f¨oljande referensstr¨ang:
7 4 3 6 4 5 1 3 5 2 3 5 7 6 2
F¨or sidutbytesalgoritmerna FIFO, LRU och OPT. (1p)
Fifo 10, LRU 11, OPT 8
(8) Sv¨altning ¨ar ett problem man m˚aste ta h¨ansyn till d˚a man inf¨or prioritetsbaserad schemal¨aggning av processer. Beskriv hur en schemal¨aggare kan f¨orhindra att problemet uppst˚ar. (1p) Ett annat problem kan uppst˚ar n¨ar en tr˚ad exekveras ¨over en l¨angre tid p˚a en multiprocessor dator som k¨or Linux. Tr˚aden kan context switchas ofta och schemal¨aggas p˚a olika processorer.
F¨orklara varf¨or problemet uppst˚ar och hur man kan f¨orhindra att problemet uppst˚ar. (1p) Schemal¨aggare kan tempor¨art ¨oka prioritet f¨or en processs schemal¨aggningen fr˚an baspri- oriteten. Man vill sedan s¨anka den ¨okade prioritet, ibland genom aging - man antingen s¨anker prioriteten f¨or processer som f˚att exekvera mycket eller h¨ojer prioriteten f¨or processer som inte f˚att exekvera eller som f˚att exekvera lite. Man kan anv¨anda affinity-based schemal¨aggning f¨or att se till att en tr˚ad forts¨atter k¨ora p˚a samma CPUn. Man kan ocks˚a konfigurera linux s˚a att alla avbrott hanteras av bara en CPU - en som inte k¨or tr˚aden.
(9) Beskriv kortfattat tv˚a f¨ordelar med distribuerade filsystem (som, t.ex. NFS) j¨amf¨ort med
lokala filsystem. (1p)
Distribuerade filsystem underl¨attar delning av filer/mapper mellan anv¨andare. Distribuer- ade filsystem ¨ar l¨attre att administrera uppdatera mjukvara, auktorisering, osw. Distribuerad filsystem ¨ar mer skalbar de kan inneh˚aller m˚anga datorer och st¨odja st¨orre filsystem.
(10) Varf¨or genererar kompilatorer i de flesta moderna operativsystem relokerbar kod? (1p) Detta ges av att man i virtuellminnessystem inte f¨ore exekveringen vet i) var koden kommer att laddas i minnet; ii) Om man l¨ankar ihop flera kodmoduler vet man inte exakt var i den laddbara modulen de hamnar (hur l˚angt fr˚an b¨orjan)
(11) Kalle ¨ar ¨agare till en fil i ett Unix filsystem som just nu kan l¨asas/skrivas/exekveras av alla ¨anv¨andare i systemet. Hur kan Kalle skyddar filen s˚a att ingen annan kan l¨asa, skriva eller
exekvera filen? (1p)
Chmod kan anv¨andas f¨or att ¨andra r¨attigheterna p˚a filen. Kom ih˚ag att ta bort r¨attigheterna f¨or gruppen ocks˚a - man vill att ingen annan har tillg˚ang till filen. Det finns 3 grupper av anv¨andare alla, gruppen, och ¨agaren. Om man ¨agar filen sj¨alv, man kan se till att andra anv¨andare inte tillh¨or grupperna som har r¨attigheter till filen eller man kan s¨atta r¨attighera s˚a att bara ¨agaren kan l¨asa/skriva/exekvera filen.
(12) I ett Unix filsystem, vilka datastrukturer anv¨ands f¨or att hantera ¨oppna filer? (1p) I ett Unix filsystem, hur h˚aller man ordning p˚a lediga blockar p˚a disken? (1p)
Val av blockstorlek ¨ar ett viktigt beslut n¨ar man konfiguerera ett Unix filsystem. Beskriv kortfattat f¨ordeler och nackdelar med ett blockstorlek p˚a 1 KB. (1p) Per process fil-descriptor tabeller, Gemensam tabell f¨or ¨oppna filer, i-nodes tabell f¨or ¨oppna filer. Ett bitvektor ¨ar inte bra eftersom den v¨axer lin¨art med antal blockar. Man kan anv¨anda l¨ankade listor som ¨ar lagrada i lediga blockar. F¨ordelar med 1KB blocker: mindre intern defragmentering, snabbare att l¨asa in en block till minnet. Nackdelar med sm˚a blocker: page storleken ¨ar oftast 4 KB i Unix/Linux, och n¨ar man l¨aser in blockar fr˚an disk, man alltid l¨aser in 4 blockar ˚at g˚angen. Relativt mer overhead per block med sm˚a blockstorlekar. Kan leda till mer extern defragmentering.
(13) Vilka information sparas i Windows Registry? (1p)
Registry i Windows sparar inst¨allningar, information och datorn, filextensioner, och anv¨andare.
Registry ¨ar en inst¨allningsdatabas. Registryn ¨ar uppdelat i inst¨allningar f¨or hela datorn, alla anv¨andare och ¨aven f¨or varje anv¨andare.
(14) Beskriv vad h¨ander (kontrollfl¨ode) n¨ar man anropar en funktion fr˚an anv¨anderniv˚a som i sin tur anropar en device driver i ett UNIX/LINUX system. Beskriv vilka datastrukturer man
g˚ar igenom i k¨arnan. (2p)
En device-driver anropas indirekt via ett systemanrop, t.ex read(), write(), n¨ar man skriver/l¨aser till en enhet eller en fil. Abstraktionen f¨or en enhet i UNIX/LINUX ¨ar en fil med tillh¨orande i-nod. Det betyder att oavsett om man g¨or 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¨ands f¨or att i device-driver vektorn sl˚a upp en datastruktur med pekarna till gr¨anssnittsfunktionerna f¨or device-drivern. Gr¨anssnittsfunktionerna implementerar funktion- erna motsvarande systemanropen f¨or att manipulera filer (read(), write() etc.)
(15) Vilka ¨ar Coffmans fyra villkor f¨or deadlock? (1p)
Omsesidig uteslutning Beh˚¨ all och v¨anta Ingen pre-emption (konfiskering ) Cirkul¨ar v¨antan
(16) Varf¨or kan en flertr˚adad process ibland exekvera snabbare ¨aven p˚a en dator med en enda processork¨arna ¨an motsvarande process som bara utnyttjar en tr˚ad (en enkel-tr˚adad process)?
(1p) Om man har k¨arntr˚adar kan man ¨overlappa I/O och ber¨akningar. I en enkeltr˚adad process blockeras hela processen om man g¨or blockerande I/O. I en flertr˚adad process blockeras bara den tr˚ad som g¨or I/O om man har k¨arntr˚adar.
(17) Context switch tiden att byta mellan tv˚a k¨arntr˚adar ¨ar betydligt mindre ¨an att byta mellan tv˚a processer. F¨orklara varf¨or och beskriv vilket tillst˚and man byter ut n¨ar man context
switchar b˚ade processer och tr˚adar. (1p)
Att byter mellan processer kr¨aver att man byter ut sidtabeller, tabeller med fildescriptorer osv. Dessa delas av tr˚adar i en och samma process och vid tr˚adbyte beh¨obver man i princip bara byta stack och programpekare och registerinneh˚all.
(18) Vad kan h¨ander om ett virus kan lyckas ta kontroll ¨over avbrottshanteraren i k¨arnan.
(1p) Man kan logga den mesta I/O som g¨ors p˚a maskinen, dvs., allt som h¨ander p˚a tangentbord, mus tryckningar, osv.
(19) Hur skiljer sig periodiska jobb fr˚an aperiodiska jobb i ett realtidsoperativ system? (1p) Beskriv bivillkorna schemal¨aggningensalgoritmer m˚aste ta h¨ansyn till i h˚arda realtidsystem.
(1p) Ett periodiskt jobb sk¨oter en uppgift som utf¨ors med regelbundna intervall. Aperiodiska jobb ¨ar inte periodiska utan f¨ororsakas av n˚agon h¨andelse i systemet.
Bivillkor i en realtidsschemal¨aggningsalgoritm f¨or att klara alla jobb:
Deadlines
Ber¨akningstider, C
Starttider, S
Ordning mellan jobb (ex. jobb A m˚aste vara klart f¨ore jobb B)
Vikter
(20) Operativsystem beskrivs ibland som ”resurshanterare” och ibland som ”virtuella mask-
iner”. Beskriv kortfattat de olika synvinkel! (1p)
Ser man OS:et som en virtuell (ut¨okad/extended) maskin ¨ar de prim¨ara m˚alen att: Isolera program fr˚an h˚ardvaran, B¨attre programmeringsmodell, Portabilitet. Ser man OS:et fr¨amst som en resurshanterare ligger ist¨allet fokus p˚a vilka resurser OS:et hanterar: Filsystem, Minne, CPU tid, I/O enheter