Operativsystem - Processer I Mats Björkman 2015-01-21
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
Lärandemål Program, process, tråd, task Programräknare, stackpekare, processorregister Kontextbyte Skedulerare Vad vet de om dessa nu?
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 Vad vet de om dessa nu?
Vad menas med “exekvering”? När processorn kör ett program, stegar den sig igenom objektkoden och utför en instruktion i taget Vad vet de om dessa nu?
Kraschkurs i assembler: 00008abe <_E>: 8abe: 79 00 00 05 79 00 00 05 mov.w #0x5 8ac2: 55 02 55 02 bsr .+2 (8ac6) 00008ac4 <.ef>: 8ac4: 54 70 54 70 rts 00008ac6 <_E_sub>: 8ac6: 19 11 19 11 sub.w r1,r1 8ac8: 1d 01 1d 01 cmp.w r0,r1 8aca: 4e 20 4e 20 bgt .+32 (8aec) 00008acc <.L6>: 8acc: 0d 13 0d 13 mov.w r1,r3 8ace: 09 33 09 33 add.w r3,r3 8ad0: 6b 02 a8 d4 6b 02 a8 d4 mov.w @0xa8d4:16,r2 8ad4: 09 32 09 32 add.w r3,r2 8ad6: 6b 82 a8 d4 6b 82 a8 d4 mov.w r2,@0xa8d4:16 8ada: 09 13 09 13 add.w r1,r3 8adc: 6b 02 a8 d6 6b 02 a8 d6 mov.w @0xa8d6:16,r2 8ae0: 09 32 09 32 add.w r3,r2 8ae2: 6b 82 a8 d6 6b 82 a8 d6 mov.w r2,@0xa8d6:16 8ae6: 0b 01 0b 01 adds #0x1,er1 8ae8: 1d 01 1d 01 cmp.w r0,r1 8aea: 4f e0 4f e0 ble .-32 (8acc) 00008aec <.L5>: 8aec: 54 70 54 70 rts PC Vad vet de om dessa nu?
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 TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
Subrutiner Vad vet de om dessa nu? 00008abe <_E>: 8abe: 79 00 00 05 79 00 00 05 mov.w #0x5 8ac2: 55 02 55 02 bsr .+2 (8ac6) 00008ac4 <.ef>: 8ac4: 54 70 54 70 rts 00008ac6 <_E_sub>: 8ac6: 19 11 19 11 sub.w r1,r1 8ac8: 1d 01 1d 01 cmp.w r0,r1 8aca: 4e 20 4e 20 bgt .+32 (8aec) 00008acc <.L6>: 8acc: 0d 13 0d 13 mov.w r1,r3 8ace: 09 33 09 33 add.w r3,r3 8ad0: 6b 02 a8 d4 6b 02 a8 d4 mov.w @0xa8d4:16,r2 8ad4: 09 32 09 32 add.w r3,r2 8ad6: 6b 82 a8 d4 6b 82 a8 d4 mov.w r2,@0xa8d4:16 8ada: 09 13 09 13 add.w r1,r3 8adc: 6b 02 a8 d6 6b 02 a8 d6 mov.w @0xa8d6:16,r2 8ae0: 09 32 09 32 add.w r3,r2 8ae2: 6b 82 a8 d6 6b 82 a8 d6 mov.w r2,@0xa8d6:16 8ae6: 0b 01 0b 01 adds #0x1,er1 8ae8: 1d 01 1d 01 cmp.w r0,r1 8aea: 4f e0 4f e0 ble .-32 (8acc) 00008aec <.L5>: 8aec: 54 70 54 70 rts Vad vet de om dessa nu?
Subrutinanrop Subrutinanrop stöds av processorn: Programräknaren sparas när man hoppar iväg (BSR – Branch to Subroutine) TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
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 TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
Subrutinanrop … … BSR RTS TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
Subrutinanrop … … BSR RTS PC sparas PC återhämtas TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time. PC återhämtas
Subrutiner på hög nivå I språk på högre nivåer motsvaras subrutinen av proceduranrop och funktionsanrop TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
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) TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
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 TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
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 TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
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) TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
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 TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time.
Varför: Multiprogrammering Fördelar: Flera aktiviteter samtidigt Förbättrar utnyttjandet av hårdvaran Möjliggör fleranvändarsystem Give an example with idle processes 90% idle…waiting for user interaction. Winamp example with read chunk, sending it to the soundcard, sleeping Idle process – process with low priority, typically 0 to 1 % utilization with normal work.
Varför: Multiprogrammering Nackdelar: Ökad overhead för kontextbyten mellan processer Konflikter (baklåsproblem m.m.) Komplexitet!! Give an example with idle processes 90% idle…waiting for user interaction. Winamp example with read chunk, sending it to the soundcard, sleeping Idle process – process with low priority, typically 0 to 1 % utilization with normal work.
Processmodell Definition: Concurrency (Pseudoparallellism) Program counter 4 Program Counters A A B C D Context Switch B TIMING IMPLICATIONS!!! TERMINOLOGY Process – en abstraktion av ett exekverande sekventiellt program Concurrency - samtidighet Preemption - avbrytbarhet Multiprogramming – pseudoparallelism (upplevd samtidighet genom snabba byten av processorn) What does this imply??!!?? Multiprogramming implies that no timing estimations can be done. Consider the following: A tape backup is initiated. It takes a predefined time to start up the reels and begin the recording. If a process would initiate the tape streamer, go into a loop for 10 000 times ( which exactly takes this time) and then start recording, it would work fine as long as the process was not preempted during this time. C D C B A D Time
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 Vad vet de om dessa nu?
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! Vad vet de om dessa nu?
Uniprogrammering Processorn måste vänta på att I/O-operationen blir klar innan exekveringen kan fortsätta In a single application system, uniprogramming, the processor spends a certain amount of time executing, until it reaches an I/O instruction. It must then wait until that I/O instruction concludes before proceeding. This inefficiency is not necessary.
Multiprogrammering När ett jobb (en process) måste vänta på I/O, kan processorn byta till ett annat jobb (process) We know that there must be enough memory to hold the OS (resident monitor) and one user program. Suppose that there is room for the OS and two user programs. When one job needs to wait for I/O, the processor can switch to the other job, which is likely not waiting for I/O (Figure 2.5b).
Multiprogrammering Further-more, we might expand memory to hold three, four, or more programs and switch among all of them (Figure 2.5c). The approach is known as multiprogramming, or multitasking. It is the central theme of modern operating systems.
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 Vad vet de om dessa nu?
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! Vad vet de om dessa nu?
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) Vad vet de om dessa nu?
Preemptive multitasking Om en process exekverar maxtiden i ett svep så genererar operativsystemet ett avbrott (interrupt) och byter process Vad vet de om dessa nu?
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 } Ur CPUns perspektiv är ju OS ett program som vilket annat, men som har som jobb att läsa in exekverbar kod och köra den (Processer)
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
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 Vad vet de om dessa nu?
Processtillstånd I ögonblickbilden (tillståndet) ingår bland annat ett antal hårdvaruregister som finns i processorn Vad vet de om dessa nu?
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) Vad vet de om dessa nu?
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) Vad vet de om dessa nu?
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 Vad har ett OS att göra med alla dessa proceser
Processmodell med 2 tillstånd Varje process befinner sig i endera av två tillstånd: Körande Icke körande Emphasize that you are introducing a Simple model and that this will be expanded. The operating system’s principal responsibility is controlling the execution of processes; this includes determining the interleaving pattern for execution and allocating resources to processes. The first step in designing an OS to control processes is to describe the behaviour that we would like the processes to exhibit. In the most simple model, a process is either running, or it is not.
Ködiagram – 2 tillstånd Animated slide The animation only shows one process moving. There needs to be some structure so that the OS can keep track of the processes. This could be a simple queue which is managed by the dispatcher routine of the OS. What is the problem with this model (given the characteristics of processes with 99% idle(Blocked) and 1% work)
Processmodell med 3 tillstånd Running Tillstånd Running Ready Waiting Tillståndsövergångar En ny process väljs att exekvera Processen avbryts för att en annan process skall exekvera Processen blockeras (exv. i väntan på I/O) Processen är inte längre blockerad 1 3 2 Ready Waiting 4 Running: Is currently executing Ready: All systems go, ready to execute Waiting: Process is blocked for some reason, waiting for input from user, put in sleep mode, waiting for some I/O to be ready or waiting for some shared resource (memory block) to be available, see process synchronization.
Ködiagram – tre tillstånd In the simplest solution, this model would require an additional queue for the blocked processes. But when an event occurs the dispatcher would have to cycle through the entire queue to see which process is waiting for the event. This can cause huge overhead when their may be 100’s or 1000’s of processes
Processmodell från UNIX Running: Is currently executing Ready: All systems go, ready to execute Waiting: Process is blocked for some reason, waiting for input from user, put in sleep mode, waiting for some I/O to be ready or waiting for some shared resource (memory block) to be available, see process synchronization.
Processmodell från Windows Running: Is currently executing Ready: All systems go, ready to execute Waiting: Process is blocked for some reason, waiting for input from user, put in sleep mode, waiting for some I/O to be ready or waiting for some shared resource (memory block) to be available, see process synchronization.
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.) Ritata på tavlan
Implementering forts. I OS-kärnan: Mekanism för processbyten (dispatcher) Skedulerare Semaforhanterare Kommunikationshanterare Minneshanterare RITA BILD!
Exempel på implementation OS Kernel PCB Code Data Stack R0 Rn PC SP … STATE PCB Code Data Stack R0 Rn PC SP … STATE PCB Code Data Stack R0 Rn PC SP … STATE Synchronization Manager … Inter Process Communication Manager Process Table Context Switch Scheduler Memory Manager File Manager CPU HD Memory
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))
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)
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
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
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?
· · · Skeduleraren Beslutar vilken process som skall exekvera Flyttar processerna mellan tillstånd Processes 1 · · · n-2 n-1 Scheduler
Kontextbyte IRQ Vector IRQ Vector Stack PCB1 PCB2 PCB3 Görs av hårdvaran Ett interrupt inträffar processormode sätts till kernel mode hårdvaran lägger PC+SP+REG på stacken Interruptrutinen lokaliseras IRQ Vector IRQ Vector Interrupt Service Procedure (ISP) Interruptrutinen sparar REG+PC+… i PCB:n + hanterar interruptet Skeduleraren väljer en process (PCB) att köra härnäst Scheduler We will discuss the scheduler in detail later. How does the timer work, periodic countdown until 0, which triggers an electrical signal to be sent to the CPU Knyter ihop alla delar och konkretiserar processbegreppet... PAUS. FÅ med alla på tåget. Alla ska greppa detta innan man går vidare. Sidan 79-80!! Informationen som finns i den nya PCB:n läggs in på sina rätta ställen Stack CPU Återgång till processen förbereds, processormode sätts till user mode, “återhopp” sker från interruptrutinen Timer
Skeduleringsexempel: Earliest deadline first Time Running Ready Waiting S 1 2 3 4 5 6 7 8 9 10 11 12 13 - P1(2), P3(5) P4[2], P5[6], P2[8] Hur ser exekveringen ut? Notation: Pn(m) = Process n har m enheter exekvering kvar Pn[m] = Process n har en starttid (release time) m. P1(2) P3(5) P1(1) P4(1) P3(5) P5[6], P2[8] P3(5) - P3(4) P3(3) Process Execution Time Release Dead- line P1 2 3 P2 8 16 P3 5 12 P4 1 P5 6 10 P5(3) P3(2) P2[8] P5(2) Explain how EDF works. It keeps the ready queue sorted according to deadline. Algorithm used in Real Time systems, and is optimal…interesting fact, even for real life experiences. P5(1) P3(2), P2(3) - P3(2) P2(3) P3(1) P2(3) - P2(2) P2(1)
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)
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)
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?)
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 Each system call has a procedure that the program uses Standard system call routine: The procedure puts data in a storage space that can be read by the OS (registers or the stack) and then invokes a TRAP instruction in order to hand over the control to the OS When the OS is ready, it places a status code in a readable location and invokes a RETURN FROM TRAP instruction Ge gärna lite exempel på systemanrop också, typ fopen, kill, ….
Systemanrop i UNIX och Win32 Några exempel på systemanrop
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
Flera exekveringsmoder Intels x86-processorer har (sedan 80286) en ringmodell med fyra nivåer I praktiken används dock bara två
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(!)
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!
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)
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
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
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…
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
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
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 Processes within a process Less security, since one thread can poke in another threads data
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 Processes within a process Less security, since one thread can poke in another threads data Thread Single threaded OS Multi threaded OS Process
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 Main thread, what function does that thread execute??? Quiz
Processer kontra trådar 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 I windows en tydlig skillnad: Process hänvisar till en EXE-fil Tråd hänvisar till en funktion. (Istället för att anropa en funktion så skapar man den som en tråd)
Processer kontra trådar Distinction between threads and processes from the point of view of process management. In a single-threaded process model, the representation of a process includes its process control block user address space, user and kernel stacks to manage the call/return behaviour of the execution of the process. While the process is running, it controls the processor registers. The contents of these registers are saved when the process is not running. In a multithreaded environment, there is still a single process control block and user address space associated with the process, but separate stacks for each thread, as well as a separate control block for each thread containing register values, priority, and other thread-related state information. Thus, all of the threads of a process share the state and resources of that process. They reside in the same address space and have access to the same data. When one thread alters an item of data in memory, other threads see the results if and when they access that item. If one thread opens a file with read privileges, other threads in the same process can also read from that file.
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 If there is an application or function that should be implemented as a set of related units of execution, it is far more efficient to do so as a collection of threads - rather than a collection of separate processes.
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 Spellcheck: While writing a document, suddenly red underlining appears on various words in the document. This is performed by a thread. Internet browser: A HTML page often consists of multiple images. Each image is downloaded using a separate thread. Each thread has the task to download the image and display it on its assigned position on the page. Furthermore while downloading a page, a flashy icon is revolving in the menu bar.
Windows - trådtillstånd Initialized A state that indicates the thread has been initialized, but has not yet started. Ready A state that indicates the thread is waiting to use a processor because no processor is free. The thread is prepared to run on the next available processor. Standby A state that indicates the thread is about to use a processor. Only one thread can be in this state at a time. Wait A state that indicates the thread is not ready to use the processor because it is waiting for a peripheral operation to complete or a resource to become free. When the thread is ready, it will be rescheduled. Transition A state that indicates the thread is waiting for a resource, other than the processor, before it can execute. For example, it might be waiting for its execution stack to be paged in from disk.
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
Lärandemålen igen Program, process, tråd, task Programräknare, stackpekare, processorregister Kontextbyte Skedulerare Vad vet de om dessa nu?