Operativsystem (IS1350) :00-12:00

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

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

Operativsystem ID2200/06 omtentamen :00-18:00

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

Operativsystem ID2200/06 tentamen och omtentamen :00-12:00

Operativsystem ID1200/06 Tentamen :00-18:00

Operativsystem ID2200/06 omtentamen :00-18:00

Operativsystem ID2200/06 omtentamen :00-12:00

Operativsystem ID1200/06 Tentamen :00-18:00

Operativsystem ID2200/06 tentamen och omtentamen :00-12:00

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

Operativsystem ID2200/06 omtentamen :00-18:00

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

Operativsystem ID2200/06 omtentamen :00-12:00

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

Operativsystem ID2200/06 omtentamen :00-18:00

Operativsystem ID2200/06 omtentamen :00-12:00

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

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

Operativsystem ID2200/06 omtentamen :00-12:00

Programmering II (ID1019) :00-11:00

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

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

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

Programmering av inbyggda system. Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe

Programmering II (ID1019) :00-12:00

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe

Programmering II (ID1019) :00-12:00

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Programmering II (ID1019) :00-17:00

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Tillämpad Programmering (ID1218) :00-13:00

Lösningsförslag till tentamen i IS1350 Operativsystem

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Programmering II (ID1019) :00-11:00

Realtidsprogrammering Ordinarie tentamen

Tentamen i ID2206, ID2200 samt IS1350 Operativsystem

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

Tommy Färnqvist, IDA, Linköpings universitet

Datorsystem. Tentamen

Det finns många flaggor till g++,

Repetition C-programmering

Abstrakta datastrukturer

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

Minneshantering segmentering och virtuellminne. Föreläsning 3

Introduktion C-programmering

Föreläsning 13 Innehåll

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

F5: Högnivåprogrammering

Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp().

Datorteknik ERIK LARSSON

F5: Högnivåprogrammering

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

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

Introduktion till programmering, hösten 2011

Programmering II (ID1019) :00-12:00

Programmering II (ID1019) :00-12:00

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Föreläsning 10. Pekare (Pointers)

Tentamen i Realtidsprogrammering

Tentamen TEN1 HI

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

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

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.

Minnet från processorns sida Datorteknik

En processor kan ha en klockfrekvens på flera GHz. Det går alltså a9 exekvera en instruk=on väldigt for, givet a9 instruk=onen finns i processorn.

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Tentamen i Algoritmer & Datastrukturer i Java

TDDC77 Objektorienterad Programmering

Tentamen i Grundläggande programmering STS, åk 1 fredag

IS1200 Datorteknik. Övning CE_O4 Maskinnära programmering med C Förberedelser till hemlaboration 1

Tentamen TEN1 HI

C++ Lektion Tecken och teckenfält

Programmering i C, 7,5 hp

HI1024 Programmering, grundkurs TEN

Pekare och arrayer. Indexering och avreferering

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Arrays (indicerade variabler) Föreläsning 4

Prestandajämförelse - Sekventiell skrivhastighet i RAID 4 och RAID 5

Tentamen i Grundläggande programmering STS, åk

HI1024 Programmering, grundkurs TEN

Några gamla tentamensuppgifter: Minneshantering

HI1025 Operativsystem, KTH Haninge, VT2012

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

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

Tentamen den 18 mars svar Datorteknik, EIT070

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.

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

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Arrays (indicerade variabler) Föreläsning 6

SP:PROG3 HT12 Tenta

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

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Tentamen Datastrukturer för D2 DAT 035

Tentamen i Realtidsprogrammering

Transkript:

Operativsystem (IS1350) 2017-03-15 08:00-12:00 Namn: Instruktioner Betyg Du får endast ha med dig skrivmateriel. Mobiler etc skall lämnas till tentamensvakterna. Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar. Svar skall skrivas på svenska. Du skall lämna in hela denna tentamen. Inga ytterligare sidor skall lämnas in. Tentamen har ett antal uppgifter där några är lite svårare än andra. De svårare uppgifterna är markerade med en stjärna, poäng*, och ger poäng för de högre betygen. Vi delar alltså upp tentamen i grundpoäng och högre poäng. Se först och främst till att klara grundpoängen innan du ger dig i kast med de högre poängen. Notera att det av de 22 grundpoängen räknas bara som högst 18 och, att högre poäng inte kompenserar för avsaknad av grundpoäng. Gränserna för betyg är som följer: Fx: 11 grundpoäng E: 12 grundpoäng D: 15 grundpoäng C: 18 grundpoäng B: 18 grundpoäng och 5 högre poäng A: 18 grundpoäng och 8 högre poäng Erhållna poäng Skriv inte här, detta är för rättningen. 1

