Presentation laddar. Vänta.

Presentation laddar. Vänta.

Operativsystem - Processer I Mats Björkman 2015-01-21.

Liknande presentationer


En presentation över ämnet: "Operativsystem - Processer I Mats Björkman 2015-01-21."— Presentationens avskrift:

1 Operativsystem - Processer I Mats Björkman

2 Operativsystem, © Mats Björkman, MDH 2 Innehåll Processer (föreläsning 2, den här) Processmodell Processtillstånd Trådar Processkommunikation (föreläsning 3) Semaforer Monitorer Meddelandesystem Skedulering/schemaläggning (föreläsning 4) Kriterier för en skedulerare Skeduleringsalgoritmer

3 Operativsystem, © Mats Björkman, MDH 3 Lärandemål Program, process, tråd, task Programräknare, stackpekare, processorregister Kontextbyte Skedulerare

4 Operativsystem, © Mats Björkman, MDH 4 Förenklingar för stunden Vi antar ett enprocessorsystem med en processorkärna i processorn Vi antar att processorn är sekventiell och utför en instruktion i taget Vi antar att kompilatorer skapar objektkod där saker händer i samma ordning som i källkoden

5 Operativsystem, © Mats Björkman, MDH 5 Vad menas med “exekvering”? När processorn kör ett program, stegar den sig igenom objektkoden och utför en instruktion i taget

6 Operativsystem, © Mats Björkman, MDH 6 Kraschkurs i assembler: 00008abe : 8abe: mov.w#0x5 8ac2: bsr.+2 (8ac6) 00008ac4 : 8ac4: rts 00008ac6 : 8ac6: sub.wr1,r1 8ac8:1d 01 1d 01 cmp.wr0,r1 8aca:4e 20 4e 20 bgt.+32 (8aec) 00008acc : 8acc:0d 13 0d 13 mov.wr1,r3 8ace: add.wr3,r3 8ad0:6b 02 a8 d4 6b 02 a8 d4 8ad4: add.wr3,r2 8ad6:6b 82 a8 d4 6b 82 a8 d4 8ada: add.wr1,r3 8adc:6b 02 a8 d6 6b 02 a8 d6 8ae0: add.wr3,r2 8ae2:6b 82 a8 d6 6b 82 a8 d6 8ae6:0b 01 0b 01 adds#0x1,er1 8ae8:1d 01 1d 01 cmp.wr0,r1 8aea:4f e0 4f e0 ble.-32 (8acc) 00008aec : 8aec: rts PC

7 Operativsystem, © Mats Björkman, MDH 7 Programräknare Programräknaren (PC) pekar ut den aktuella instruktionen som skall utföras Programräknaren sparas ibland för att man skall kunna hitta tillbaka om man ger sig ut på tillfälligt besök i en annan del av koden

8 Operativsystem, © Mats Björkman, MDH 8 Subrutiner 00008abe : 8abe: mov.w#0x5 8ac2: bsr.+2 (8ac6) 00008ac4 : 8ac4: rts 00008ac6 : 8ac6: sub.wr1,r1 8ac8:1d 01 1d 01 cmp.wr0,r1 8aca:4e 20 4e 20 bgt.+32 (8aec) 00008acc : 8acc:0d 13 0d 13 mov.wr1,r3 8ace: add.wr3,r3 8ad0:6b 02 a8 d4 6b 02 a8 d4 8ad4: add.wr3,r2 8ad6:6b 82 a8 d4 6b 82 a8 d4 8ada: add.wr1,r3 8adc:6b 02 a8 d6 6b 02 a8 d6 8ae0: add.wr3,r2 8ae2:6b 82 a8 d6 6b 82 a8 d6 8ae6:0b 01 0b 01 adds#0x1,er1 8ae8:1d 01 1d 01 cmp.wr0,r1 8aea:4f e0 4f e0 ble.-32 (8acc) 00008aec : 8aec: rts

9 Operativsystem, © Mats Björkman, MDH 9 Subrutinanrop Subrutinanrop stöds av processorn: Programräknaren sparas när man hoppar iväg (BSR – Branch to Subroutine)

10 Operativsystem, © Mats Björkman, MDH 10 Subrutinanrop När man vill hoppa tillbaka (RTS – Return from Subroutine) plockas den sparade programräknaren (kallas då ofta återhoppsadressen) fram och man hoppar tillbaka till där man var Exekveringen fortsätter med instruktionen efter BSR

11 Operativsystem, © Mats Björkman, MDH 11 Subrutinanrop … BSR … RTS

12 Operativsystem, © Mats Björkman, MDH 12 Subrutinanrop … BSR … RTS PC sparas PC återhämtas

