Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Relevanta dokument
Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Tentamen i TDIU16 Process- och operativsystemprogrammering

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Operativsystem (IS1350) :00-12:00

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Operativsystem (ID2200/06) XX XX:00-XX:00

Schemaläggning Unix. Minneshantering etc. Linux. Schemaläggning av trådar (kernel threads) Detaljer. Operativsystem - Lektion 7

Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

4 grundregler. Minneshantering. Problemet. Windows minkrav

Deluppgift 17 Processhantering: exec, sleep, exit, plist

Realtidsprogrammering Ordinarie tentamen

Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Mekanismer. (implementation)

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Deluppgift 10 Starta den första processen (3.5h förarbete, 30min kodning)

Olika OS. Unix, Linux och Windows. Unix. Unix. En översikt av ett par OS. Titt på hur de gör. Många varianter. Mycket gemensamt. En del som skiljer

Försättsblad till skriftlig tentamen vid Linköpings universitet

Tentamen i Realtidsprogrammering

Datorteknik ERIK LARSSON

Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00

Tentamen Datastrukturer (DAT036)

Tentamen TEN1 HI

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5

tentaplugg.nu av studenter för studenter

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Omtentamen i Realtidsprogrammering för Au3, D3, E3

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Operativsystem ID1200/06 Tentamen :00-18:00

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Exam Concurrent and Real-Time Programming

Försättsblad till skriftlig tentamen vid Linköpings universitet

Kurskod: TAIU06 MATEMATISK STATISTIK Provkod: TENA 15 August 2016, 8:00-12:00. English Version

Försättsblad till skriftlig tentamen vid Linköpings universitet

Processer och trådar. Rasmus Cronstrand Per Jonsson Ante Wall Fabian Åberg

Synkronisering. Ordning och reda

Operativsystem ID2200/06 omtentamen :00-18:00

Tentamen i Digitalteknik, TSEA22

Försättsblad till skriftlig tentamen vid Linköpings universitet

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Programmering grundkurs och Programmering C

Tentamen i Realtidsprogrammering för Au3, D3, E3

729G04 Programmering och diskret matematik

Processprogrammering och operativsystem Introduktion. Kursinformation. Varför operativsystem?

Tentamen i. Programmering i språket C

Tentamen omfattar 40 poäng fördelade på 7 uppgifter. 20 poäng krävs för betyget 3, 30 poäng för betyget 4 och 36 poäng för betyget 5.

HI1024 Programmering, grundkurs TEN

Minneshantering segmentering och virtuellminne. Föreläsning 3

Försättsblad till skriftlig tentamen vid Linköpings Universitet

729G74 - IT och programmering, grundkurs. Dugga.

Försättsblad till skriftlig tentamen vid Linköpings Universitet

UTLYSNING AV UTBYTESPLATSER VT12 inom universitetsövergripande avtal

Försättsblad till skriftlig tentamen vid Linköpings universitet

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Tentamen på kursen Webbdesign, 7,5 hp

TENTAMEN. TDDD12 Databasteknik TDDD46 Databasteknik. 16 augusti 2010, kl 14-18

Deadlocks. detektera och undvik

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

729G04 Programmering och diskret matematik

TDDC74 Programmering, abstraktion och modellering. Tentamen

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Synkronisering. Föreläsning 8

Lösningsförslag till tentamen i Digitalteknik, TSEA22

HI1024 Programmering, grundkurs TEN

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Försättsblad till skriftlig tentamen vid Linköpings universitet

TDP Regler

Tentamen i Realtidsprogrammering

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Tentamen den 18 mars svar Datorteknik, EIT070

Försättsblad till skriftlig tentamen vid Linköpings universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

TDDC30 Programmering i Java, datastrukturer och algoritmer

Tentamen Datastrukturer (DAT036)

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Tentamen. Datorteknik och realtidssystem

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel

Försättsblad till skriftlig tentamen vid Linköpings universitet

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen PC-teknik 5 p

Summering av fält 1.1. Synkronisering - Semaforen. Summering av fält 1.3. Summering av fält 1.2. Summering av fält 2.3 (INTE GK)

Minnet från processorns sida Datorteknik

