LYCKA TILL MED TENTAMENSLÄSNINGEN! 3. Antag givet ett system i vilket rent CPU-bundna processer med följande egenskaper exekveras.

Relevanta dokument
Några gamla tentamensuppgifter: Minneshantering

Några gamla tentamensuppgifter: Processer. 3. Antag givet ett system i vilket rent CPU-bundna processer med följande egenskaper exekveras.

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

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

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

4 grundregler. Minneshantering. Problemet. Windows minkrav

Minnet från processorns sida Datorteknik

Minneshantering segmentering och virtuellminne. Föreläsning 3

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

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

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

syftar till att förbättra prestanda. Den kan avse något eller flera av följande mått.

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

Tentamen den 17 mars 2016 Datorteknik, EIT070

Datorteknik ERIK LARSSON

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?

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

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

Operativsystem (IS1350) :00-12:00

Synkronisering. Föreläsning 8

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.

Tentamen den 12 januari 2017 Datorarkitektur med operativsystem, EDT621

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

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 ID1200/06 Tentamen :00-18:00

Digitalteknik och Datorarkitektur 5hp

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

Deadlocks. detektera och undvik

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

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

Datorteknik ERIK LARSSON

Institutionen för elektro- och informationsteknologi, LTH

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

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

Digitala System: Datorteknik ERIK LARSSON

Exam Concurrent and Real-Time Programming

Tentamen PC-teknik 5 p

Realtidsprogrammering Ordinarie tentamen

Omtentamen i Realtidsprogrammering för Au3, D3, E3

Operativsystem - input/output, skydd, virtualisering

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

CE_O5. Cacheminne. Hemlaboration 2.

Snapdragon 810: Cacheminnet

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

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Mekanismer. (implementation)

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

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

Lösningsförslag till tentamen i IS1350 Operativsystem

Tentamen i ID2206, ID2200 samt IS1350 Operativsystem

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Datorarkitekturer med Operativsystem

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

Exempeltentamen Datorteknik, EIT070,

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

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

Föreläsningsanteckningar 5. Cacheminnen

Synkronisering. Ordning och reda

Beijer Electronics AB 2000, MA00336A,

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

Närliggande allokering Datorteknik

Aktivitetsschemaläggning för flerkärninga processorer

Öka prestanda i Shared-Cache multi-core processorer

MESI i Intel Core 2 Duo

Deluppgift 17 Processhantering: exec, sleep, exit, plist

OBS!! Detta är DEL 2 av tentan. För att få ut denna måste du ha lämnat in del 1. Om du inte fått ut del 1 bör du meddela skrivningsvakten. OBS!!

119 Minnesallokering. Detta kapitel behandlar kort, som vanligt, dessa 'policies' och avslutas med ett avsnitt om 'caches'.

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Operativsystem. Hierarkin för hårdvara läses nerifrån

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Operativsystem - Processkedulering

1. Compute the following matrix: (2 p) 2. Compute the determinant of the following matrix: (2 p)

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.

Pipelining i Intel Pentium II

Tentamen PC-teknik 5 p Lösningar och kommentarer

Tentamen i Realtidsprogrammering

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

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

F5: Högnivåprogrammering

Operativsystem - Filsystem

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

Datorsystemteknik för E/D

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Cacheminne Intel Core i7

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

Tentamen i Realtidsprogrammering för Au3, D3, E3

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

F5: Högnivåprogrammering

Lösningar till tentamen i EIT070 Datorteknik

Grunderna i stegkodsprogrammering

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

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Datorarkitekturer med operativsystem ERIK LARSSON

Trådar. Aktiva objekt

Tentamen i TDIU16 Process- och operativsystemprogrammering

Transkript:

219 A. Detta appendix består av fyra delar. Först kommer ett antal frågor som tagits från några av de många tentamensskrivningar som givits i kurser om Operativsystem sedan tidigt 70-tal. Andra delen innehåller några lösningsskisser till senare tentamina, som bifogas i det tredje avsnittet. I det fjärde avsnittet återfinns frågor och tentamina som avser innehållet [även] i kapitel 11. Dessa moment faller utanför DoCSs operativsystemkurser, men ingår i kursen Datorsystem DV1. LYCKA TILL MED TENTAMENSLÄSNINGEN! A.1. Blandade tentamensfrågor A.1.1. Från tentamen 920826 1. Fyra processer ska synkroniseras så att A går före B och B och C går före D. Realisera denna ordning genom att använda (potentiellt blockerande) send- och receive- operationer på brevlådor (mailboxes). 3. Antag givet ett system i vilket rent CPU-bundna processer med följande egenskaper exekveras. Namn Ankomst- Total CPU- Prioritet (process- tid tid (större tal ==> id.) (sek) (sek) snabbare process) ---------------------------------------------------------------------------------- anita 0 4 24 camilla 1 3 13 jessica 2 2 16 kitty 3 3 23 ---------------------------------------------------------------------------------- Vilka värden på talet (sluttid - ankomsttid)/totaltid får de fyra processerna om algoritmen för schemaläggning är a. HPFS b. RR med tidskvantum = 1 (sek). c. FCFS. 5. I ett virtuellt minne med skiva är primärminnets accesstid 1 mikrosekund, sidstorleken 1 K, skivans rotationstid 10 millisekunder, inställningstiden för skivans arm 5 millisekunder och antalet ord per spår 16 K. Hur stor sidfelsfrekvens kan tolereras om vi vill ha en upplevd (eng. effective) accesstid på 1.15 mikrosekunder? 7. I ett sidindelat system har uppmätts att CPU-utnyttjandet är 20%, "swap"- disken används till 97% och andra i/o-enheter till 5%. Vilka av följande åtgärder skulle (sannolikt) förbättra CPU-utnyttjandet? Förklara noga! a. Installera mera primärminne. b. Installera en större disk. c. Öka graden av multiprogrammering. d. Minska graden av multiprogrammering. e. Installera mera cacheminne. f. Installera en snabbare disk. 8. Ett system består av tre (ändligt långa) processer och fyra identiskt lika (seriellt återanvändbara) resursenheter. Varje process behöver högst två resursenheter. Visa att detta system är baklåsfritt.