13 Operativsystem, © Mats Björkman, MDH 13 Subrutiner på hög nivå I språk på högre nivåer motsvaras subrutinen av proceduranrop och funktionsanrop

14 Operativsystem, © Mats Björkman, MDH 14 Var sparas programräknaren? För att möjliggöra nästade subrutiner, d.v.s. ett subrutinanrop inuti en subrutin, behöver vi mer än en fix plats att lagra programräknaren I tidiga arkitekturer fanns fasta register som användes, vilket begränsade möjligheten till nästade anrop till ett fix antal (exv. 7 i 8008)

15 Operativsystem, © Mats Björkman, MDH 15 Var sparas programräknaren? Reentrant kod (att kunna anropa en procedur medan proceduren själv redan exekveras) är ett måste i de flesta moderna programspråk, exv. för att möjliggöra rekursion. Då måste vi potentiellt kunna spara ett stort antal återhoppsadresser

16 Operativsystem, © Mats Björkman, MDH 16 Stacken För att kunna spara undan programräknare och även andra data som kan behöva sparas vid reentranta proceduranrop, har moderna processorer en eller flera stackar Stacken är ett minnesutrymme där man lagrar dessa data

17 Operativsystem, © Mats Björkman, MDH 17 Stackpekaren Processorn har en stackpekare (SP), ett register som pekar ut aktuell position i stackminnet Vid subrutinanrop läggs återhoppsadressen överst på stacken (push) Vid återhopp plockas återhoppsadressen av från stacken (pop)

18 Operativsystem, © Mats Björkman, MDH 18 Stackpekaren Stackminnet (och stackpekaren) är unikt för den pågående exekveringen, varje process behöver sitt eget stackminne, och har man flera trådar i en process (mer om detta strax), så behöver man en egen stack för varje tråd

19 Operativsystem, © Mats Björkman, MDH 19 Varför: Multiprogrammering Fördelar: Flera aktiviteter samtidigt Förbättrar utnyttjandet av hårdvaran Möjliggör fleranvändarsystem

20 Operativsystem, © Mats Björkman, MDH 20 Varför: Multiprogrammering Nackdelar: Ökad overhead för kontextbyten mellan processer Konflikter (baklåsproblem m.m.) Komplexitet!!

21 Operativsystem, © Mats Björkman, MDH 21 Processmodell Definition: Concurrency (Pseudoparallellism) A B C D Context Switch Program counter ABCD 4 Program Counters Time DCBADCBA

22 Operativsystem, © Mats Björkman, MDH 22 Lite terminologi En process kallas även: Jobb – från batchtiden Task – från realtidsvärlden Inuti en process kan det finnas flera trådar (threads) som exekverar (mer om detta senare) Lite förvirrande kallas även trådar ibland för tasks

23 Operativsystem, © Mats Björkman, MDH 23 Lite terminologi Multiprogrammering och multitasking är samma sak Timesharing är multitasking++ ! …och: “multi” i multiprogrammering och multitasking har inget att göra med hur mycket hårdvara man har!

24 Operativsystem, © Mats Björkman, MDH Uniprogrammering Processorn måste vänta på att I/O- operationen blir klar innan exekveringen kan fortsätta 24

25 Operativsystem, © Mats Björkman, MDH Multiprogrammering När ett jobb (en process) måste vänta på I/O, kan processorn byta till ett annat jobb (process) 25

26 Operativsystem, © Mats Björkman, MDH Multiprogrammering 26

27 Operativsystem, © Mats Björkman, MDH 27 Olika modeller för multitasking Cooperative multitasking – processerna talar själva om när de vill att någon annan skall få exekvera Preemptive multitasking – OS:et avbryter processen när det är dags för en annan process att få exekvera

28 Operativsystem, © Mats Björkman, MDH 28 Cooperative multitasking Vanligast i små system (typ inbyggda system) när man har full koll på vilka processer som exekverar Enkelt, processen säger själv till när den vill lämna ifrån sig processorn Mycket felkänsligt och säkerhetskänsligt!

29 Operativsystem, © Mats Björkman, MDH 29 Preemptive multitasking Det allra vanligaste i större system och i system där man inte kan lita på alla processer Operativsystemet sätter upp en maximal tid som en process får exekvera i ett svep (tidskvanta eller timeslice)

30 Operativsystem, © Mats Björkman, MDH 30 Preemptive multitasking Om en process exekverar maxtiden i ett svep så genererar operativsystemet ett avbrott (interrupt) och byter process

31 Operativsystem, © Mats Björkman, MDH Vad gör egentligen ett OS? Loop forever { Run the process for a while Stop the process and save its state Load state of another process } 31