Tentamen Datastrukturer för D2 DAT 035

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Transkript:

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. denna) 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 2013-05-29 TER3: TDDI81 TER4: TDDI04 14:00-18:00 TDDI81 TDDI04 (gammal kurskod) TEN1 Processprogrammering och operativsystem Concurrent programming and operating systems IDA 8 uppgifter med totalt 45p (90 halvpoäng) 8 assignments for a total of 45 points 6 Klas Arvidsson klas.arvidsson@liu.se 013-28 21 46 (kontor) 013-28 24 90 (grupprum) Examinator besöker salen efter ca en timme After about one hour Madeleine Häger Dahlqvist 013-28 23 60, madeleine.hager.dahlqvist@liu.se Ordbok, enkel miniräknare (+,-,*,/) Dictionary, pocket calculator. Övrigt Other information Typ av papper Paper to use Antal anmälda Number of students signed up För betyg 3 krävs minst 11p på varje del. Godkänd del på föregående tentamen/dugga tillgodoräknas och kan hoppas över. Godkänd del på denna tentamen gäller även nästkommande tentamen. Betygsgränser: U < 50% < 3 < 67% < 4 < 84% < 5 Gränserna är ungefärliga och kan komma justeras. Gränserna är endast stark vägledning till betyget. Det faktiska betyget sätts baserat på helhetsintryck (speciellt för gränsfall). Resultatet tillkännages efter (inom) 10 arbetsdagar. För full poäng krävs tydliga och motiverade svar om inget annan anges. Råder oklarhet om frågans formulering skall examinator tillfrågas vid besök i salen. Är detta inte möjligt skall oklarheten beskrivas i ditt svar, och du svarar så som du tror frågan är menad. Orimliga antaganden eller förenklingar av frågan ger poängavdrag. Rutigt, linjerat eller blankt No preference TDDI81: 75st TDDI04: 25st 1 (6)

TIPS: Byt uppgift minst var 30:e minut (eller varför inte använda round-robin med 10 minuters quanta?) (tiden på varje uppgift är uppskattad och kan vara annorlunda för dig) Del VT1 (22.5p) 1. Filsystem (4.5p, 30min) I denna uppgift behöver du ett kladdpapper. På detta skall du rita upp en lagringsdisk med 25 block numrerade 0-24. Det är lämpligt att ordna blocken i 5 rader med 5 kolumner. Gör varje block ganska stort (t.ex. 1.5cm x 1.5cm eller 3cm x 3cm). Filsystemet använder indexed allocation. Den datastruktur som används för att hålla reda på lediga block finns i block 0 och ger alltid det lediga block med lägst nummer när du ber om ett ledigt block. Filkatalogen finns i block 1 och är en enkel tabell där nya filer läggs till på första lediga plats i tabellen och borttagna helt enkelt stryks över. Räkna med att block 0 och 1 har plats så det räcker. Du skall nu utföra nedan operationer på din disk. Slutresultatet över hur disken ser ut och hur filkatalogen ser ut skall redovisas. Kataloginnehållet skriver du i en tabell under bilden på din disk. Var noga med att få med alla viktiga delar i katalogen. Filinnehållet består av bilder på bokstäver där varje bokstav fyller precis ett diskblock. Var noga att göra en sak i taget i ordning och stryka det du gjort från följande lista: Skapa FIL1 med 2 datablock Skapa FIL2 med 1 datablock Skapa FIL3 med 1 datablock Skapa FIL4 med 5 datablock Skapa FIL5 med 1 datablock Lägg till 2 block till FIL1 (Checkpoint: nu bör disken ha 5 lediga block) Ta bort FIL4 Skapa FIL6 med 3 datablock Ta bort FIL6 Skapa FIL7 med 1 datablock (Checkpoint: första lediga block är nr 11 på rad 3 kolumn 2) Lägg till 1 block till FIL7 Ta bort FIL3 Lägg till 1 block till FIL5 (Checkpoint: nu bör disken ha 5 lediga block) Skapa en hård länk LINK1 till FIL7 Skriv RR till FIL5 (kom ihåg, en bokstav per block) Skriv GO till FIL7 Skriv DUTT till FIL1 Skriv HÄRJAT till FIL2 2 (6)