220 A.1.2. Från tentamen 930112 1. Bastillstånden exekverande (executing, running), redo (ready) att exekvera och blockerad (blocked) i väntan på någon resurs kompletteras i vissa system. Anledningar kan vara att en användare temporärt vill låta en process vila för att undersöka processens tillstånd, att operativsystemet låter en process vila under det att möjliga baklåstillstånd undersöks eller att en 'skenande' process måste tas bort. Genom att införa tillstånden redo-vilande och blockeradvilande måste tillståndsövergångs- maskinen/grafen utökas. Visa och motivera hur transitionerna kommer att se ut givet de fem tillstånden exekverande, redo-aktiv, redo-vilande, blockerad-aktiv och blockerad-vilande. 3. Realtidsystem karakteriseras bl a av att processerna pr i är cykliska: De avses exekvera ex i tidsenheter en gång per intervall om int i tidsenheter. Processerna åsätts prioriteter p i och 'the scheduling algorithm' antas alltid vara 'pre-emptive'. I 'rate monotonic scheduling' (RMS) åsätts processerna prioritet p i proportionellt mot 1/int i (kortare processer har högre prioritet än längre). a. Visa på ett tidsdiagram hur processerna exekveras med RMS då ex i = 1, i = 1,2,3, och int 1 = 3, int 2 = 4 och int 3 = 5 och de tre proceserna scheduleras vid tiden 0 för första gången. b. Vilka nackdelar finns med metoden RMS? 4. I ett system byggt på sidindelning är det fysiska adressrummet 4 M, det logiska (virtuella) adressrummet 4 G (2 32, 32 bitars virtuell adress) och sidstorleken 1 K. a. Redogör allmänt för sidindelning (paging) som ett sätt att åstadkomma virtuellt minne. b. Ange innehåll i, storlek på och representation av de tabeller som är lämpliga givet dessa data. c. Hur översätts en logisk adress till en fysisk adress. 5. Tillämpning av olika utbytesalgoritmer kan påverka sidfelfrekvensen under i övrigt identiska förutsättningar. Antag givet referernssträngen w = 1 2 7 1 4 5 1 2 1 4 5 7 4 5, att primärminnet rymmer 4 sidplatser och att minnet initialt är tomt. Bestäm och kommentera antalet sidfel för a. FIFO b. LRU c. Den optimala 'algoritmen' OPT (B o ). 7. Informationsflödeskontroll via klassning (labeling) ( c(.) ) av subjekt och objekt kan tillämpas två grundfunktioner i programmerade system: -- Aritmetisk/logiska operationer och tilldelningar: a := expression (b, c,...); -- Villkorliga hopp: if predicate (d) then e :=...; f :=...;... enf if; a. Under förutsättningen att klasserna är element i ett lattice, ange vilka relationer mellan c(a), c(b),..., c(f) som måste kontrolleras för att upprätthålla säkert informationsflöde för dessa satser. b. Härled de villkor som måste vara uppfyllda för kunstruktionen while B do S; där B är ett (Booleskt) uttryck och S är en sekvens av satser uppbyggda (rekursivt) via uttryck, tilldelningar, sammansättning, if-satser och while-satser. A.1.3. Från tentamen 911219 1. Följande instruktioner är normalt privilegierade. - Gå över till användartillstånd (user state) - Gå över till "supervisor state" - Läs från OS-arean i minnet - Skriv i OS-arean i minnet - Så på "timer interrupt" - Slå ifrån "timer interrupt" - Slå på minnesskyddet - Slå ifrån minneskyddet - Utför i/o

221 Vilka av dessa instruktioner måste vara privilegierade för att rimliga operativsystem ska kunna implementeras? Kort motivering krävs för varje instruktion. 2. Agneta, Karin och Ulrika är tre cigarr-rökande processer. Alla tre vill röka kontinuerligt. Problemet är att för att göra detta behövs tre ingredienser: cigarr, cigarrsnoppare och tändare. Agneta har alltid cigarrer, Karin alltid en snoppare och Ulrika alltid en tändare. För att gå till verket förtröstar alla tre på Bob Slocum som har ett outsinligt (oändligt) förråd av alla ingredienser. Bob placerar cykliskt och slumpmässigt ut två ingredienser, så att kvinnan som har en matchande tredje kan röka. Hon gör så och talar om för Bob när hon är klar. Skriv ett parallellt system av fyra processer som med hjälp av semaforer simulerar de fyra aktiviteterna. 4. Betrakta algoritmen "Round Robin" (RR). Antag att färdiglistan (ready list) består av (länkade) pekare till PCB-er (processbeskrivningar). a. Vad blir effekten av att låta flera pekare gå till samma PCB? b. Vad blir för- och nackdelar med ett sådant arrangemang? c. Beskriv något annat sätt att modifiera RR så att samma effekt som i fråga a. uppnås. 5. I ett sidindelat system består den logiska adressen av 22 bitar varav 12 anger sidnummer. Minnesstorleken är 64K. a. Hur stort är det virtuella minnet? b. Hur många sidoramar ryms i det fysiska minnet? c. Beskriv i text och figur hur adressöversättningen från logisk till fysisk adress går till. d. Vilken är den virtuella adress som avbildas på den fysiska adressen 2700 (hexadecimalt) då den aktuella sidtabellen innehåller följande sidoramsnummer: [6, 7, 2, 5, 9, 1, 8]? 6. Visa att det för FIFO algoritmen kan gälla att ett utökat antal sidramar kan ge en STÖRRE sidfelsfrekvens (FIFO-anomalin, Beladys anomali) för given programreferenssträng. Kan motsvarande anomali förekomma för LRU-algoritmen? Motivera noga! 9. Betrakta en öppnad fil. Logiska block och fysiska sektorer är 512 bytes. Antag att det senast använda blocket var nummer 9 och att block nummer 3 står närmast att användas. (Blocken numreras från 0.) Hur många sektorer behöver läsas från skivminnet om följande allokeringsmetod används? a. Kontinuerlig (contiguous). b. Ren länkning (via pekare i datablocken). c. Indexerad. A.1.4. Från andra tentamina 1. Algoritmer för schemaläggning av processer kan konstrueras på följande vis. Åsätt varje process en variabel prioritet. Stort positivt värde ger hög prioritet. Antag att algoritmerna är 'preemptive'. När processerna befinner sig i färdiglistan ändras prioriteterna med a enheter per tidsenhet. När de exekverar ändras de med b enheter per tidsenhet. Startprioriteten är 0. Vilket beteende erhålls för fallen a < b < 0 och b > a > 0. Motivera. Kan a och b sättas så att ett 'round robin' liknande beteende uppnås? 2. I ett system finns en inmatningsprocess I, en beräkningsprocess P och en utmatningsprocess O. Processerna kommunicerar via två buffertar ip respektive po lagrade på disk. Processerna utbyter data i lika stora block. De är synkroniserade så att ip + po max. Dessutom vet man att - Så länge det finns data att läsa in (tex från en terminal) kommer I att skriva dessa på ip (om det går). - Förutsatt att ip inte är tom kommer P att förbruka block och producera ändligt många block på po. - Så länge det finns block på po kommer O att förbruka dessa.

222 a. Visa att detta system kan gå i baklås. b. Hur kan man undvika eller förhindra baklås i detta system? 3. I ett visst operativsystem (taget från en historisk verklighet) beskrivs datafiler med sk 'disc directoty entries'; ett per fil. Dessa innehåller följande information (och inte mer). - filnamn = en kort sekvens ascii-tecken. - spår- och sektornummer. - filstorlek = antal sektorer. - filtyp: ascii- eller binärdata. Vilka begränsningar har ett filsystem byggt på dessa kataloger? Vilken övrig information behövs för att undvika dessa begränsningar? 4. I sidindelade system säger man ju att relokeringen sker dynamiskt. Varför behövs i sådana system likväl en 'relocationg loader' som utför statisk relokering/länkning? 5. Rutinerna i en monitor exekveras på basis av ömsesidigt uteslutande. Varför måste de likväl vara reentranta? 6. I ett sidindelat system är det möjligt att låta flera olika processer dela på samma program (sidor) genmom att de olika processernas sidtabeller pekar ut samma sida. Antag följande situation: En process p1 kräver programmen q1 och q2, en temporör lagringsarea t1 och en dataarea d1. Dessa länkas ihop till ett sammanhängande block med storlek q1 + q2 + t1 + d1 i det virtuella minnet. Medan p1 fortfarande är aktiv begär en annan process p2 laddning av q1', q2, t1' och d1 där q1' < q1 och t1' > t1 och där q2 och d1 ska delas mellan p1 och p2. a. Skissera ett möjligt utseende på sidtabellerna för p1 och p2. b. Vilka problem uppstår om en ny process p3 aktiveras och vill dela q1' och q1? 7. Antag att ett system av n oberoende sekventiella processer ska köras på m identiska processorer. Antag vidare att 'preemptive' schemaläggning används. Man kan då visa att den bästa schemaläggningen ger totaltiden T = max { max (t i ), (Σ i [1..n] t i )/m }, där t i är exekveringstiden för process nummer i. Motivera detta T. En fullständigt bevis är naturligtvis non plus ultra. A.2. Lösningsskisser till frågor på tentamina OBS! Svaren och lösningarna är (oftast) så kortfattade att de knappast skulle ha renderat full poäng på en skrivning. Se dem bara som en liten vink om framkomliga vägar till fullfjädrade lösningar. A.2.1. 21 oktober 1992 1. Vi inför en semafor för varje del av precedensordningen - a går före c: ac (= 0 initialt) - b går före c: bc (= 0 initialt) - c går före d: cd (= 0 initialt) - c går före e: ce (= 0 initialt) - d går före f: df (= 0 initialt) - e går före f: ef (= 0 initialt) Vidare har d och e kritiska avsnitt som måste kontrolleras: m (= 1 initialt). Processerna a, b, c och f har kodavsnitt sa, sb, sc och sf. Processerna d och e har interna kritsika avsnitt csd och cse och övriga avsnitt sd' och sd'' respektive se' och se''.

