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