32 Operativsystem, © Mats Björkman, MDH Vad är en process? Wikipedia: En process är en instans av ett program som exekveras sekventiellt av en processor Resurshanterare: Håller reda på alla resurser ett program behöver Minne för programkod och data Processtillstånd Öppna filer … Håller också reda på tillståndet för varje resurs 32

33 Operativsystem, © Mats Björkman, MDH 33 Processtillstånd vs processtillstånd En process har ett tillstånd, det är en ögonblicksbild med all den specifika information som behövs om vi vill återskapa processen precis som den är just nu I ett OS befinner sig också processen i ett tillstånd, exempelvis körklar, väntande, exekverande, suspenderad

34 Operativsystem, © Mats Björkman, MDH 34 Processtillstånd I ögonblickbilden (tillståndet) ingår bland annat ett antal hårdvaruregister som finns i processorn

35 Operativsystem, © Mats Björkman, MDH 35 Hårdvarutillstånd, exempel PC (programräknare), som pekar ut var i programkoden processen befinner sig Register, som håller variabler som processen just arbetar med Stackpekare (SP), arbetsstacken är ett måste för en process (proceduranrop, interrupts)

36 Operativsystem, © Mats Björkman, MDH 36 Hårdvarutillstånd, exempel forts. Statusregister för processen (privilegienivå exv.) Minnespekare, processens minnesareor måste pekas ut (mer om detta i avsnittet om virtuellt minne)

37 Operativsystem, © Mats Björkman, MDH 37 Processer i OS Operativsystemet hanterar processer genom att: Skapa processer Kontrollera processer Byta mellan processer Avbryta processer Avsluta processer Kommunicera med processer och mellan processer Hålla rätt på processtillstånd

38 Operativsystem, © Mats Björkman, MDH Processmodell med 2 tillstånd Varje process befinner sig i endera av två tillstånd: Körande Icke körande 38

39 Operativsystem, © Mats Björkman, MDH Ködiagram – 2 tillstånd 39

40 Operativsystem, © Mats Björkman, MDH 40 Processmodell med 3 tillstånd Tillstånd Running Ready Waiting Tillståndsövergångar 1. En ny process väljs att exekvera 2. Processen avbryts för att en annan process skall exekvera 3. Processen blockeras (exv. i väntan på I/O) 4. Processen är inte längre blockerad Running WaitingReady

41 Operativsystem, © Mats Björkman, MDH Ködiagram – tre tillstånd 41

42 Operativsystem, © Mats Björkman, MDH 42 Processmodell från UNIX

43 Operativsystem, © Mats Björkman, MDH 43 Processmodell från Windows

44 Operativsystem, © Mats Björkman, MDH 44 Implementering av processmodellerna OS:et behöver en processtabell, varje process behöver ett: Process Control Block (PCB) Processtillstånd PC, SP, registerinnehåll, … Pekare till dataarea Pekare till kod Fildeskriptorer med filtillstånd Skeduleringsinformation (ägare, prio etc.)

45 Operativsystem, © Mats Björkman, MDH 45 Implementering forts. I OS-kärnan: Mekanism för processbyten (dispatcher) Skedulerare Semaforhanterare Kommunikationshanterare Minneshanterare

46 Operativsystem, © Mats Björkman, MDH OS Kernel Exempel på implementation 46 CPU PCB Code Data Stack R0Rn PC SP … STATE PCB Code Data Stack R0Rn PC SP … STATE PCB Code Data Stack R0Rn PC SP … STATE … Context Switch Scheduler Memory Manager Memory HD File Manager Synchronization Manager Inter Process Communication Manager Process Table

47 Operativsystem, © Mats Björkman, MDH När skall OS:et byta process? Klockavbrott Processen har exekverat sitt tillåtna tidskvanta (quantum, time slice) I/O-interrupt Sidfel (sidan fanns inte i primärminnet) Trap (något slags fel har uppstått, eller…) Systemanrop (exv. open file, wait for user input)) 47

48 Operativsystem, © Mats Björkman, MDH Skedulering och kontextbyte En process kan frivilligt ge upp CPU:n genom: att utföra I/O (exv. getchar()) att gå till ett väntetillstånd (exv. sleep) Alternativt kan OS:et välja att byta process på grund av: Processen har exekverat ”tillräckligt” länge Processen råkar ut för något som tar tid (exv. sidfel, en minnessida måste hämtas från disk) 48

49 Operativsystem, © Mats Björkman, MDH Skedulering och kontextbyte När en process skall bytas ut, gör OS:et: ”Växla ut” den gamla processen Välj en annan process att köra ”Växla in” den nya processen 49