223 Programmeringen blir: parbegin a: sa; signal (ac); b: sb; signal (bc); c: wait (ac); wait (bc); sc; signal (cd); signal (ce); d: wait (cd); sd'; wait (m); csd; signal (m); sd''; signal (df); e: wait (ce); se'; wait (m); cse; signal (m); se''; signal (ef); f: wait( df); wait (ef); sf parend Om man ska vara noggrann bör man också synkronisera med avseende på full/tom buffert i processerna d och e. Om man då antar att d är producenten och e är konsumenten bör man programmera d:... wait (nonfull); wait (m); csd; signal (m); signal (nonempty);... e:... wait (nonempty); wait (m); csd; signal (m); signal (nonfull);... med nonfull = buffertlängden och nonempty = 0 initialt. 2. En brevlåda (mbox) kan ha följande struktur - n stycken poster av typ <addr, len> som beskriver plats och längd på n meddelanden (mess). - en (eller två) listpekare på vilken blockerade processer köas. - en 'låsvariabel' (lock). Operationen send (mbox, mess) utför följande: 0. När vi kommer till koden har vi passerat FLIH som hanterat motsvarande 'trap'-instruktion och som har sparat anroparens 'kontext'. 1. Tillförsäkra ömsesidigt uteslutande mha lock. 2. Om brevådan är fylld så blockera anroparen: Motsv pcb köas (fifo) via listpekaren. 3. Annars: fyll i nästa post <addr, len> i mbox-strukturen. 4. Om det finns väntande mottagare så gör en sådan redo. 5. Släpp låset. 6. Gå till 'dispatcher'n. Operationen receive (mbox, mess) utför följande: 0., 1., 5. och 6. som i send 2. Om brevlådan är tom så blockera anroparen: Motsv pcb köas (fifo) via listpekaren. 3. Annars: hämta första post <addr, len> i mbox-strukturen och leverera via parametern mess. 4. Om det finns väntande sändande process så gör en sådan redo. 3. a. FCFS: Jobb1 kör under tiden [0, 8], jobb 2 under tiden [8, 12] och jobb 3 under [12, 13]. Medelgenomloppstiden blir alltså [ (8-0) + (12-0.4) + (13-1) ]/ 3 = 10. 53. b. SJF: Jobb 1 kör under tiden [0, 8], jobb 3 under tiden [8, 9] och jobb 2 under tiden [9, 13]. Medelgenomloppstiden blir alltså [ (8-0) + (13-0.4) + (9-1) ]/3 = 9. 53. c. FKS: Jobb 3 kör under tiden [1, 2], jobb 2 undet tiden [2, 6] och jobb 1 under tiden [6, 14]. Medelgenomloppstiden blir alltså [ (14-0) + (6-0.4) + (2-1) ]/3 = 6. 89. 4. I den logiska adressen LA = <s, w> är s = 24 och w = 20. Segmenten sidindelas i 1 K block så att w kan skrivas w = <p, d> med p = 10 och d = 10. Eftersom (den globala) segmenttabellen blir så stor sidindelas också denna så att s kan skrivas s = <s1, s2> där s2 = 10 och alltså s1 = 14. I frågan sägs inget om adresseringsenhet: Vi kan anta att maskinen har ordadressering, där varje ord (32 bitar) är tillräclkigt stort för att rymma alla tabellelement. En sidtabell kommer därför att rymmas (precis) i en sida. Segmenttabellens sidtabell (2**14) behöver däremot 16 sidor så att s1 bör uppfattas som s1 = <s11, s12> där s12 = 10 och s11 = 4.

224 Adressöversättning 1: - s11 väljer ut en av de 16 sidtabellerna för segmenttabellen. - s12 indexerar vald sidtabell för segmenttabellen. - s2 använs som index i en sida i segmenttabellen. Motsvarande element pekar ut en sidtabell. - p använs som index i denna sidtabell. Motsvarande element anges sidoramsplats. - d är offset inom sidan (och sidoramen). Om vi, tex, antar att primärminnets storlek är 64M (2**26) så behövs för att hitta varje sida 16 bitar, förutsatt (det rimliga antagandet) att varje sida placeras på en 1K-skarv. Det betyder att adressfältet i varje tabellelement är 16 bitar. Längdfältet i segmenttabellen behöver vara 10 bitar (vi räknar längden i antal sidor). Sidtabellelement: Adressfält 16 bitar, närvarobit, statistkbitar (ändrad, använd); totalt ca 20 bitar 32 bitar Segmenttabellelement: Adressfält 16 bitar, längdangivelse 10 bitar, skyddsbitar (RWE, ringnr) = 32 bitar. Adressöversättning 2: Vid varje referens kontrolleras - Närvarobit(ar): kan ge page fault trap. - Skyddsbitar: RWE kontrolleras mot pågående operation, ring-nr kontolleras mot psw.ringnr. - 'Offset'värdet w/1k kontolleras mot längdanvigelse i segmenttabellen. Anmärkning: Segmenttabellens sidtabell (2*14 ord, 16K) måste hållas resident; gärna på fast plats i minnet. Övriga tabeller behöver bara delvis finnas i minnet. Logiska adressen. LA framställs via exekverande instruktion. Eftersom en process endast kan referera 64 segment åt gången, används en 'segment tag' på 6 bitar. Offsetvärdet (1 M segment) bör vara 20 bitar. De flesta instruktioner kommer därför att rymmas i ett ord. Sexbitars fältet väljer ut ett av 64 stycken adresseringsregister som vardra innehåller segmentnumret s (24 bitar). Vi placerar accesskoden här i stället för i segmenttabellen och har därför nu 64 capabilities som definierar vårt 'execution/protection domain'. Vi låter processerna själva admininstrera (ladda) dessa register dock bara med innehåll taget från certifierade sk cap. segment. Adressöversättning 3: För att snabba upp översättningen går vi via associativt cacheminne. Detta administreas tex mha LRU algoritmen i maskinvara. Minneselementen bör innehålla: Nyckel: <s, p>; 34 bitar Data: Sidoramsnummer, närvarobit och accesskontrollbitar; 16 + 1 + 6 (?) = 26 bitar Ju fler element desto bättre; men missfrekvensen i detta cache bör inte överstiga några %. Figuren sammanfattar dessa överväganden.

