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 under skrivtid Phone during exam Besöker salen ca kl. Time of exam visit Kuradministratör Course administrator Tillåtna hjälpmedel Allowed aids Övrigt Other information Typ av papper Paper to use Antal anmälda Number of exams 2010-01-09 TER2 14:00-18:00 TDDI04 TEN1 Operativsystem, realtids- och processprogrammering Concurrent programming, Operating systems and real-time operating systems IDA 7 uppgifter för maximalt 80p 7 assignments for a total of 80 points 5 Klas Arvidsson klaar@ida.liu.se 013-28 21 46 Start + 1h Gunilla Mellheden 013-28 22 97, gunme@ida.liu.se Ordlista och enkel miniräknare (+,-,*,/) Dictionary and simple pocket calculator (+,-,*,/) Preliminary graded: U < 50% < 3 < 67% < 4 < 84% < 5 Grades may be raised or lowered based on overall impression. Precise, explained and clearly motivated assumptions, statements and reasoning raise the impression and may triple the points. Solve at most one assignment per sheet. Results available within 10 working days. Read all assignments and estimate how many points you can get before you start. Rutigt, linjerat eller blankt No preference 21 1
1. (12p) Ett operativsystem som använder en enkel algoritm för att allokera (fysiskt) minne kan ibland behöva använda compaction. a) Namnge en allokeringsmetod metod där behov av compaction kan uppstå. (1p) b) Förklara hur det problem som motverkas av compaction uppstår. (2p) c) Namnge problemet som skapar behov av compaction. (1p) d) Namnge en allokeringsmetod som helt undviker att detta problem alls uppstår. (2p) e) Förklara noga hur metoden fungerar (ger poäng även om fel val gjordes i fråga d). (5p) f) Ge namnet på ett annat problem som kan uppstå med denna andra metod. (1p) 2. (8p) Adam och Eva känner inte varandra sedan tidigare. Nu avser de föra en hemlig diskussion avseende huruvida de skall äta eller inte äta ett visst äpple. Eva skickar sin publika nyckel till Adam, och Adam skickar sin publika nyckel till Eva. Nu kan Eva kryptera sina meddelanden med Adams publika nyckel och skicka till Adam. Endast Adams privata nyckel kan avkryptera meddelandet. På motsvarande sätt kan Adam kryptera det han skickar med Evas nyckel. a) Förklara hur Snake in the middle kan attackera deras kommunikation och både läsa och ändra alla meddelanden. (4p) b) Hur kan kommunikationen göras säker? (2p) c) Antag att mycket stora filer skall skickas krypterat. Bör något förändras? (2p) 3. (12p) Berta har startat en ordbehandlare, en musikspelare och en terminal som kör top (visar aktiva processer) i ett grafisk användargränssnitt. Listan på processer uppdateras automatiskt var 10:e sekund. Berta medverkar även i ett distribuerat projekt för beräkning av hur proteiner veckar sig genom att köra en klient för detta i bakgrunden. Medan hon arbetar i ordbehandlaren spelar hon naturligtvis musik. Vilken låt som spelas visas med rullande text i ett fönster. Musikspelaren visar kontinuerligt även en graf över den momentana ljudnivån på olika frekvenser, samt en klocka (sekundnivå) och progress bar hur mycket av låten som spelats. a) Vad visas (som minst) i listan över processer? (1p) b) Vilka kernel-trådar finns rimligen i detta system? (1p) c) Vilka user-trådar kan rimligen antas finnas? (1p) d) Vem sköter schemaläggningen av kernel-trådarena? (1p) e) Vem sköter schemaläggningen av user-trådarena? (1p) f) Namnge minst en schemaläggningsalgoritm som med mycket stor säkerhet kan antas användas och motivera valet. (3p) g) Förklara hur algoritm en i f) fungerar givet följande processer. Specificera de antaganden du måste göra. (Lösningar som ger FIFO ger inte poäng, men annars ges poäng även om du inte valt rätt algoritm i f).) (4p) process arrival length priority P 0 5 2 Q 1 3 4 R 4 2 3 S 5 3 5 T 6 5 1 2
4. (18p) En server på ett företag kör bland annat två processer, R och S, som båda har en mycket hög andel diskaccesser (läser från fil). Processen R använder filen link som är lagrad med linked allocation, och processen S läser från filen index som är lagrad med indexed allocation. Operativsystemet skickar varje filaccess till disken i den ordning de kommer, och disken behandlar blocken i den ordningen. Du kan anta att det senast lästa diskblocket i varje fil finns i en cache, men i övrigt är inga block cachade. Du kan även anta att båda filerna är öppnade. En typisk sekvens för hur processerna läser från filerna visas i tabellen nedan. Ordning Process Fil Filposition Filblock Diskblock 1 R link 2000 4 2004 2 S index 0 1 500 3 R link 500 1 2001 4 S index 512 2 501 5 R link 3000 6 6006 6 S index 1024 3 702 7 R link 1500 3 2003 8 S index 1536 4 703 9 R link 5000 10 6010 Ordning är den ordning operativ-systemet får begäran. Du kan anta att alla begäran ankommer inom en mycket kort tidsrymd (kortare än en diskaccess). Process är den process begäran kommer från. Fil är den fil som skal läsas. Filposition anger var i filen processen vill läsa. Filblock anger ordningsnumret på det block inom filen där filposition återfinns. Diskblock anger det block på disken som motsvarar filposition (det block som måste läsas från disk för att läsa data från Filposition ). Notera att eventuella extra diskaccesser som operativsystemet behöver för att hitta rätt block utifrån den filposition processen anger inte är med i listan, men det påverkar självklart dina svar. a) Uttala dig om huruvida de båda filerna ligger på samma eller olika partition (volym, filsystem). (1p) b) Hur många diskaccesser behövs minst för att besvara alla förfrågningar från process R (rätt svar utan kort förklaring eller motivering ger 0 poäng). (3p) c) Hur många diskaccesser behövs minst för att besvara alla förfrågningar från process S (rätt svar utan kort förklaring eller motivering ger 0 poäng). (3p) d) Uttala dig om huruvida nuvarande system är effektivt med avseende på allokeringsmetod (motivera tydligt varför eller varför inte). (3p) e) Förklara hur och varför prestanda kan ökas genom effektivare planering av diskaccesserna och namnge en algoritm som kan användas. (4p) f) Ett antagande var att filen var öppnad. Förklara vad som händer internt i operativsystemet för att öppna en fil. Av vilken anledning måste en fil öppnas? (Varför görs inte det beskrivna arbetet automatiskt vid varje läsning och skrivning till filen?) (4p) 3
5. (6p) En translation lookaside buffer (TLB) brukar populärt användas tillsammans med en viss allokeringsmetod för (fysiskt) minne. a) Motivera varför man använder en sådan. (2p) b) Visa med hjälp av en formel fördelen med en TLB om en minnesaccess tar 100ns och TLB behöver 10ns. Du kan anta 95% hit rate. (4p) 6. (12p) Ett system med virtuellt minne kör periodiskt fyra processer. P1 exekverar i genomsnitt på 10µs och exekveras varje 40:e µs. P2 kör i genomsnitt klart på 20 µs och har en period på 60 µs. P3 körs i värsta fall klart efter 5µs och körs varje 30 µs. P4 körs ibland, och endast när ingen annan process behöver exekvera. P4 startas aldrig igen om den redan körs och betraktas aldrig som viktig för systemet. a) Hur påverkas körtiden av processerna vid ett pagefault? (1p) b) Vad vill man garantera genom att göra systemet till ett realtidssystem? (1p) c) Vilka förändringar krävs för att göra ovan system till ett realtidssystem? (Läs uppgiften noga.) (3p) d) Visa hur man kan göra en beräkning och jämförelse som visar att garantin i b) alltid uppfylls (valfri algoritm). (3p) e) Hur påverkas systemet om mutual exclusion krävs vid användning av en resurs som delas av P1 och P4? (4p) 7. (12p) Ett antal trådar delar en hashtabell. Hashtabellen är implementerad som en array där varje index är en länkad lista. En hashfunktion beräknar på vilket index ett visst värde skall lagras. Listan innehåller alla värden som råkat hashas till det indexet. (Flera olika värden kan råka hamna på samma index även om det inte är önskvärt.) Koden på nästa sida hanterar hämtning och insättning av värden i tabellen. Du kan göra valfria antaganden om vad som är lagrat i de olika datatyperna och vilka andra typer och funktioner som existerar. Du måste dock använda tydlig namngivning och eventuellt förklara ytterligare för att undvika missförstånd. Antaganden som kan missförstås kommer att missförstås. Det ger då antagligen 0 poäng. a) Förklara med en exekveringssekvens hur fel kan uppstå när trådarna använder tabellen. (4p) b) Förklara med pseudo-kod hur koden på enklaste sätt kan rättas för att undvika fel. (2p) c) Förklara hur koden kan rättas så olika index fortfarande kan användas parallellt. (3p) d) Antag att användningen till större delen består av läsning från tabellen. Förklara hur lösningen kan förbättras ytterligare med denna kunskap. (3p) 4
01: -- to get the data identified by key from table 02: function get(table : in hash_table_type, 03: key : in key_type) returns stored_type is 05: index : integer; -- 3 variable declarations 07: list : list_type; 09: value : stored_type; 11: begin -- code start here 13: index := hash(key); 15: list := table(index); 17: value := find(list, key); 19: return value; 21: end get; 23: -- to insert the data in the table 24: procedure set(table : in hash_table_type, 25: data : in stored_type) is 27: index : integer; -- 3 variable declarations 29: list : list_type; 31: key : key_type; 33: begin -- code start here 35: key := get_key(data); 37: index := hash(key); 39: list := table(index); 41: if exists(list, key) then -- replace old data 43: remove(list, key); 45: end if; 47: insert(list, data); 49: end get; 5