50 Operativsystem, © Mats Björkman, MDH Policies och mekanismer Skedulering och kontextbyte är bra exempel på hur OS:ets arbete kan separeras i policies och mekanismer (boken 2.4.5) Policies är vad som skall göras och varför Mekanismer är hur något skall göras Mekanismerna kan och bör implementeras fristående från policies 50

51 Operativsystem, © Mats Björkman, MDH Skedulering och kontextbyte I exemplet skedulering och kontextbyte: Policies är till exempel: Hur länge skall en process få exekvera innan den blir avbruten? Vilken ny process skall väljas av flera möjliga? Mekanismer är till exempel: Hur avbryts en pågående process? Hur sparas processtillståndet? 51

52 Operativsystem, © Mats Björkman, MDH 52 Skeduleraren Beslutar vilken process som skall exekvera Flyttar processerna mellan tillstånd Scheduler Processes 01n-1n-2 · · ·

53 53 Kontextbyte Ett interrupt inträffar processormode sätts till kernel mode Interruptrutinen lokaliseras Interruptrutinen sparar REG+PC+… i PCB:n + hanterar interruptet Skeduleraren väljer en process (PCB) att köra härnäst Informationen som finns i den nya PCB:n läggs in på sina rätta ställen PCB1PCB2PCB3 Interrupt Service Procedure (ISP) Scheduler CPU Timer IRQ Vector Stack IRQ Vector Görs av hårdvaran Återgång till processen förbereds, processormode sätts till user mode, “återhopp” sker från interruptrutinen hårdvaran lägger PC+SP+REG på stacken

54 54 Skeduleringsexempel: Earliest deadline first ProcessExecution Time Release Time Dead- line P1203 P23816 P35012 P4125 P53610 Hur ser exekveringen ut? Notation: Pn(m) = Process n har m enheter exekvering kvar Pn[m] = Process n har en starttid (release time) m. TimeRunningReadyWaiting S P1(2), P3(5)P4[2], P5[6], P2[8] P1(2)P3(5) P1(1) P4(1)P3(5)P5[6], P2[8] P3(5)- P3(4) P3(3) P5(3)P3(2)P2[8] P5(2) P5(1)P3(2), P2(3)- P3(2)P2(3) P3(1) P2(3)- P2(2) P2(1)

55 Operativsystem, © Mats Björkman, MDH Flera nivåer av skedulerare Skeduleraren vi har talat om hittills kallas ibland korttidsskedulerare Om man har väldigt många processer som vill köra kommer resurserna att bli för snuttifierade (facktermen är för hög grad av multiprogrammering, d.v.s. för många processer igång samtidigt) 55

56 Operativsystem, © Mats Björkman, MDH Flera nivåer av skedulerare För att begränsa antalet körande processer kan OS:et välja att låta vissa processer (typiskt sådana med låg prioritet) vänta helt och hållet Dessa processer läggs ut på disk (swapping, processerna swappas ut), och plockas vid ett senare tillfälle in i gen (swappas in) 56

57 Operativsystem, © Mats Björkman, MDH Flera nivåer av skedulerare Skeduleraren som avgör vad som swappas ut och in jobbar över större tidsrymder än korttidsskeduleraren Kallas ibland medium-time scheduler (medeltidsskedulerare?) 57

58 Operativsystem, © Mats Björkman, MDH 58 Systemanrop Systemanropet är processernas sätt att be OS:et om att få något utfört Anropet är omgivet av begränsningar och skydd eftersom: OS:et är priviligierat (kör i kernel mode) och kan göra vad som helst Användarprogram kan vara illasinnade

59 Operativsystem, © Mats Björkman, MDH 59 Systemanrop i UNIX och Win32 Några exempel på systemanrop

60 Operativsystem, © Mats Björkman, MDH Flera exekveringsmoder Många OS har någon variant på ringar för skydd Ringkonceptet kommer från MULTICS En process som exekverar i en inre ring har alla privilegier från alla yttre ringar + några till MULTICS hade 8 nivåer 60

61 Operativsystem, © Mats Björkman, MDH Flera exekveringsmoder Intels x86-processorer har (sedan 80286) en ringmodell med fyra nivåer I praktiken används dock bara två 61

62 Operativsystem, © Mats Björkman, MDH Olika exekveringsmoder User Mode Mode med få/inga/låga privilegier De flesta användarprocesser exekverar i user mode Supervisory Mode/Kernel Mode Höga (alla) privilegier; kan exekvera alla instruktioner OS-kärnan exekverar i kernel mode(!) 62