225 Figur. Lösning till tentamenstal 921021:4 Instruktion op.kod 'tag' segmentoffset Associativt 'cache'minne s p diverse f cap-register 0 rwe segment-nummer s Logisk adress s w s1 s2 p d 63 23 0 Fysisk adress f d s = <s1, s2>, där s1 = 14 och s2] = 10 s1 = <s11, s12>, där s11] = 4 och [s12 = 10 w = <p, d>, där p = 10 och d] = 10 f för 64 M primärminne har f = 16 Segmenttabellens 16 sidtabeller a 1K element Segmenttabellens sidor Sidtabell (per segment) Sidor 0 s11 s12.. s2 0 1023 32 p 0 0 1023 d 15 31 0 31 0 16 K stycken sidor Tabellelement övrigt l f 6 10 resp 16 bitar 5. Eftersom man reserverar 9 sidor per process och dessa adminisreras LRU kommer efter nio initiala referenser alla kommande referenser att ge 'page fault'. Varje process får felfrekvensen 100%. 6. Del 1: Eftersom inget hål av storlek 1 finns ledigt, väjer man ut fösta lediga block av storlek 2. Det är a. Blocket a delas i två delar; vi allokerar första halvan och låter andra halvan ingå i fria listan av storlek 1. Kartan blir bara ändrad i 'toppen'. Adress Innehåll -------------------------------------------- 0 0000 a' 1 upptaget 0 0001 a'' 1 ledigt 0 0010 b 2 upptaget I övrigt som i initialtillståndet.

226 Del 2: Blocket d frigörs med sin buddy e till ett ledigt block d' av storlek 4. Blocken d' och c är inte 'buddies' trots att de ligger bredvid varandra och är lika stora. De ska alltså inte slås i hop. Kartan blir. Adress Innehåll ----------------------------------- 0 0000 a' 1 upptaget 0 0001 a'' 1 ledigt 0 0010 b 2 upptaget 0 0100 c 4 ledigt 0 1000 d' 4 ledigt 0 1100 f 4 upptaget... I övrigt som i initialtillståndet. 7. Följande punkter är de viktigaste. - Varje process tilldelas en cap-lista CL(d) för varje domän d. - Pecis en sådan lista är aktiv åt gången och använs vis adressöversättning och accesskontroll. - Listan innehåller element cap = <c, x>, där c är accessrättigheterna och x ett globalt objekt (segment) namn. - Listan idexeras med ett lokal segmentnamn j från det refererande instruktionssegementet. - x elementet översätts via en global segmenttabell till en fysisk segmentplats (se uppgigft 4) - Listan svarar mot en rad i matrisen i den allmänna modellen för åtkomstskydd. 'Enforcement' implementeras så att varje process och varje segment har ett unikt namn, att alla referenser kontrolleras felfritt genom att det till varje objekttyp associeras en 'reference monitor': i fallet med segment utgörs denna av adresseringslogiken. 'Rights movement'. För att kontrollera att rättigheter flyttas på rätt sätt behövs speciella rättigheter; owner, control och *. Dessa kodas in i c-fältet i caps. Eftersom CL i sig är segment (objekt) betyder det att om CL(d) innehåller ett element <owner, xx>, där xx är den unika identifieraren för att cap-segment så kan processen i domän d via systemanrop flytta en rättighet till CL(xx). 'Domain switching'. För detta behövs en rättighet som anges att en process i domän d kan byta till domän d'. CL(d) innehåller ett element <ent, d'>. I detta nya domän börjar som en konsekvens av en instruktion "enter d', j, k" instruktionen på plats k i segmentet j i den anropade domänen d' att exekvera. Intruktionen enter bör (som andra proceduranrop) spara åtminstone återhoppsadressen och set gamla domän-värdet d (på en stack), så att status vid anropstället kan återställas vid retur. 8. a. I detta fall kan man tänka sig att läsning sker kontinuerligt från 0. I detta fall måste alltså block 0, 1, 2, 3 och 4 läsas (5 block). b. Om vi enkel-länkar listorna traverserar vi blocken cirkulärt: Block 10, 11,..., max och därefter 0, 1, 2, 4 och 4 måste läsas. c. I detta fall läser vi indexblocket och sedan sökt block: 2 block. Sammanhängande allokering går bra om filerna är små och av (relativt) fix längd. Länkad allokering löser svårigheterna med sammanhängande allokering om vi har långa sekventiella filer. Indexerad allikering underlättar dessutom 'random access'. 9. a. Baklås uppstår under följande tre villkor - Exklusivt kontrollerade resurser ('mutual exclusion'). - Endast resursinnehavaren kan frisläppa resurserna ('no preemption'). - Cirkuär resursväntan har uppstått.

227 och manifesteras i att ingen av de inblandade processerna kan fortsätta någonsin. Kan hanteras på tre sätt - Tillse att minst ett av de nödvändiga villkoren ej är uppfyllt ('prevention'). - Allokera aldrig så att vi får olämpliga ('infeasible') tillstånd ('avoidance'). - Representera resursallokeringssituationerna så att baklås kan upptäckas. och åtgärda vid fullbordat faktum ('detect and recover'). b. 'open/close'. Syftet med open är att 'förbereda' en fil för användning (läs eller skriv eller annat). Tre åtgärder vidtas: - Kontrollera åtkomsträttigheterna. - Tillse att vi löser 'readers/writers problem'. - Kopiera lämpliga delar av katalogstrukturen till primärminnet. c. test-and-set. Används som det grunläggande primitivet för att åstadkomma ömsesidigt uteslutande för tex semafor- eller brevlåde-operatioer per se. test-and-set måste göra minst två saker odelbart. - Läsa innehållet i en minnescell och sätta en statusindikator - Ändra samma minnescellinnehåll (till 'busy'). Kombineras alltid med en 'busy wait' slinga på statusindikatorn. test-and-set duger inte för allmänna kritiska avsntt, ty - busy wait är orimligt för godtyckligt långa kritska avsnitt. - starvation kan uppträda eftersom instruktioen inte 'minns' i vilken ordning processerna efterfrågande den kritiska resursen. - måste kompletteras med disable interrupt, ty om CS avbryts finns ingen garanti att vi någonsin återvänder dit. d. PCB. En struktur som används för att beskriva en process. Innehåller (bland annat) följande information - processens namn - registerspararea; inkl pc - lista över allokerade resurser - (beskrivning av) processens domän - processens prioritet - övriga processattribut - pekare e. Dynamisk länkning. Se anteckningarna "Namnhantering". Länkningen sker under exekveringen via anrop till filsystemet. Kräver segmenterad minnesadministration. Ett segment införs i det vitruella adressrummet först då det refereras för första gången i en exekvering genom att en symbolisk adress [segmentnamn, variabelnamn] ersätts av en numerisk [s, w]. Denna kan efter trap och åtföljande länkning översättas av adresseringslogiken. Vad jag känner till är det endast Multics och OS/2 som erbjuder denna facilitet. Fördel: Vanligt filsystem behövs inte. f. BLP-modellen. Underlag för implementering av mandatory access control (MAC), via labels l (clearance, classification) som associeras till varje subjekt och objekt. Vi har följande regler. Simple security, ss: Ett subjekt s får läsa ett objekt o bara om l(s) l(o) ('no read up'). *-property: Ett subjekt s får skriva till ett objekt o bara om l(s) l(o) ('no write down'). Reglerna kombineras med följande primitiva operationer. - get/release (access right). - create/delete (object). - change (security level). - give (access right). - rescind (access right).