Uppgift 1 2 3 4 5 6 7 8 Max G/H 4/0 4/0 4/2 2/2 2/2 2/2 4/0 0/2 G/H Totalt antal poäng: 2

1 Operativsystem 1.1 ler och rättigheter [2 poäng] I ett Unix-operativsystem så är ler och mappar skyddade så att rättigheterna för att använda ett objekt är begränsat. Dessa rättigheter kan vi se då vi listar innehållet i en mapp. Beskriv vilka rättigheter som gäller för len foo nedan. > ls -l foo > -rwxr-x--- 1 kalle trusted 234 dec 26 13:18 foo Svar: Ägaren kalle har läs-, skriv- och exekveringsrättigheter. Medlemmar i gruppen trusted kan läsa och exekvera. Övriga användare har inga rättigheter. 1.2 kommandon i shell [2 poäng] Om vi ger kommandosekvensen nedan, vad kommer vi då få för resultat? Varför? > echo "cd foo grep bar" wc -w Svar: Resultatet är 4. Vi `pipe:ar strängen cd foo grep bar till kommandot wc -w som kommer att räkna antalet ord. 2 Processer 2.1 vad är var? [2 poäng] I koden nedan har vi allokerat upp två arrayer; vilka arrayer och i vilka segment åternns de: globalt, stack eller heap? #include <stdio.h> #include <stdlib.h> int x = 43; int *foo(int *a, int s) { int *r = malloc(s * sizeof(int)); 3

for(int i = 0; i < s; i++) { r[i] = a[i] + x; return r; int main() { int h[] = {1,2,3,4; int *c = foo(h, 4); printf("%d \n", c[3]); return 0; Svar: De två arrayerna är h som allokeras på stacken i main() och r som allokeras på heapen i foo(). 2.2 fork [2 poäng] Vad skrivs ut när vi kör programmet nedan och varför får vi detta resultat? #i n c l u d e <u n i s t d. h> #i n c l u d e <s t d i o. h> i n t x = 4 2 ; i n t main ( ) { i f ( f o r k ( ) == 0) { x++; p r i n t f (" x = %d\n ", x ) ; e l s e { x++; p r i n t f (" x = %d\n ", x ) ; r e t u r n 0 ; Svar: Det kommer att skrivas x = 43 och x = 43 efter varandra.de två processerna kommer få var sin kopia av den globala datastrukturen x som 4

då har värdet 42. Eftersom uppdateringarna är oberoende av varandra har båda processerna värdet 43 vid utskrift. 3 Schemaläggning 3.1 tillståndsdiagram [2 poäng] Nedan är ett tillståndsdiagram för processer vid schemaläggning Fyll i de markerad delarna så att man förstår vad tillstånden betyder och när en process förs mellan olika tillstånd. Svar: scheduled terminate start ready running exit timout I/O complete blocked I/O request 3.2 shortest time-to-completion rst [2 poäng] Schemaläggaren shortest time-to-completion rst är en optimal schemaläggare; vad är det den optimerar och varför är den i praktiken inte användbar? Svar: Den optimerar omlopstiden (turnaround) för ett givet antal jobb. Problemet är att vi i de esta fall inte vet hur lång tid det kommer att ta för ett jobb att avslutas. 3.3 realtidsschemaläggare [2 poäng*] I realtidsschemaläggning så beskriver vi jobb med tre värden som brukar beteckans: e, d och p. Vad står dessa parameterar för (du behöver inte komma ihåg vilken som är vilken men skall kunna ange egenskaperna som beskriver ett jobb). 5

Svar: e: längsta exekveringstid d: dead-line, när måste jobbet vara klart p: periodicitet, hur ofta skall jobbet schemaläggas 4 Virtuellt minne 4.1 paging [2 poäng] Antag att vi har en virtuell adress som består av ett 20-bitars sidnummer och en 12-bitars oset. Vi har en fysisk adressrymd på 32 bitar, kodar ett ramnummer i 20 bitar och element i en sidomvandlingstabell är fyra bytes stort. Hur stor är en sida och hur stor skulle en komplett omvandlingstabell behöva vara? Svar: Sidorna är 4Kibyte stora eftersom vi har 12 bitars oset. Tabellen skulle behöva vara 4Mibyte eftersom vi behöver 1Mi element. 4.2 bounds [2 poäng*] När vi implementerar ett segmenterat minne så vill vi gärna ha ett boundsvärde som säger hur stort segmentet är. Om vi inte har det så riskera vi att addressera utanför segmentet. När vi implementerar ett sidat minne (paging) så behövs inget bounds-värde? Varför behöver vi inte det? Vad är det som hindrar oss från att addressera utanför sidan? Om det nu är något som hindrar oss från att göra fel, är det något som kostar? Vad kostar det? Svar: Alla sidor är lika stora och storleken är exakt så stor som vårt oset kan addressera dvs vårt oset kommer alltid att hamna innaför sidans gränser. Kostnaden är att det vi alltid allokerar minne i storleken av en sida. Om vi har en sidstorlek på 4K byte och behöver 6K byte, så kommer vi att allokera 8K byte. 6

5 Minneshantering 5.1 parkeringsplatser [2 poäng] När det skulle ordnas parkeringsplatser längs med Sveavägen så fanns två förslag: 1/ ha målade parkeringsrutor som var 6m långa 2/ låt bilar parkera med 25 cm mellanrum, utan att begränsas av målade rutor. Om vi för enkelhetens skull antar att bilar är mellan 4 och 5.50 meter och att alla kan parkera en bil i en lucka med en halv meter till godo, vad är då problemet med respektive lösning? Svar: I alternativ med parkeringrutor så kommer vi ha en intern fragmentering då vi i snitt förlorar 75 cm per plats. I fall två kan vi få extern fragmentering eftersom luckor kan bli för små för att användas. 5.2 buddy-allokering [2 poäng*] Den så kallade buddy-algoritmen för att hantera ledigt minne har en klar föredel men också en klar nackdel. Antag att vi har ett minne som är indelat i 4K block och att vi ar 16K som är fria i block 0b10100. Vad gör vi när vi får 8K ledigt i block 0b11000? Hur illustrerar detta nackdelen? Rita en bild som visar var någonstans de fria blocken nns och vilket problem vi har. Varför accepterar vi detta? Svar: Bilden skall visa adressrymden och att de två blocken ligger bredvid varandra. Den skall också visa att dessa två block inte är buddies och därför inte kan slås ihop. Vi accepterar detta eftersom vi får ett mycket enkelt sätt att avgöra om två block kan slås ihop och block alltod kommer att vara 2 k sidor stora, vilket är enklare att hantera. 6 Flertrådad programmering 6.1 count [2 poäng] Om vi exekverar proceduren hello() nedan samtidigt i två trådar så kan resultatet bli att count blir... - ja vilka värden kan count anta efter det att båda trådarna exekverat klart? Hur kan det komma sig? i n t loop = 1 0 ; i n t count = 0 ; 7

void h e l l o ( void ) { : f o r ( i n t i = 0 ; i < loop ; i ++) { count++; Svar: Variabeln count kan ha ett slutgiltiga värde i intervallet [2, 20]. Detta eftersom operationen count++ inte är atomär utan består av en läs operation, en addering och en skrivoperation. Att hitta fallet där count blir 2 är rätt klurigt, det viktiga att förstå är att operationerna inte är atomära och att det försöker uppdatera samma minnesposition. 6.2 Petersons algoritm [2 poäng*] Beskriv vad Petersons algoritm skall lösa och varför den inte går att använda på de esta moderna datorsystem. Svar: Algoritmen implementerar ett lås men fungerar endast då systemet garanterar sekvensiell konsistens. Moderna system ger oss dock endast s.k. total store order. 7 Filsystem 7.1 länkar [2 poäng] Vad är skillnaden mellan en hård och en mjuk länk? Svar: En mjuk länk är en indirekt referens till ett annat namn. En hård länk är en referens till en inode. 7.2 inode [2 poäng] Kortfattat - vad innehåller en inode? Svar: En inode innehåller meta-data om en l: när skapades den, ägare, rättighter, storlek mm. Den innehåller också information om vilka datablock som används för att lagra innehållet i len. 8

8 Virtualisering [2 poäng*] En närbesläktigad lösning till full virtualisering är s.k. containers. Dessa erbjuder många av de fördelar som virtualisering av ett operativsystem ger men har en begränsning; vilken är den stora skillnaden mellan containers och virtualiserade operativsystem? Svar: Containers erbjuder en miljö som är helt avgränsad från övriga system som kör på samma dator: eget minne, lsystem, nätverk mm. Den stora skillnaden är att alla containers använder samma kärna dvs de är begränsade till att köra samma operativsystem. 9