Datorsystem Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3 Student: Lärare: Underskrift: Underskrift: Datum:
Datorsystem Laboration 3 1 Innehåll 1 Inledning 2 1.1 Introduktion........................................... 2 1.2 Labbens syfte........................................... 2 1.3 Labbens upplägg......................................... 2 1.4 Hemlaboration.......................................... 2 1.5 Litteratur till laborationen.................................... 2 1.6 Att genomföra labben...................................... 3 2 Förberedelseuppgifter 3 2.1 Multiprogramming........................................ 3 2.2 Minne............................................... 4 2.2.1 Vid redovisningen.................................... 4 3 Labbuppgifter 5 3.1 Processorn och processer..................................... 5 3.1.1 Om värdet CPU time (%).............................. 5 3.1.2 Processor-intensiva processer.............................. 6 3.1.3 Blanda in en I/O-intensiv process........................... 7 3.1.4 I/O-intensiva processer................................. 7 3.1.5 Blanda in en CPU-intensiv process........................... 8 3.1.6 Vid redovisningen.................................... 8 3.2 Context Switch och Time-Slice................................. 9 3.2.1 Vid redovisningen.................................... 9 3.3 Minne och Swap......................................... 10 3.3.1 Om slidern clock..................................... 10 3.3.2 Virtuellt minne och Page tables............................. 10 3.3.3 Page tables........................................ 11 3.3.4 Paging........................................... 12 3.3.5 Thrashing......................................... 13 3.3.6 Vid redovisningen.................................... 13 4 Redovisning 14
Datorsystem Laboration 3 2 1 Inledning 1.1 Introduktion I denna labb kommer vi undersöka hur operativsystemet sköter den grundläggande uppgiften att köra flera processer samtidigt och dela upp datorns primärminne mellan dem. För att göra detta kommer vi använda ett grafiskt program som låter oss simulera en processor med primärminne och ett operativsystem som kör flera processer samtidigt. 1.2 Labbens syfte 1. Du skall få en större förståelse av vad som händer när operativsystemet kör flera processer samtidigt. 2. Du skall förstå hur processernas användning av I/O (Input/Output) påverkar användingen av processorn. 3. Du skall kunna dra slutsatser om hur context switching påverkar prestandan. 4. Du skall förstå hur operativsystemet hanterar virtuellt minne med page tables och paging. 5. Du skall få en större insikt i hur ett operativsystem kan köra program som använder mer minne än det finns primärminne i datorn. 1.3 Labbens upplägg Labben är uppdelad i tre delar; Processer (3.1), Context Switching (3.2) samt Minne och Swap (3.3). För varje del kommer ni utföra ett antal simuleringar och försöka svara på frågor och dra slutsatser om vad det är som händer. 1.4 Hemlaboration Laborationen är en hemlaboration. Det innebär att ni utför den på förhand, antingen på er egen dator eller i någon av universitetets datasalar, för att senare redovisa resultatet för en handledare. När ni kommer till redovisningen måste ni kunna svara på alla frågor; både förberedelseuppgifter och de frågor som ställs i de olika momenten av hemlaborationen. Observera att ni förväntas ta med era lösningar på papper. Datorer kommer inte vara tillåtna på redovisningen. Under sektionen Redovisning (se sektion 4) finns en sammanfattning av de frågor ni skall svara på innan redovisningen. Observera: Det absolut viktigaste med labben är de slutsatser ni drar av att svara på frågorna, att enbart göra de praktiska momenten är inte tillräckligt. Laborationen kan göras två och två men redovisas individuellt. Tid för redovisning bokas i Daisy. 1.5 Litteratur till laborationen Kapitel 8.1-8.3 (s 278-306) i kursboken Om multitasking: pre-emption - http://en.wikipedia.org/wiki/preemption_(computing) Guide till SOsim - http://people.dsv.su.se/~ahn/da-vt12/guide_till_sosim.pdf
Datorsystem Laboration 3 3 1.6 Att genomföra labben Om du vill göra labben på din egen dator måste du installera programmet SOsim. Programmet finns tyvärr enbar till Microsoft Windows, om du har ett annat OS råder vi dig att göra labben i en datorsal. 1. Ladda hem programmet från http://www.training.com.br/sosim/sosim_v11_en.zip 2. Skapa en katalog någonstans på din dator (ex. C:\Program\sosim ) 3. Packa upp zip-filen ( sosim v11 en.zip ) till din nya katalog 4. Du kan starta programmet genom att köra filen sosim.exe 5. Om programmet är helt på portugisiska behöver du se till att samtliga filer från zip-filen finns i den mapp du lagt sosim.exe Om du istället gör laborationen i en av datorsalarna kan du hitta SOsim på C:\sosim\sosim.exe. Det finns ingen genväg till programmet i startmenyn, man får själv öppna mappen och starta programmet. 2 Förberedelseuppgifter Notera att samtliga uppgifter i denna laboration redovisas muntligt. Inga förberedelseuppgifter behöver göras på kurshemsidan. 2.1 Multiprogramming a) Vad är den grundläggande idén med multiprogramming/multistasking? b) Vad är en process i ett operativsystem? c) Vad innebär time-sharing när vi pratar om multitasking? d) Vad menar man med pre-emptive multitasking? e) Vad innebär begreppet context switch? f) Vad är en time slice?
Datorsystem Laboration 3 4 2.2 Minne a) Vad är skillnaden mellan en fysisk och en logisk adress? b) Vad är en page i minnes-sammanhang? c) Vad är en frame i minnes-sammanhang? d) Vad används en page table till? e) Vad innebär demand paging? f) Vad är ett page fault? g) Vad är en page file och vad används den till? h) Vad menar man med trashing när man pratar om paging? 2.2.1 Vid redovisningen Redovisa era svar på förberedelseuppgifterna för handledaren
Datorsystem Laboration 3 5 Figur 1: SOsim under körning 3 Labbuppgifter I labben kommer vi använda ett program som heter SOsim 1, se figur 1. SOsim simulerar hur ett operativsystem hanterar processer och virtuellt minne och programmet har ett enkelt grafiskt gränssnitt uppdelat i flera fönster. Det arbetar i huvudsak med processer som en användare kan starta och låta köra i ett simulerat operativsystem med en simulerad processor. Viktigt: kom ihåg att starta om SOsim i de steg där ni uppmanas till det. Programmet är tyvärr buggigt och kan inte starta mer än 20 processer under en körning. Ett felmeddelande ni kan få är en dialogruta som säger List index out of bounds, men det påverkar inte själva programkörningen. Ni kommer i instruktionerna till de olika experimenten få uppmaningen att upprepa simuleringarna. Anledningen är att programmet är buggigt och genom att upprepa experimenten försäkrar ni er om att programmet gör vad som förväntas. 3.1 Processorn och processer I den första delen tittar vi på hur olika sorters processer påverkar hur mycket processorn används (nyttjandegraden). Vi tittar på extremfall av processer; ett fall där vi har en mängd processor-intensiva processer och ett annat där vi har en majoritet I/O-intensiva. 3.1.1 Om värdet CPU time (%) Under labben kommer ni att observera förändringar i värdet CPU time (%) i SOsims statistik-fönster. Det ger ett mått på hur mycket simulatorns processorn använts under körningen. 1 http://www.training.com.br/sosim/indexen.htm
Datorsystem Laboration 3 6 Värdet är ett rörligt medelvärde, det beräknas alltså som ett genomsnitt av processoranvändningen under hela simulateringen. Det är därför inte det exakta värdet som är intressant när ni gör testerna, utan åt vilket håll det rör sig. Om värdet är ökande innebär det att vi använder processorn mer än det värde som för tillfället visas (det kan vara så att vi faktiskt använder processorn nästan 100%, även om CPU time (%) för tillfället bara visar 20%). Om värdet minskar innebär det att vi använder processorn mindre än det värde som för tillfället visas. Desto snabbare värdet förändras, desto längre är det genomsnitt som visas för tillfället från den faktiska processoranvändningen. Om värdet förändras väldigt långsamt innebär det att vi är nära det faktiska värdet. Om man pausar simuleringen med Stop-knappen i SOSim Console, stoppas tyvärr inte insamlingen av statistik. Statistics-fönstret kommer fortsätta uppdatera värdena trots att simuleringen inte kör, och därför kommer CPU time (%) felaktigt börja sjunka. 3.1.2 Processor-intensiva processer 1) Starta SOsim. På skolans datorer hittar ni det i C:\Sosim\sosim.exe 2) Öppna fönstret Statistics i SOsim Console. 3) Gå in i Options i fönstret Memory Manager. Ändra Min. free page list size till 40. Viktigt: sätt Fetch page policy till Pre-Paging manuellt, även om den redan är det. SOsim har en bugg om man inte uttryckligen sätter värdet efter att ändrat Min. free page list size. 4) Sätt kontrollerna i Processor Manager-fönstret till följande värden: IO Wait Time: minimum (längst till vänster) Time-slice: hälften (i mitten) Clock: maximum (längst till höger) 5) Starta 10 processer med profilen CPU. 6) Låt simulatorn köra i minst en minut och observera vilket tillstånd processerna befinner sig i, samt hur CPU time (%) förändras. 7) Låt simulatorn fortsätta köra till nästa experiment (3.1.3). 1) Vilket tillstånd befinner sig processerna i för det mesta? Vad innebär det? 2) Minskar eller ökar CPU time (%) i Statistics-fönstret? Ungefär hur högt är det efter en minut? 3) Vad innebär värdet på CPU time (%), nyttjar vi processorn väl?
Datorsystem Laboration 3 7 3.1.3 Blanda in en I/O-intensiv process 1) Lägg till en ny process, men med profilen IO 1. 2) Låt simulatorn köra minst 1 minuter med den nya processen. Se till att den hinner hamna i Waiting-läget några gånger. Observera hur CPU time (%) förändras. 3) Upprepa hela experimentet (från 3.1.2) minst två gånger för att kontrollera att SOSim ger liknande resultat. 1) Ser ni någon skillnad i hur CPU time (%) förändras av att vi lade till en process som använder mycket IO? 2) Vad drar ni för slutsats av det? 3.1.4 I/O-intensiva processer 1) starta om SOsim. En bugg gör att man inte kan starta mer än 20 processer under en körning. 2) Öppna fönstret Statistics i SOsim Console. 3) Gå in i Options i fönstret Memory Manager. Ändra Min. free page list size till 40. Viktigt: sätt Fetch page policy till Pre-Paging manuellt, även om den redan är det. SOsim har en bugg om man inte uttryckligen sätter värdet efter att ändrat Min. free page list size. 4) Sätt kontrollerna i Processor Manager-fönstret till följande värden: IO Wait Time: minimum (längst till vänster) Time-slice: hälften (i mitten) Clock: maximum (längst till höger) 5) Starta nu 10 processer med profilen IO 1. 6) Kör simulatorn i ungefär en minut och observera vilket tillstånd processerna befinner sig i (i Processor Manager). Notera också hur värdet på CPU time (%) förändras. 7) Låt simulatorn fortsätta köra till nästa experiment (3.1.5). 1) Vilket tillstånd befinner sig processerna i för det mesta? Vad betyder det?
Datorsystem Laboration 3 8 2) Ökar eller minskar CPU time (%) i Statistics-fönstret? Ungefär hur högt är det efter en minut? 3) Vad innebär värdet, nyttjar vi processorn bra? 4) Om ni jämför med när vi hade 10 processorintensiva processer (uppgift 3.1.2), vad kan ni dra för slutsats av skillnaderna mellan värdena på CPU time (%)? 3.1.5 Blanda in en CPU-intensiv process 1) Lägg till ytterligare en process, men med profilen CPU. 2) Låt simulatorn köra minst 1 minut samtidigt som ni observerar vad som händer med CPU time (%). 3) Upprepa hela experimentet (från 3.1.4) minst två gånger för att kontrollera att SOSim ger liknande resultat. 1) Hur förändras CPU time (%)? 2) Varför blir det så? Vad är skillnaden från uppgift 3.1.3? 3.1.6 Vid redovisningen Visa era svar på frågorna och förklara de olika värden ni sett på CPU time (%) när vi hade en majoritet CPU-intensiva jämfört med en majoritet IO-intensiva processer. Förklara vad som hände när vi lade till en process med annan profil.
Datorsystem Laboration 3 9 3.2 Context Switch och Time-Slice Vi skall nu titta på hur användandet av processorn ( CPU time (%) ) och antalet processer som körs per sekund ( Throughput (Proc/s) ) påverkas av hur länge vi låter varje process köra. 1) starta om SOsim. 2) Öppna fönstret Statistics i SOsim Console. 3) Gå in i Options i fönstret Memory Manager. Ändra Min. free page list size till 40. Viktigt: sätt Fetch page policy till Pre-Paging manuellt, även om den redan är det. SOsim har en bugg om man inte uttryckligen sätter värdet efter att ändrat Min. free page list size. 4) Sätt kontrollerna i Processor Manager-fönstret till följande värden: IO Wait Time: minimum (längst till vänster) Time-slice: minimum (längst till vänster) Clock: maximum (längst till höger) 5) Starta 10 processer med profilen CPU. 6) Låt simulatorn köra en minut och observera värdet av CPU time (%) och Throughput (Proc/s) i Statistics-fönstret. 7) Öka Time-slice i Processor Manager-fönstret till max (längst till höger). 8) Observera vad som nu händer med CPU time (%) och Throughput (Proc/s). 9) Prova sätta Time-slice till olika värden och observera hur fort CPU time (%) förändras och åt vilket håll det rör sig. 10) Upprepa experimentet minst två gånger för att kontrollera att SOSim ger liknande resultat. 1) Hur förändras värdena CPU time (%) och Throughput (Proc/s) när vi ändrar värdet på timeslice? 2) Varför blir det så? 3.2.1 Vid redovisningen Förklara för handledaren varför ni får de olika värdena på CPU time (%). Ledning: Vad måste operativsystemet göra vid en context switch?.
Datorsystem Laboration 3 10 3.3 Minne och Swap Vi skall nu titta närmare på hur operativsystemet använder virtuellt minne. SOsim utgår från en sidindelad minnesmodell med 100 ramar i primärminnet. Varje process kan som mest ha 5 sidor virtuellt minne tilldelat till sig. Genom att sätta Min. free page list size i inställnigarna för Memory Manager kan vi simulera olika mängd tillgängligt primärminne. Vi skall titta närmare på vad som händer om mängden primärminne är mindre än det minne våra körande processer kräver. Vi tittar också på skillnaden mellan virtuellt minne och fysiskt minne. 3.3.1 Om slidern clock Clock styr hur fort den simulerade processorn arbetar, och kan användas för att styra hur snabbt SOsim kör processer. ni kan öka eller minska värdet som ni vill, det påverkar inte de värden vi är intresserade av i simuleringen. I de fall ni tycker saker går för fort (text i Loggen, förändringar i PCB, etc.) kan ni ställa ned clock. Om ni istället vill se hur värden i statistics-fönstret ändras under tid kan det vara bra att dra upp clock till max så att ni inte behöver vänta lika länge. 3.3.2 Virtuellt minne och Page tables 1) Starta om SOsim. 2) Ändra i Memory Manager Options så att Fetch page policy är Demand Paging och Min. free page list size är 90. Vi kommer då att ha plats för 10 sidor i primärminnet. 3) Öppna fönstret Log och Statistics i SOsim Console. 4) Öppna fönstret Pagefile från Memory Manager. 5) Sätt kontrollerna i Processor Manager-fönstret till följande värden: IO Wait Time: minimum (längst till vänster) Time-slice: maximum (längst till höger) Clock: maximum (längst till höger), så att simuleringen kör så fort som möjligt 6) Starta två processer samtidigt med profilen CPU. 7) Låt simulatorn köra i en minut och observera vad som händer i Processor Manager- och Memory Manager-fönstren medan processerna kör. 8) Titta också på hur CPU time (%) förändras. 9) Upprepa experimentet minst två gånger för att kontrollera att SOSim ger liknande resultat. 10) Låt experimentet fortsätta köra, i nästa uppgift (3.3.3) använder vi samma simulering. 1) Vad händer i Memory Manager-fönstret under körningen?
Datorsystem Laboration 3 11 2) I loggen får vi meddelanden om Page Fault, varför? 3) Processerna börjar med att göra IO-operationer, trots att de startade med profilen CPU, vad beror det på? Ledning: vad betyder demand paging som vi ställde in i Memory Manager? 4) Fortsätter processerna göra IO-operationer under simuleringen? 5) Ökar eller minskar CPU time (%)? 3.3.3 Page tables 1) Titta nu på processernas PCB (process control block). Ni hittar det genom att börja med att klicka på Process->Select i SOsim Console. 2) I den nya dialogen som öppnas klickar ni på en process och sedan knappen PCB. Öppna fliken PPT (Process Page Table). Här kan ni se en tabell med 5 rader. Med de röda pilarna kan ni stega mellan de två processerna. 3) Titta på kolumnerna VPN (Virtual Page Number) och PFN (Physical Frame Number). Jämför värdena med vad ni ser i Memory Manager. 1) Vad använder operativsystemet siffrorna i kulumnen VPN och PFN till?
Datorsystem Laboration 3 12 3.3.4 Paging 1) Starta om SOsim. 2) Ändra i Memory Manager Options så att Fetch page policy är Demand Paging och Min. free page list size är 90. Vi kommer då att ha plats för 10 sidor i primärminnet. 3) Öppna fönstret Log och Statistics i SOsim Console. 4) Öppna fönstret Pagefile från Memory Manager. 5) Sätt kontrollerna i Processor Manager-fönstret till följande värden: IO Wait Time: minimum (längst till vänster) Time-slice: maximum (längst till höger) Clock: maximum (längst till höger), så att simuleringen kör så fort som möjligt 6) Starta tre processer samtidigt med profilen CPU. 7) Låt simulatorn köra i en minut och observera vad som händer i Processor Manager- och Memory Manager- fönstren medan processerna kör. Lägg även märke till vad som händer i Process Page Table (PPT) för den första processen. 8) Notera åt vilket håll CPU time (%) rör sig under körningen. 9) Upprepa experimentet minst två gånger för att kontrollera att SOSim ger liknande resultat. 1) Vad är det vi ser hända i Memory Manager och Pagefile? 2) Hur ändras CPU time (%) under körningen? 3) Vi har plats för 10 sidor i primärminnet men kör 3 processer som alla använder 5 sidor var. Var hamnar de som inte får plats i arbetsminnet och när hamnar de där?
Datorsystem Laboration 3 13 3.3.5 Thrashing 1) Starta om SOsim. 2) Ändra i Memory Manager Options så att Fetch page policy är Demand Paging och Min. free page list size är 95. Vi kommer då att ha plats för 5 sidor i primärminnet. 3) Öppna fönstret Log och Statistics i SOsim Console. 4) Öppna fönstret Pagefile från Memory Manager. 5) Sätt kontrollerna i Processor Manager-fönstret till följande värden: IO Wait Time: minimum (längst till vänster) Time-slice: maximum (längst till höger) Clock: maximum (längst till höger) 6) Starta tre processer samtidigt med profilen CPU. 7) Låt simulatorn köra i två minuter och observera vad som händer med värdet CPU time (%). Titta också på vad som händer i fönstret Processor Manager och i vilket tillstånd processerna befinner sig. 8) Upprepa experimentet minst två gånger för att kontrollera att ni får liknande resultat. 1) Hur ser det ut nu? Vad ser vi hända i Processor Manager? 2) Vad händer med värdet CPU time (%) i Statistics-fönstret? 3) Vad är det som pågår? Ledning: Vad innebär begreppet thrashing när det gälller paging? 3.3.6 Vid redovisningen Visa era svar för handledaren och förklara vad som skiljer de olika körningarna åt. Vad är problemet i den sista körningen (uppgift 3.3.5) jämfört med de andra?
Datorsystem Laboration 3 14 4 Redovisning Redovisningen bokas genom val av grupp i Daisy. Under redovisningen skall ni kunna svara på frågorna för de olika momenten samt motivera de svar ni fått. De slutsatser ni dragit av att svara på de olika frågorna är det viktiga. På redovisningen kan handledaren ställa följdfrågor för att kontrollera att ni förstått vad frågorna egentligen handlar om. Vid redovisningen skall ni visa svaren på frågorna för: Förberedelseuppgifter: 2 Processorn och processorer: 3.1 Context switching: 3.2 Minne och Swap: 3.3