228 A.2.2. 19 december 1992 1. Vi inför en semafor för varje del av precedensordningen: - a går före b: ab (= 0 initialt) - b går före d: bd (= 0 initialt) - b går före e: be (= 0 initialt) - c går före e: ce (= 0 initialt) - d går före e: de (= 0 initialt) Programmeringen blir: Vi förkortar wait = w och siganl = s. parbegin a: satser-a; s(ab); b: w(ab); sataser-b; s(bd); s(be); c: satser-c; s(ce); d: w(bd); satser-d; s(de); e: w(be); w(ce); w(de); satser-d; parend 2. a. Fel. Brevlådor och semaforer är teoretiskt sett ekvivalenta och kan därför implementeras med hjälp av varandra. I praktiken väljer man dock nog att implementera båda med hjälp av test-and-set och/eller disable/enable interrupt. b. Fel. Begreppen är i grunden oberoende. Semaforoperationer används dock för att åstadkomma ömsesidigt uteslutande med avseende på kritiska avsnitt. Fast det är ju sant att implementeringen av wait och signal i sig innehåller kritiska avsnitt. c. Fel. Snarare finns risk för baklås om tex monitorer inkapslas i monitorer. d. Fel. Inte alls säkert. SJF är dock den algoritm som minimerar medelväntetiden för processer. e. Fel. add-instruktionen är av effektivitetsskäl normalt inte odelbar i ett flerprocessorsystem. f. Sant, i praktiken. 'Dispatcher' måste vara odelbar och eftersom den är kort deaktiveras avbrottsystemet. 3. Under ett intervall av längd t ska n processer kunna exekveras tiden q och göra processbyte med tiden s. Allstså måste gälla att n * (q + s) t, dvs q t/n - s. Om vi samtidigt vill minska 'overhead' ska tidsskivan väljas så stor som möjligt. Alltså: q = t/n -s. 4. a. Sidtabellen skulle annars bli alltför stor. Här kan man säga att sidtabellen sidindelas. Då kan vi också 'swap'-a denna. Att det är två nivåer (extra) är mer en smaksak än en nödvändighet. b. Via denna tabell får varje process ett eget virtuellt adressrum och vid processbyte behöver inte sidtabellen sparas och återställas. c. 'Offset'värdet om 12 bitar säger oss att sidstorleken är 4 K. d. Ett associativt cacheminne för adressöversättningen finns. Att slå upp en adress i så många nivåer skulle, även om mmu:n var snabb, vara alltför ineffektivt. e. Tja kanske i begräansad omfattning: Varje process' namnrum kan ju sägas definiera ett segment. f. 32 bitars adress säger oss att det virtuella adressrummet är 4 G. Lägger vi till att det kan finnas 2 12 sådana blir det totala virtuella adressrummet 2 44 = 16 T. 5. a. Om sidoreferensmönstret w vore likformigt fördelat skulle sidfelfrekvensen bli proportionell mot förhållandet mellan storlekarna på det virtuella och det fysiska minnet. Detta skulle ge en oacceptabelt lång (medel)accesstid för det virtuella minnet. I praktiken "klumpar sig" sidnummren mycket så att om de sidor (sk 'working set') processen under ett tidsintervall hålls i primärminnet så kan sidfel undvikas (nästan) helt med resultat att det virtuella minnets accesstid blir (nära) det fysiska minnets. b. OPT, LRU och NRU är algoritmer som tar hänsyn till en process' w, medan FIFO inte gör det. Den optimala agoritmen är naturligtvis bäst men orealiserbar. LRU är bättre än de övriga två, men mycket dyr att implementera. Ordningen blir alltså: NRU, FIFO, LRU, OPT (Bäst = ger minst antal sidfel). c. Möjligen en smula, men 'thrashing' kan uppstå även om lokaliteten är perfekt.

229 6. a. Se tex sid 348-352 i Milenkovic, sid 328-333 i Bic-Shaw. b. Se tex sid 209-210. c. Se tex sid 296-301 i Milenkovic, sid 266-270 i Bic-Shaw. 7. Se sid 345-347 respektive sid 356-358. BLP innehåller både 'discretionary' och 'mandatory' åtkomstkontroll och RP är därför en delmängd av BLP. Discretionary access control, tex RP, klarar inte att garantera att icke-auktoriserde flöden spärras. 8.a. De tre nödvändiga villkoren är -- resurserna är föremål för ömsesidigt uteslutande; de är odelbara. -- resurserna är 'non pre-emptive'; de kan bara frigöras av den som äger dem. -- en cirkulär resursväntan har uppstått. b. Eftersom vi angriper dessa villkor så talar vi om att förhindra baklås. -- swap-utrymme: Detta är ju odelbart och 'non-preemptive' så enda chansen till förhindrande ligger att preallokera disk-sektorer i en bestämd ordning så att den cirkulära väntan inte kan uppstå. (Avoidance är också möjligt, men inte detect and recover; inget att göra recover ifrån.) -- primärminne: Pre-emption är ju vanligen precis det man gör. (Både avoidance och detect and recover är principiellt möjliga men för ineffektiva.) c. --i/o-kanaler:, Allokera i 'nummerordning'. Då förhindras cirkulär väntan. ( --- som i b. -- ) A.2.3. 13 mars 1993 1. ('Sleeping barber'). Lösningen finns (numera) i avsnitt 3.2.5. i detta kompendium 2. Avsnitt 3.5 visar hur inträde i och utträde ur monitorer samt hur wait.xx och signal.xx implementeras med semaforer. Följande monitor visar hur en monitor kan simulera P och V operationerna. monitor semaphore; begin count: integer = 1; s: queue; procedure P; begin count := count - 1; if count < 0 then wait.s end if; end; procedure V; begin count := count + 1; if count 0 then signal.s end if ; end; end semaphore; 3. a. Algoritmen är SJF ('shortest job first'). Den innebär att den process som har kortaste (kvarvarande) exekveringstid körs. Algoritmen används 'non-preemptive'. b. Om man kör en kortare process efter en längre i st f tvärtom så minskar detta väntetiden mindre för den längre processen än den ökar väntetiden för den kortare. Alltså ökar medelväntetiden. c. Algoritmen är helt olämplig i både tiddelnings- och realtidssytem. Den är en kvarleva från den satsorienterade tiden. 4. i. Delning. Delade sidor måste ha samma sidnummer i alla processer och de sidor som delade sidor refererar också. Detta är inget problem vid segmentering om capability list eller andra processlokalt administrerbara kontext utnyttjas och vars identifierare avbildas via ett globalt kontext. ii. Minnesskydd. Vid sidindelning hamnar (oftast) oilka objekt över sidskarvar, varvid åtkomsträttigheterna måste sättas för 'liberalt'. Vid segmentering är alla element i ett segment av samma typ. Om tex capabilities används kan samma segment åsättas olika rättigheter i olika processer.

