Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University Datum för tentamen Date of exam Sal Room Tid Time Kurskod Course code Provkod LADOK code Kursnamn/benämning Course name Institution Department Antal uppgifter som ingår i tentamen Number of assignments Antal sidor på tentamen (inkl. försättsbladet) Number of pages including cover Jour/Kursansvarig Responsible/Examiner Telefon till examinator Phone to examiner Besöker salen ca kl. Time of exam visit Kursadministratör Course administrator Tillåtna hjälpmedel Allowed aids Övrigt Other information Typ av papper Paper to use Antal anmälda Number of students signed up 2011-05-28 KÅRA 14:00-18:00 TDDI04 TEN1 Operativsystem, realtids- och processprogrammering Concurrent programming, Operating systems and real-time operating systems IDA 8 uppgifter med totalt 90p 8 assignments for a total of 90 points 5 Klas Arvidsson klas.arvidsson@liu.se 013-28 21 46 Ungefär 1 timme efter tentamens start About 1 hour after exam start Gunilla Mellheden 013-28 22 97, 070-597 90 44, gunilla.mellheden@liu.se Ordbok, enkel miniräknare (+,-,*,/) Dictionary, pocket calculator. Precise, explained and clearly motivated assumptions, statements and reasoning raise the impression and are required for highest score. Solve at most one assignment per sheet. If in doubt, state clearly your interpretation of the question, your assumptions, and answer according to that. Preliminary graded: U < 50% < 3 < 67% < 4 < 84% < 5 Grades may be raised or lowered based on overall impression. Results available within 10 working days. Rutigt, linjerat eller blankt No preference 61 (+1 som glömde anmäla i tid) 1 (5)
OBS! Du behöver inte lösa uppgifterna i ordning. Börja med de uppgifter du kan besvara direkt! Del 1 (frivillig om du klarat duggan) 1. Operativsystemets grundstenar (15p) a) Förklara tre olika och viktiga målsättningar med ett operativsystem. (2p) b) Förklara hur operativsystemet kan låta processer använda CPU och dela CPU med andra processer men behålla kontrollen och hindra att en process monopoliserar CPU. (4p) c) Förklara syftet med kernel mode bit i CPU och när sätts respektive nollställs den? (4p) d) Definiera termerna program, process och tråd. (5p) 2. Minneshantering (15p) Figuren till höger visar det virtuella minnet för process X och Y. Paging i en nivå används. Den frame som är längst ned i fysiska minnet är 4 KiB stor (2 12 byte). Systemet använder totalt 16-bit till adresser. I figuren visas inte de övre 3 fjärdedelarna av processernas minnesrymd och pagetable av utrymmesskäl (pagetable har alltså 16 index, men bara index 0-3 visas i figuren). Adresser i den del av minnet som inte visas är aldrig giltiga för processen att använda. I pagetable visas två kolumner, först ett framenummer, sedan valid bit. All numrering av pages, frames, index, eller process X STACK CODE process Y STACK CODE pagetable X 7 1 3 0 3 1 2 1 pagetable Y 2 0 7 0 3 1 5 1 fysiskt minne adresser startar på 0 längst ned i figuren. Du skall anta att pages STACK, och CODE finns på disk om de inte finns i fysiskt minne. Du skall även anta att frame 7 inte använts på mycket länge. En tabell över hexadecimala nummer och bitmönster finns till höger om du behöver. a) Process X skall läsa logisk adress 0x0123 (hexadecimalt). Vilken 0 0000 8 1000 fysisk adress kommer läsas? Hur kom du fram till det? (2p) 1 0001 9 1001 b) Process Y skall läsa logisk adress 0x3456 (hexadecimalt). (5p) 2 0010 A 1010 Förklara kort hur OS kommer att agera (5 poänggivande steg). 3 0011 B 1011 4 0100 C 1100 c) Process Y begär via systemanrop att skriva 100 byte från en fil 5 0101 D 1101 och anger via parametrar att OS skall hämta de 100 byte som 6 0110 E 1110 skall skrivas från processens adress 0x1FFA (hexadecimalt) och 7 0111 F 1111 framåt. Förklara kort hur OS kommer att agera. (3p) d) Ett system med 32-bitars adressering skall använda paging. Antag att varje sida skall vara 1kiB (2 10 byte). Hur stor pagetable behöver varje process? Visa beräkningen. (2p) e) En process startar med en tom pagetable på ett tomt system med 4 frames. Sidåtkomster sker i följande sekvens: 1 2 1 3 1 4 1 5 1 3 1 2 Den page-replacement-algoritm som används är LRU. Visa med en tabell vilken page som finns i vilken frame vid varje tillfälle. Hur många pagefault uppstår? (3p) 2 (5)
3. Synkronisering (15p) På sista sidan finns C-kod för datastrukturen set. Ett set är en samling unika ord, och det finns funktioner för att lägga till ord, ta bort ord och kontrollera om ett ord finns i setet. Denna datastruktur används i en multi-trådad applikation, där det alltså kan hända att flera olika trådar samtidigt anropar funktioner för att manipulera en viss variabel av typen struct set. a) Visa en exekveringssekvens med två trådar som gör att samma ord läggs till på två olika platser i setet. (2p) b) Visa en exekveringssekvens med två trådar som gör att olika ord läggs till på samma plats i setet. (2p) c) Visa en sekvens med två trådar som kör remove på samma ord och en tråd som lägger till ett nytt ord, med resultatet att det tillagda ordet tas bort. (2p) d) Identifiera det som är kritiska sektioner i koden. Dessa skall vara så små som möjligt. Förklara vad det är som är kritiskt, vilka beroenden i koden som ej får brytas. (4p) e) Korrigera koden så att den fungerar så effektivt som möjligt. Förklara var nya variabler du använder placeras och initieras. Du skall anta att det finns en funktion som initierar en struct set så alla index är NULL från start. Du kan om du vill ta loss och lämna in sista sidan med korrigeringar. Du kan även beskriva ändringarna med hjälp av radnumren. (5p) Del 2 4. Deadlocks (10p) a) I ett datorsystem finns 1 resurs av typ A, 4 av typ B och 2 av typ C. Tabellerna nedan visar vad processerna P, Q och R behöver som mest (MAX) och använder just nu (NOW): MAX A B C NOW A B C TOTALT I SYSTEMET P 1 2 0 P 1 1 0 A B C Q 1 3 1 Q 0 1 1 1 4 2 R 0 1 2 R 0 0 1 P behöver alltså 1 resurs av typ A och 2 av typ C totalt, och har just nu en av typ A och en av typ B. Process Q begär i detta läge ytterligare en resurs av typ B. Motivera med hjälp av Bankers algoritm om operativsystemet skall godkänna eller neka begäran. (6p) b) Beskriv de fyra villkor som gäller för att deadlock skall kunna uppstå. (4p) 5. Säkerhet och tillgänglighet (8p) a) UNIX har en användare root som har full rättighet till ALLT. Förklara med hjälp av principle of least privilege på vilket sätt RBAC (Role Based Access Control) är bättre. (4p) b) RAID finns i nivåer 0 till 6. Beskriv fyra huvudsakliga skillnader mellan olika varianter. (4p) 6. Filsystem (8p) a) Motivera varför filer måste öppnas innan användning. (2p) b) För att hålla reda på vilka diskblock en fil använder kan operativsystemet använda linked allocation eller indexed allocation används. Jämför fördelar och nackdelar med de båda metoderna. (6p) 3 (5)
7. Diskschemaläggning (6p) a) Motivera tydligt hur det kommer sig att diskschemaläggning kan tjäna tid. Var/hur sker effektiviseringen som gör att tid kan sparas? (3p) b) Diskarmen på Arvids disk befinner sig över spår 101 och använder SSTF. Arvid kör nu program som snabbt genererar förfrågningar på data från sektorer i följande spår: 25, 141, 96, 82, 189, 7, 45, 190, 91, 217, 84, 96, 4, 59, 243, 90, 177, 23, 59, 102, 30. I vilken ordning kommer OS schemalägga förfrågningarna? (3p) 8.Schemaläggning / Realtidssystem (13p) process/task length period N --- N N 2 1 P 2 5 2 0.828 Q 2 8 3 0.779 R 1 10 4 0.756 ( S 5 11 ) 5 0.743 Tabellen ovan visar en lista på tasks med angiven värsta-falls exekveringstid och period. P har t.ex. behov att exekvera två tidsenheter var femte tidsenhet. Perioden utgör deadline. Den andra tabellen visar resultatet av en formel för några olika N. a) Beräkna genomsnittliga processorutnyttjandet för processerna P,Q,R i listan. (1p) b) Ange med ett par ords motivering om det är möjligt att schemalägga P,Q,R med algoritmen RMS (Rate Monotonic Scheduling) så att alla deadlines garanteras. (1p) c) Ange med ett par ords motivering om det är möjligt att schemalägga P,Q,R med EDF (Earliest Deadline First) så att alla deadlines garanteras. (1p) d) Task S tillkommer ibland till systemet. Visa hur RMS (Rate Monotonic Scheduling) schemalägger P,Q,R och S. (Skapa schema 30 tidsenheter långt.) (2p) e) Task S tillkommer ibland till systemet. Visa hur EDF (Earlies Deadline First) schemalägger P,Q,R och S. (Skapa schema 30 tidsenheter långt.) (4p) f) I både uppgift d) och e) missades någon deadline. Varför? Om vi antar att task S har en mjuk deadline, och P,Q,R hårda deadlines, vilken algoritm är lämpligast att använda? (2p) g) Om EDF används, hur kan man när S (med mjuk deadline) blir tillgänglig avgöra om det är säkert att lägga till den i ready-kön utan att riskera viktigare deadlines? (2p) 1 4 (5)
1: struct set { 2: 3: char* word[size]; 4: 5: }; 6: 7: int find_word(struct set* s, char* word) { 8: int i; 9: 10: for ( i = 0; i < SIZE; ++i) { 11: 12: if ( strcmp( s->word[i], word ) == 0 ) 13: 14: return i; /* found match */ 15: 16: } 17: 18: return -1; 19: } 20: 21: void add_word(struct set* s, char* word) { 22: int i; 23: 24: if ( valid_word(word) ) 25: 26: return; /* invalid characters in word */ 27: 28: if ( find_word(s, word)!= -1 ) 29: 30: return; /* already added */ 31: 32: for ( i = 0; i < SIZE; ++i) { 33: 34: if ( s->word[i] == NULL ) 35: 36: break; /* found free slot */ 37: 38: } 39: 40: if ( i >= SIZE ) 41: 42: return; /* no space left */ 43: 44: s->word[i] = word; 45: 46: } 47: 48: void remove_word(struct set* s, char* word) { 49: 50: int i = find_word(s, word); 51: 52: if ( i == -1 ) 53: 54: return; /* already removed or never added */ 55: 56: s->word[i] = NULL; 57: 58: } 5 (5)