2. Minneshantering och systemanrop (7p, 20min) Ett system med 32-bit adresser och 32-bit heltal använder paging i en nivå. Varje frame i systemet är 128kB stor (2 17 ). I pagetable finns förutom framenummer även valid-bit, modifiedbit, read-only-bit, och no-execute-bit. Processer har i sin logiska minnesrymd endast tillgång till minne på lägre adresser än 0xC0000000. En process i systemet utför nu ett systemanrop. Funktionen som i kernel-mode hanterar systemanrop får en pekare (adress) till processens stack och förväntar sig där hitta systemanropsnumret (heltal), följt av noll eller flera parametrar. När väl systemanropsnumret är läst visar det sig att systemanropet i fråga är read_named_mailbox(char* name, byte* to, int to_size) där name är en C-sträng som anger mailboxens namn, och to är adressen till minnesutrymme som skall fyllas med to_size bytes från den namngivna mailboxen. a) Ange hur kontrollen överförs från process till kernel. (1p) b) Förklara i detalj, jag menar detalj, de kontroller kernel utför innan kernel genomför systemanropet och motivera varför varje steg behövs. Utgå från beskrivningen ovan. Det finns inga hjälpfunktioner att tillgå. Det ingår alltså att visa att du förstått hur paging fungerar genom hela adressöversättningen och adresskontrollen. (4p) c) En process har working set window om 6 pages. Processen har drabbats av hög page fault rate. Vad kan det bero på och vad kan OS göra för att åtgärda problemet? (1p) d) En TLB med 10ns lookuptid och 99% hit rate används för att snabba upp minneshanteringen i det beskrivna systemet. Hur kommer du fram till medelaccesstiden om en normal minnesaccess tar 100ns? (1p) 3. Processer och trådar (6p, 20min) a) Förklara begreppen proccess och tråd ingående. Ta upp skillnader och likheter. Motivera att båda begreppen behövs. Ange hur de förhåller sig till varandra. (4p) b) Visa med en figur vilka köer OS använder för att hålla reda på i vilket state trådar/processer är, och vilka förflyttningar som kan utföras mellan köerna. (2p) 4. Schemaläggning (5p, 30min) process start längd prioritet P1 0 5 4 (lägst) P2 1 5 2 P3 3 5 3 P4 5 5 1 (högst) Tabellen visar data för vid vilken tidpunkt ett antal processer startar, hur mycket exekveringstid var och en behöver samt vilken prioritet var och en har i systemet. a) Använd priority scheduling (med preemption) för att schemalägga processerna. Markera var preemption sker. (2p) b) Beräkna med förklaring turnaround time för process P3 i ditt schema i a) (1p) c) Förklara ingående vad som menas med multiköschemaläggning (mulit level queue scheduling) och eventuella fördelar med detta. (2p) 3 (6)

Del VT2 (22.5p) 5. Deadlocks (7p, 40min) a) Ge ett konkret exempel på deadlock mellan tre processer och tre resurser i form av en allokeringsgraf. (1p) b) Det finns tre nödvändiga villkor och ett tillräckligt villkor för deadlock. Namnge och beskriv dessa fyra villkor. (2p) c) Kalle sommarjobbar hos byggbeskrivningsavdelningen på LEGO. Han och tre andra sommarjobbare (Ingro, Jenny och Lotta) har fått i uppdrag att ta fram en bygginstruktion för var sin LEGO-figur. Uppdraget går ut på att bygga och fotografera varje steg i bygget. Eftersom de alla tre samtidigt studerar tar de tillfället i akt och övar Bankers algoritm. De beslutar att byggd bit sitter tills hela figuren är klar, man får inte låna bitar av varandra när bitarna är slut. Totalt finns A B C 7 9 8 Totalt behöver var och en använda följande antal av varje typ: A B C Ingros figur 7 5 5 Jennys figur 2 3 4 Kalles figur 4 7 5 Lottas figur 2 3 3 När de jobbat en stund har var och en använt bitar enligt följande tabell: A B C Ingro har 1 3 1 Jenny har 1 1 3 Kalle har 0 2 1 Lotta har 1 1 2 Är det säkert att de blir klara? Motivera med Bankers algoritm. Redovisa alla steg. (2p) d) Nu frågar Kalle om han får ta en av de kvarvarande bitarna av typ A. Hur avgör de övriga vad de skall svara och vad blir svaret? Motivera med Bankers. Redovisa alla steg. (2p) 6. Tillgänglighet och säkerhet (4.5p, 15min) a) Ge två distinkt olika typexempel på att RAID inte tillhandahåller någon backup. (1p) b) Förklara vinsterna med att använda RAID nivå 2, bitnivå striping med en dedikerad paritetsdisk, över 8 diskar. Jämför med att använda 8 diskar utan RAID. (1p) c) UNIX har en superanvändare (root) med alla privilegier, t.ex. montera filsystem, byta ägare på filer och döda processer. Vad innebär RBAC? (1p) d) Du tycker spelutbudet för UNIX är lite väl magert och har skrivit spelet Wizard of OS för att förbättra situationen. Spelet har en highscorelista som fylls på med användarnamn och poäng. Förklara hur du gör för att hindra användare att manuellt ändra i hichscore, men fortfarande låta dem registrera sin poäng när de spelar spelet. (1.5p) 4 (6)