230 iii. Dynamiska datastrukturer. Segments storlek kan ju tillåtas förändras dynamiskt. Att hantera dynamiska strukturer i den virtuella adressrummet vid 'paging' är helt analogt med att hantera dynamiska strukturer direkt i primärminnet. iv. Dynamisk länkning. Vid 'paging' länkas alla moduler statiskt i det virtuella adressrummet. Länksegment som används för dynamisk länkning i segmenterade system blir mycket krånligt att simulera. 5. Den upplevda accesstiden kan skrivas Teff = Tpm + f*tsm, där Tsm = Tarm + Trot/2 + Trot/16. Aktuella siffrorna ger 110 = 100 + f*(4 + 8/2 + 8/16)*1 000 000, dvs f 1.2 10-6. Med halverad sidstorlek fås 110 = 100 + f'*(4 + 4 + 0.25)* 1 000 000 och alltså (f' - f)/f = 8.5/8.25-1 1.2-1 = 0.2, dvs cirka 20% 6. 'Thrashing'. Se läroboken. 7. a. Vid 'open' utförs följande funktioner i. Åtkomsträttigheter kontrolleras. ii. 'Concurrency control' utförs ('readers/writers problem'). iii. Fildeskriptorer i minnet byggs upp. iv. Sektorbuffring ('file caching') sker. b. Implicit open kan ge mer 'overhead' (utförs fler gånger). Å andra sidan hålls filer inte öppna i onödan. Explicit 'open' ger större frihetsgrader för användaren och risk för att återkallande eller tillägg av rättigheter får fördröjd effekt. 8. a. (Inget svar här.) b. I pcb-n, i filkatalogelement, i mbox-strukturen och i symboltabellen (vid 'parsing' eller interpretering). (Var annars?) c. För if a then S ska kontrolleras att a S och för b := c + d ska kontolleras att c d b. I vårt exempel (if a then b := c + d;) blir kontrollen alltså 1. a b -- b är enda variabel som tilldelas värde i then-grenen. 2. c d b -- maximum av 'högerledsklasserna' får inte överstiga klass för vl. A.3. Tentamina Här följer några relativt färska tentamina för teknisk fysiklinjen, datavetenskapliga linjen och för matematisk naturvetenskapliga linjen. Jag är helt övertygad om att lärare, mig inklusive, har gett, skulle ha givit och kommer att ge tentamina med helt andra typer av frågor.

231 TENTAMEN Operativsystem, tfl, 1992-10-21 Skrivtid: 8.00-14.00 (Polacksbacken) Hjälpmedel: Miniräknare Maximalt tre poäng per uppgift Betygsgränser cirka 40% (3), 60% (4) resp 80% (5) Lycka till! 1. Betrakta ett parallellt sytem av processer {a, b, c, d, e, f}. Precedensvillkoren är att a och b går före c, c går före d och e och att d och e går före f. Vidare uppdaterar d och e en gemensam begränsad buffert. Implementera de nödvändiga operationerna för synkronisering och ömsesidigt uteslutande i de sex processerna med hjälp av semaforoperationer. Ange begynnelsevärden för alla semaforer. 2. En brevlåda (mailbox) kan användas för meddelandeutbyte mellan processer. Beskriv, tex med pseudokod, hur operationerna send och receive inplementeras. Ange struktur på alla nödvändiga data. Brevlådan ska ha ändlig kapacitet och operationerna vara asynkrona och potentiellt suspenderande. 3. Räkna ut medelgenomloppstiden T (avarage turn around time) för tre jobb (processer) 1, 2 och 3: Jobb Ankomsttid cpu-tid ---------------------------------------------------- 1 0.0 8 2 0.4 4 3 1.0 1 Använd genomgående icke 'preemptive' algoritmer och ange svar för a. FCFS (first come first served). b. SJF (shortest job first). c. FKS (future knowledge system): SJF antas ju ge bättre prestande men observera att vi väljer att köra jobb 1 vid tiden 0 eftersom vi inte vet att två kortare jobb snart anländer. Beräkna T om vi låter cpu-n vara oanvänd under den första tidsenheten och sedan använder SJF. Kommentera resultaten i a., b. och c. 4. I ett segmenterat system får finnas maximalt 2 24 segment. Ett segment kan vara maximalt 1 M varför segmenten sidindelas i sidor om 1 K. Konstruktörerna har gjort den kompromissen att en process bara tillåts referera 64 stycken segment åt gången (dvs utan att byta domän). Visa med hjälp av kommenterade figurer hur adressöversättningen går till i detta system från exekverande minnesrefererande instruktion till sökt ord i primärminnet. Ange storlekar på alla tabeller. Glöm inte att beskriva referenskontroller, 'page faults' och missar i det tillhörande (nödvändiga!) associativa cacheminnet. 5. Thrashing kan uppstå i sidindelade system. Antag att ett primärminne rymmer 90 sidoramar för nio processer som alla har referenssträngen w = 0123456789 0123456789... där denna sidföljd återupprepas godtyckligt antal gånger. Eftersom alla sidor ryms i minnet kommer sidfelfrekvensen att vara 0 och cpu-utnyttjandet 100%. Beräkna sidfelfrekvensen då en tioende process med samma w som de tidigare aktiveras. Förutsätt att varje process får 9 sidoramar och att utbyteslgoritmen är LRU (least recently used). V. G. VÄND!

232 forts., 6. I ett visst läge då buddy-metoden används som placeringsalgoritm ser allokeringen ut som följer. Adress Innehåll Blocknamn Storlek Status --------------------------------------------- 0 0000 a 2 ledigt 0 0010 b 2 upptaget 0 0100 c 4 ledigt 0 1000 d 2 upptaget 0 1010 e 2 ledigt 0 1100 f 4 upptaget 1 0000 g 4 ledigt 1 0100 h 4 upptaget 1 1000 i 8 ledigt ----------------------------------------------- Visa med två figurer hur 'kartan' ser ut dels då ett block av storlek 1 allokerats, dels då därefter block d frigjorts. 7. Matrismodellen för objektskydd innefattar principer för upprätthållande (enforcement) av åtkomstkontroll, för domänbyte och för att flytta rättigheter. Ange med text och figur(er) hur dessa principer implementeras i ett capability- orienterat/baserat system. 8. I ett filsystem omfattar logiska block vardera en sektor a 0.5 K. Antag att det senast använda blocket var nummer 9 och att nummer 4 står närmast i tur att användas. (Blocken numreras från 0.) Hur många sektorer måste läsas från skivminnet om följande allokeringsmetod används? a. Sammanhängande (contiguous). b. Ren länkning (via pekare i datablocken). c. Indexerad. Motivera dina svar. 9. Beskriv och exemplifiera (användningen av) följande begrepp. a. Baklås (dead lock, deadly embrace) och sätt att bemästra sådana. b. Operationerna open och close i filsystem. c. Test-and-set instruktionen. d. Processbeskrivning (PCB). e. Dynamisk länkning. f. Bells och LaPadulas modell för informationsflödeskontroll.