63 Operativsystem, © Mats Björkman, MDH Olika exekveringsmoder Byte från user mode till kernel mode: Exekvera TRAP-instruktionen (systemanropsexemplet) För att komma tillbaka till user mode? Sätt om moden (peta i processorns statusregister), i kernel mode kan man göra det! 63

64 Operativsystem, © Mats Björkman, MDH Flera stackar Det är vanligt att en process har flera stackar En stack för vanlig exekvering i User mode En stack för exekvering i Kernel mode … (eventuellt flera) 64

65 Operativsystem, © Mats Björkman, MDH Varför flera stackar? OS:et kan använda processens stack från User mode, men… …eftersom användarprocessen kan hantera den stacken, så kan den också missbruka den, och då ställa till problem för OS:et 65

66 Operativsystem, © Mats Björkman, MDH Varför flera stackar? Exempel: Antag att användarstacken har precis nått upp till toppen på en minnessida Om man försöker lägga något på stacken så utlöses ett sidfel för att en ny minnessida behöver allokeras 66

67 Operativsystem, © Mats Björkman, MDH Varför flera stackar? Nu gör användaren ett systemanrop med sin stack fylld till toppen på sidan TRAP-rutinen försöker pusha PC m.m. på stacken, men utlöser då ett sidfels- interrupt Interruptrutinen försöker pusha PC m.m. på stacken, men utlöser då ett sidfels- interrupt… 67

68 Operativsystem, © Mats Björkman, MDH Varför flera stackar? För att undvika dessa saker har man oftast en separat kernel stack för varje process Denna stack är oåtkomlig från User mode och användarprocessen kan därför inte göra något dumt med den 68

69 Operativsystem, © Mats Björkman, MDH Varför flera stackar? Så fort man kommit in i kernel mode (via TRAP, interrupt etc.) byts stackpekaren från användarstacken till kernel stack Vid återgång från kernel mode sker byte till användarstacken innan återhopp sker 69

70 Operativsystem, © Mats Björkman, MDH 70 Trådar (threads) Traditionella processer har bara en exekveringstråd Ett sätt att åstadkomma mer lättviktiga alternativ till processer är att tillåta mer än en pågående exekvering i samma process Tänk det som att vi låter flera “processer” dela minne

71 Operativsystem, © Mats Björkman, MDH 71 Trådar (threads) Trådtabell PC, Register, …- Unikt för tråden Tillstånd- Unikt för tråden Adressrymd- Delas inom hela processen Stackpekare- Unikt för tråden Stackminne- Delas oftast inom processen Single threaded OS Process Thread Multi threaded OS

72 Operativsystem, © Mats Björkman, MDH Processer och trådar Resursägande (process) Öppnade filer, minnessidor, etc. Skedulering/exekvering (tråd) Programräknare, stackpekare(!!!), register etc. Varje process har minst en exekveringstråd Multitrådning OS:et stöder flera samtidiga exekveringstrådar inom en och samma process 72

73 Operativsystem, © Mats Björkman, MDH Processer kontra trådar Process En adressrymd där processen exekverar Skyddas av OS:et mot andra processer vad gäller minne, filer, I/O etc. Tråd Ett exekveringstillstånd (running, ready, waiting,...) En exekveringsstack (parametrar, lokala variabler) Kommer åt processens minne och övriga resurser 73

74 Operativsystem, © Mats Björkman, MDH Processer kontra trådar 74

75 Operativsystem, © Mats Björkman, MDH Varför trådar? Tar mindre tid att skapa och terminera än en process (slipper allokera/lämna tillbaka minne) Går snabbare med kontextbyte, minneskontexten är densamma Trådar kan kommunicera med varandra utan att behöva gå via OS:et 75

76 Operativsystem, © Mats Björkman, MDH 76 Varför trådar? Trådar används ofta när ett program har flera saker den vill göra samtidigt Exempel: Rättstavning i Word Exempel: Webläsare laddar bilder parallellt Varför inte egna processer? De jobbar på delat data (Wordfil respektive websida) Mindre kostsamt än att ha flera processer

77 Operativsystem, © Mats Björkman, MDH Windows - trådtillstånd 77

78 Operativsystem, © Mats Björkman, MDH 78 Tasks Används ibland i realtidssystem som ett alternativt namn på processer I vissa språk (Ada exv.) är tasks benämningen på trådar I Linux är tasks enheten som OS:et skedulerar

79 Operativsystem, © Mats Björkman, MDH 79 Lärandemålen igen Program, process, tråd, task Programräknare, stackpekare, processorregister Kontextbyte Skedulerare


Ladda ner ppt "Operativsystem - Processer I Mats Björkman 2015-01-21."

Liknande presentationer


Google-annonser