7. Lås och kritiska sektioner (3p, 15min) a) Ett lås kan till skillnad från en semafor bara låsas upp av den tråd som låst det, och kan inte låsas igen av samma tråd som låst det innan det låsts upp. Visa hur du med hjälp av en semafor (enligt semaforerna du är van vid från lab) kan implementera ett sådant felkontrollerat lås. Redovisa hur din struct lock och dina funktioner lock_init, lock_acquire och lock_release ser ut. (2p) Du kan ta reda på exekverande tråds ID med thread_tid(). De semaforer som finns att tillgå är deklarerade som struct semaphore, sema_init(struct semaphore*, int), sema_down(struct semaphore*), och sema_up(struct semaphore*). b) Varför skall en kritisk sektion vara så liten och kort som möjligt? Motivera. (1p) 8. Semaforer och synkronisering (8p, 50 min) Restaurangen denna uppgift handlar om har 9 bord med fyra platser vardera. Tre servitörer sköter serveringen. Det är en restaurang som ofta är full, och för att undvika onödigt spring runt borden ska sällskap vänta i kapprummet om alla bord är upptagna. Ett sällskap som kommer in börjar med att leta upp ett ledigt bord och tar plats. Därpå väntar de på betjäning, äter sin mat och går slutligen till kassan för att betala. Sällskap skall alltid få eget bord och är aldrig fler än fyra. Överkurs: Singlar får även ta plats vid bord där det sitter enbart en person. Bertram har implementerat en simulering av restaurangen (nästa sida) där han har tre servitörtrådar och många trådar som representerar besökande sällskap. Tyvärr är hans lösning inte optimal på flera sätt. Korrigera hans kod så den uppfyller beskrivningen ovan och är både trådsäker och effektiv. Redovisa hur du tänker och motivera alla lås genom att förklara vad låset skyddar. Motivera semaforer genom att förklara vilken resurs den håller reda på. Följande synkroniseringsmekanismer finns att tillgå enligt det du är van vid från lab: struct semaphore; void sema_init(struct semaphore*, int); void sema_down(struct semaphore*); void sema_up(struct semaphore*); struct lock; void lock_init(struct lock*); void lock_acquire(struct lock*); void lock_release(struct lock*); struct condition; void cond_init(struct condition*); void cond_wait(struct condition*, struct lock*); void cond_signal(struct condition*, struct lock*); 5 (6)

1: // array with number of occupied places at each table 0-8 2: int seats_taken[9]; 3: // array indicating which tables 0-8 need service 4: bool want_service[9]; 5: int cash_register = 0; 6: 7: void init() // executed before threads start 8: { 9: for (int i = 0; i < 9; ++i) 10: { 11: seats_taken[i] = 0; 12: want_service[i] = false; 13: } 14: } 15: 16: void company() // many of those 17: { 18: int table = 0; 19: 20: while ( seats_taken[ table ] > 0) 21: { 22: table = table + 1; // go to next table 23: table = table % 9; // wrap around to 0 24: } 25: seats_taken[ table ] = random_company_size(); 26: 27: want_service[ table ] = true; 28: while ( want_service[ table ] ) 29: ; // wait for service 30: 31: eat_randomly_long_time(); 32: 33: // leave table 34: seats_taken[ table ] = 0; 35: 36: cash_register += pay_bill(); 37: } 38: 39: void waiter() // three of those 40: { 41: for ( ; ; ) 42: { 43: for (int i = 0; i < 9; ++i) 44: { 45: if ( want_service[i] ) 46: { 47: show_menu_and_serve_food(); 48: want_service[i] = false; 49: } 50: } 51: } 52: } 6 (6)