233 TENTAMEN Operativsystem dvl, 1992-12-19 Betygsgränser: Cirka 50% för G och 85% för VG. Examinator: Hans Flack, tel 183 016 (arb), 301 846 (bost). Räknedosa tillåten. Inte fler än 3 poäng per uppgift ges. Tid: 6 timmar (14:30-20:30). Lycka till! 1. Betrakta ett parallellt system bestående av fem processer S = {a, b, c, d, e}. Precendensvillkoren består i att - a måste gå klar innan b får börja. - b måste gå klar före d och e. - c och d måste gå klara innan e får börja. Realisera ordningen med hjälp av semaforoperationer. Ange semaforernas startvärden. 2. Eftersom inte samtliga av följande påståenden är sanna blir din uppgift att avgöra och motivera sanningshalten i följande. Om du inte tycker att svaret är entydigt, så ange noga de förutsättningar du använder. a. Brevlådor (mail boxes) kan implementeras med hjälp av semaforer men ej omvänt. b. Kritiska avsnitt uppstår på grund av semaforoperationer. c. Baklåsrisken minskas med hjälp av monitorer. d. 'Shortest job first'- algoritmen minimerar svarstiden. e. Test-and-set-instruktionens funktionalitet kan uppnås med instruktionen add mem,#1 som ökar innehållet i minnescell mem (initial = 0) med 1 och sätter 'non zero' flaggan i statusregistret. f. 'Dispatchern' måste exekvera med deaktiverat avbrottsystem. 3. Round robin har en variant som kallas cyklisk round robin. Metoden innebär att tidskvantum avpassas dynamiskt till antalet (n) processer i redolistan; fler processer ger kortare tidskvantum (q). Hur ska q väljas för att varje process ska få köra var t:te sekund samtidigt som totalt 'overhead' som orsakas av processbyten minimeras. Antag att ett processbyte tar tiden s. 4. I den maskin som de flesta på DoCS använder finns en mmu (memory management unit) för översättning av logiska linjära 32-bitars adresser till fysiska platser. Tillsammans med SPARC arkitekturen fungerar denna mmu på följande sätt. I varje ögonblick anges ett aktuellt kontext med ett 12 bitars register. Registerinnehållet används som index i en kontexttabell. Den adress som genereras av processorn omfattar 32 bitar. MMU-logiken delar upp denna som bestående av fyra delar: -- index1; 8 bitar -- index2; 6 bitar -- index3; 6 bitar -- offset; 12 bitar -- Givet ett kontextvärde (mellan 0 och 4095) pekar motsvarande kontexttabellelement ut en 'first level' tabell (FLT). Index1 används som index i denna. Detta FLT-element pekar ut en 'second level' tabell (SLT) som i sin tur indexeras via index2 för att finna en 'third level' tabell (TLT). Värdet på index3 anger ett element i TLT som pekar ut avsedd sidoram i primärminnet (eller anger sidfel). a. Varför finns tre nivåers tabeller i stället för bara en (sid)tabell? b. Vilket syfte har kontexttabellen? c. Vad är sidstorleken? d. Vilken ytterligare maskinvara måste systemet ha för att minnesaccesstiden ska bli rimlig? e. Är det möjligt att implementera segmentering under de givna förutsättningarna? f. Hur stort är det virtuella adressrummet? Ge noggranna motiveringar för alla svar! V. G. VÄND!

234 forts., 5. Tids- (temporal) eller rums- (spatial) lokalitet (locality) är grundförutsättningar för att ett system med virtuellt minne baserat på 'paging' ska bli attraktivt. a. Förklara hur denna egenskap påverkar sidfelfrekvensen (page fault frequency). b. Relatera till och förklara innebörden av utbytesalgoritmerna FIFO, LRU, den optimala OPT och NRU (eller clock). Ranka, med motivering, metoderna efter den ordning de föredras att användas i ett operativsystems minneshanterare. c. Påverkar lokaliteten risken för 'thrashing' och i så fall hur? 6. Lämna utförliga beskrivningar av följande begrepp. a. Capability (för adressering och skydd). b. Buddy-metoden (för dynamisk minneshantering). c. Filkatalog (file directory). 7. Både ringskydd (RP) (ring protection) och skydd enligt Bells och LaPadulas (BLP) modell bygger på att subjekt och objekt klassificeras med ringnummer respektive etiketter (labels, classes). Redogör för dessa metoder och förklara också noga vari skillnaderna (trots sagda likheter) mellan metoderna ligger. Påvisa, genom ett konkret exempel, ett skyddsproblem som BLP men inte RP löser och omvänt. 8. Baklås kan förhindras (deadlock prevention) genom att tillse att något av de nödvändiga villkoren inte är uppfyllt. a. Vilka är de nödvändiga (och tillräckliga) baklåsvillkoren? b. Vilket/vilka villkor lämpar sig bäst att utesluta för baklåshantering för följande resurser -- 'swap'- utrymme. -- primärminne. -- i/o kanaler. Motivera svaren. ------------------------------------------------------------- Med en tillönskan om en god jul och ett givande nytt år tackar jag varmast för er uppmärksamhet. /h. -------------------------------------------------------------

235 TENTAMEN Operativsystem, 1993-03-13 EXAM Operating Systems, March 13, 1993 Betygsgränser: Cirka 50% respektive 85%./ Grading: Pass 50%, Pass with distinction 85% (approx). Examinator: Hans Flack, tel 018-183016./Examiner: Hans Flack, telephone 018-183016. Räknedosa tillåten (men behövs inte)./calculator (not really needed), and dictionary allowed. Inte fler än tre poäng per uppgift ges./no more than three points per question. Tid: 5 timmar (9:00-14:00)./Duration: 5 hours (9:00 am - 2:00 pm). Lycka till!/ Good Luck! 1. En frisersalong består av ett väntrum med n stolar och mottagningsrummet med frisörstolen. Om inga kunder finns så går frisören och sover. Om en kund kommer in i salongen och alla stolar i väntrummet är upptagna så lämnar kunden salongen. Om frisören är upptagen men väntrumsstolar är lediga så sätter sig kunden i en av de lediga stolarna. Om frisören sover så väcker kunden honom. Skriv processer som koordinerar frisören och kunderna. För att gå in i och för att gå ur proceduren 'klipp eller raka' så ska synkroniseringsoperationer som använder semaforer användas i processerna. (Anm. Detta är ett klassiskt 'client/server'-problem med ändlig kö på efterfrågesidan, formulerat av Dijkstra 1965 sådär 20 år innan 'client/server' blev ett begrepp inom branschen (distribuerade) operativsystem.) A barber shop consists of a waiting room with n chairs, and the barber room containing the barber chair. If there are no customers to be served, the barber goes to sleep. If a customer enters the barber shop and all chairs are occupied, then the customer leaves the shop. It the barber is busy, but chairs are available, then the customer sits in one of the free chairs. If the barber is asleep, the customer wakes up the barber. Write processes to coordinate the barber and the customers. In order to enter and leave the procedure 'shave or cut' synchronizing operations using semaphores should be used in the processes. (Note. This is a classical client/server problem stated by Dijkstra 1965 some 20 years before client/server became a concept of (distributed) operating systems.) 2. Visa hur semaforer kan implementeras med hjälp av monitorer och omvänt. P- och V- operationerna ska implementeras via monitorrutiner och monitorkonstruktionerna ska implementeras med semaforoperationer. Show how to implement semaphores with monitors and vice versa. The P and V operations should be coded as monitor routines, and the functionality of a monitor should be implemented vith semaphore operations. 3. Process-schemaläggningsalgoritmen x minimerar medelväntetiden. a. Vilken algoritm är x? Beskriv den noga. b. Bevisa påståendet. Ange alla förutsättningar. c. Varför används andra algoritmer än x? The scheduling algorithm x minimizes the average waiting time. a. Who is x? Describe the algorithm carefully. b. Prove the assertion. State the assumptions. c. Why are other algorithms than x used? 4. Vid minneshantering fästes ibland avseende vid bra understöd för i. Delning av kod och data mellan processer ii. Minnesskydd iii. Dynamiska datastrukturer iv. Dynamisk länkning Visa hur dessa önskemål är 'svåra' att hantera vid ett sidindelat system och hur segmentering kan användas för att understödja i., ii., iii. och iv. V G VÄND!/ Con't.

236 forts., Certain applications require memory management with good support for i. Sharing of code and data between processes ii. Memory protection iii. Dynamic data structures iv. Dynamic linking Show that it is 'hard' to achieve these goals in a paging system, and how segmentation can be used to support i., ii., iii., and iv.. 5. I ett virtuellt minne baserat på sidindelning är primärminnets accesstid 100 ns, sidstorleken 4K, diskens rotationstid 8 ms, inställningstiden för armen 4 ms och antalet sidor per spår 16. Vilken sidfelsfrekvens f krävs för att den från processorn upplevda accesstiden ska vara högst 110 ns och hur mycket (i %) kan f tillåtas öka om sidstorleken halveras? Tid för adressöversättning kan försummas då en sida finns i primärminnet. A virtual memory based on paging is implemented as follows. The access time for the primary memory is 100 ns, the page size is 4 K, the rotational time of the disk is 8 ms, the seek time is 4 ms, and the number of pages per track is 16. What page fault frequency is needed to get an effective access time of at most 110 ns, and how much (%) can f be allowed to increase if page size is halved? Address translation time for pages in memory can be neglected. 6. Beskriv fenoment 'thrashing', dess orsaker och motåtgärder. Describe thrashing, its causes, and prevention. 7. En fil kan öppnas endera explicit via ett anrop open (<params>) eller implicit vid anrop read/write. a. Vilka åtgärder vidtar filsystemet när en fil öppnas? b. Ange för- och nackdelar med explicit/implicit open. A file could be opened explicitly by calling open (<params>) or implicitly at each read/write. a. Which operations are performed by the file system at open? b. State advantages and disadvantages for explicit and implicit open respectively. 8. Säkerhetsklasser (labels) o för objekt o för MAC kan associeras med resurser som tex processer, filer, brevlådor och variabler och klasserna ingå i ett lattice (partiell ordning, glb och lub definierade). a. Vilka skyddsproblem löser detta jämfört med 'vanlig' åtkomstkontroll (DAC)? b. Vilka datastrukturer bör användas för att beskriva klasserna för nämnda resurser? c. Vilka kontroller avseende klasser bör kontrolleras för att tillförsäkra auktoriserade flöden för konfidentialitet vid satsen if a then b := c + d; uttyckt i a, b, c, d, och? Förklara. Security classes (labels) o for objects o for MAC can be used for resources eg processes, files, mail boxes, and variables, and the classes contained in a lattice (partial order, glb, and lub defined). a. Which protection problems does this solve in comparison to discretionary access control (DAC)? b. Which data structures should be used to hold the classes for the above resources? c. Which class relations are to be checked to assure authorized flows with respect to confidentiality for the statement if a then b := c + d; in tems of a, b, c, d, and? Explain.

237 TENTAMEN Operativsystem, dvp, den 17 december, 1993 Betygsgränser: Cirka 50% (G) och cirka 80% (VG). Examinator: Hans Flack, tel 018-18 30 16. Räknedosa tillåten (men behövs knappast). Inte fler än tre poäng per uppgift ges. Tid: 6 timmar (03:00 pm - 09:00 pm). Lycka till! 1. Betrakta ett parallellt och slutet ('closed') system av processer P = {p 1,..., p n }. Begreppet slutet innebär att systemet har exakt en startprocess (= en process som inte har några föregångare) och exakt en slutprocess (= en process som inte har några efterföljare). Ange ett konstruktivt sätt att med hjälp av exakt n-1 semaforer realisera en godtycklig precendensordning i ett sådant system. (Negativa semaforvärden är tillåtna.) 2. Ett alternativ till instruktionen test-and-set är swap (eller exchange) som atomärt byter ut innehållet i två minnesceller eller register mot varandra. a. Visa hur ömsesidigt uteslutande (LOCK/UNLOCK) kan åstadkommas med hjälp av en slinga repeat... until... ; som innehåller instruktionen swap (a,b). Ange typ och initialvärde på a och b. b. Vilka nackdelar/begränsningar har din lösning för att åstadkomma LOCK jämfört med semaforer? 3. a. Redogör för följande metoder för processplanering ('scheduling'): Högsta prioritet först (HPF) och 'round robin' (RR). b. Antag att tre processer är givna enligt följande: Namn Ankomsttid Längd Prioritet ---------------------------------------------------------------------------------- A 0 10 hög B 1 2 medium C 2 6 låg ---------------------------------------------------------------------------------- Bestäm medelväntetiden givet algoritmerna HPF och RR med tidskvantum q = 1. 4. I ett sidindelat system med 32 bitars virtuella/logiska adresser L uppdelar adressöversättaren L i fyra fält L = <a, b, c, d> för att därigenom åstadkomma ett tre-nivås sidtabellsystem. a. Varför uppdelas sidnumret p i tre delar p = (a, b, c)? b. Hur sker adressöversättningen till fysisk adress (plats) och hur ser sidtabellelementen ut? c. Vilka av fälten a, b, c, eller d påverkar det maximala antalet sidor varje process kan ha? 5. Tillämpa LRU och FIFO på process-referenssträngen w = 0172327103 och bestäm antalet sidfel då minnet rymmer fyra sidoramar och är tomt initialt. V. G. VÄND!

238 forts., 6. Länkning och delning kan göras dynamiskt som i tex Multics. Antag att två processer p1 och p2 exekverar samma procedur P som i sin tur refererar ett datasegment D. Efter det att alla länkar till P lösts upp är minnet allokerat som följande figur visar. Segmenttabeller Procedursegment för P Datasegment D 1000 1005 5000 Symboltabell 9000 X 15 9001 Y 0 9002 Symboltabell 2000 5010 D, X Data 2012 5020 D, Y Ren kod Länkavsnittsmall (evt) add* 0, lp Länksegment för p1 och P add* 5, lp 10 000 Upptagna tabellelement 6000 10, 10, trap trap tag tag 6005 20, 20, trap trap tag tag Länksegment för p2 Länkavsnittsmall 11 000 Segmenttabeller: för p1 startar den vid adress 1000 och nästa lediga element finns vid adress 1005. för p2 startar den vid adress 2000 och nästa lediga element finns vid adress 2012. Segmentet P: Symboltabellen börjar vid adress 5000. Kodavsnittet börjar vid adress 5050. Länkavsnittmallen börjar vid adress 6000. Segmentet D: Symboltabellen börjar vid adress 9000. Data som sådana börjar vid adress 9002. a. Gör ovanstående figur fullständig genom att rita ut länksegmenten för p1 och p2 innan det att instruktionerna add utförts. Dessa börjar vid adesser 10 000 respektive 11 000. b. Hur har länksegmenten ändrats när add instruktionerna utförts? 7. Beskriv innebörden av operationen j := open-file ( parametrar), dvs vilka är parametrarna och vilka operationer utförs av funktionen open? 8. a. Redogör för accessmatrismodellen (AMM) för skyddssystem. b. Förklara minst två frågeställningar som avser datasäkerhet som AMM inte klarar.