Scheduling og prosesshåndtering

Like dokumenter
CPU-Scheduling. Fag: Operativsystemer

Singletasking OS. Device minne Skjerm minne. Brukerprogram. Brukerdata/heap. Stack. Basis for flerprosess-systemer.

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser?

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Generelt om operativsystemer

Definisjon av prosess

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

Definisjon av prosess

INF2270. Input / Output (I/O)

INF2270. Input / Output (I/O)

Generelt om operativsystemer

TDT4258 Eksamen vår 2013

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

Operativsystemer og grensesnitt

Tildeling av minne til prosesser

Funksjonalitet og oppbygning av et OS (og litt mer om Linux)

Tildeling av minne til prosesser

1. Introduksjon til operativsystemer

Hvorfor lære om maskinvare*?

Minnehåndtering i operativsystemer

Eksamen DAT 103. Oppgave 2. Kandidatnr.: 145 1) B 2) B 3) A 4) A 5) D 6) C 7) B 8) A 9) A 10) D

Minnehåndtering i operativsystemer

! Ytelsen til I/O- systemer avhenger av flere faktorer: ! De to viktigste parametrene for ytelse til I/O er:

Concurrency. Lars Vidar Magnusson. September 20, Lars Vidar Magnusson () Forelesning i Operativsystemer September 20, / 17

Eksempler på ikke-blokkerende systemkall:

Oppgave 2: Gå til roten (/) av systemet. Finn minst tre forskjellige måter å gå tilbake til hjemmekatalogen din på.

Introduksjon til kurset og dets innhold

oppgavesett 4 INF1060 H16 Hans Petter Taugbøl Kragset Øystein Dale Christian Resell 27. september 2016 Institutt for informatikk, UiO

Det matematisk-naturvitenskapelige fakultet

Operativsystemer: Litt IT-historie

Læringsmål og pensum. Oversikt. Systemprogramvare Operativsystemer Drivere og hjelpeprogrammer. To hovedtyper programvare

Oppgave 1 - Linux kommandolinje (%)

IT1101 Informatikk basisfag, dobbeltime 18/9. Kommunikasjon med perifere enheter. Kontrollere. Kontrollere (2) I/O-instruksjoner

Kommersiell Unix Linux og frie Unix kloner

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

Læringsmål og pensum. v=nkiu9yen5nc

Oversikt. Historie Struktur Moderne UNIX systemer Moderne UNIX kernel struktur 1 UNIX. 2 Linux. 3 Process. 4 Process models

HØGSKOLEN I SØR-TRØNDELAG

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Dagens temaer. Dagens emner er hentet fra Englander kapittel 11 (side ) Repetisjon av viktige emner i CPU-design.

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

Tildeling av minne til prosesser

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

Fakultet for informasjonsteknologi,

Løsningsforslag for TDT4186 Operativsystemer

HØGSKOLEN I SØR-TRØNDELAG

Threads Threads (tråder) threads vs prosesser threads vs prosesser Definisjoner av

Fakultet for informasjonsteknologi, Kontinuasjonsløsning på TDT4155 Datamaskiner og operativsystemer

UNIVERSITETET I OSLO

Operativsystemer: Litt IT- og Linux-historie

Forelesning Instruksjonstyper Kap 5.5

Forelesning ISA-nivået Kap 5.1

Oppgave 8.1 fra COD2e

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

INF1400 Kap4rest Kombinatorisk Logikk

Håndtering av minne i et OS

Patrick Fallang (Dataingeniør) Lab Oppgave: Kjenn Din Egen PC (XP)

Løsningsforslag for TDT4186 Operativsystemer

EKSAMEN. Operativsystemer og nettverk

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Prøve- EKSAMEN. Operativsystemer med Linux

Operativsystemer og nettverk

DAT kandidatnummer: 142

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

Dagens program. Sanntidsprogrammering med Linux. Embedded Linux: Begrensninger. Hvorfor Linux?

HØGSKOLEN I SØR-TRØNDELAG

TDT4110 IT Grunnkurs Høst 2014

Real-time Operativsystem

Resymé: I denne leksjonen vil du få en oversikt over hva et operativsystem er for noe, hvordan det er bygget opp og hvordan det virker.

TOD063 Datastrukturer og algoritmer

Fakultet for informasjonsteknologi,

Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunnsprosesser Opprettelse av prosesser:

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

Forelesning 5. Diverse komponenter/større system

Løsningsforslag til kontinuasjonseksamen i TDT4105 Informasjonsteknologi, grunnkurs Mandag 13. august

STE6221 Sanntidssystemer Løsningsforslag

6105 Windows Server og datanett Jon Kvisli, HSN Skriveradministrasjon - 1. Utskrift i nettverk

Vi anbefaler at du setter deg litt inn i maskinen på forhånd. Det er en DELL Optiplex 620.

Dagens tema. Flere teknikker for å øke hastigheten

Operativsystemet Internt

Obligatorisk oppgave 6 i INF1010: Dekryptering

Programmeringsspråket C Del 3

6105 Windows Server og datanett

Fakultet for informasjonsteknologi,

HØGSKOLEN I SØR-TRØNDELAG

Into da BIOS<3. Bak Skallet

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Transkript:

Scheduling og prosesshåndtering

Håndtering av prosesser i et OS OS må kontrollere og holde oversikt over alle prosessene som kjører på systemet samtidig Prosesshåndteringen må være: Korrekt Robust Feiltolerant Rask og ressurseffektiv

Hovedoppgavene i prosesshåndtering Opprette, fjerne, starte, stoppe og styre prosesser Fordele tilgjengelig RAM og CPU'enes regnekraft mellom alle prosessene på systemet Dele I/O-enheter og annen ekstern maskinvare mellom prosessene Prioritere prosesser som brukere ønsker skal utføres raskere og mer effektivt enn andre prosesser

Prosesshåndtering på tidlige systemer De første maskinene på 1940- og 50-tallet: Hadde ikke OS Ble håndtert av operatører, Menneskelige OS Single tasking: Kun ett program kunne utføres om gangen Operatører setter opp den britiske kodeknekkermaskinen Colossus under andre verdenskrig

Batch-systemer på 1950- og 60-tallet Fortsatt single tasking, bare ett program om gangen Programmene som skal kjøre venter i en kø batch queue OS består av egen maskin- og programvare som håndterer jobbkøen Oftest med en dedikert front-end maskin som utførte overføringen av programkode og data, fra f.eks. hullkort eller papirbånd til selve datamaskinen og til disk/tape

Prosesshåndtering i batch-systemer OS tar ut neste program som skal kjøres, fra batch-køen OS laster programmet inn i RAM, og henter dataene som skal brukes Starter og kjører programmet til det er ferdig Tar deretter ut neste program fra kø og starter dette etc.

Batch-systemer og scheduling* Det første eksempelet på automatisert process scheduling i et operativsystem: Flere prosesser/programmer venter i en kø på å få kjøre i CPU Hvilken prosess er den neste som skal tas ut av køen og få kjøre på datamaskinen? Må bestemme et kriterium som OS kan bruke, for automatisk å kunne velge ut neste program som skal tas ut av prosesskøen en scheduling-algoritme *: Scheduling: Time-based planning of events

Kriterier for scheduling First-In-First-Out (FIFO) Prosesskøen er ordnet på rekkefølge Prosessen først i køen velges alltid ut for kjøring Nye prosesser settes bakerst i køen og må vente på kjøring til de har rykket frem til første plass Korteste (lengste) jobb først: Prosesskøen er ordnet på kjøretid (estimeres av OS) Prosessen med kortest (lengst) kjøretid velges Prioriterte prosesser: Hver prosess gis en prioritet (et tall) Velger alltid prosessen med høyest prioritet først

Multiprogramming OS Batch-systemer sløser med CPU-tid: Når prosessen trenger å gjøre I/O, må CPU bare vente til I/O er ferdig, uten å gjøre noe produktivt arbeid Multiprogramming OS på 60-tallet: Når den kjørende prosessen trenger å gjøre I/O, tar OS den ut av CPU og setter den i stedet inn i en I/O-kø Neste prosess i køen av prosesser som venter, flyttes til CPU og kjøres der mens første prosess gjør I/O Bytte av prosess i CPU en kalles en context switch

Context switch Operasjonen i OS som utfører byttet av kjørende prosess i CPU Må lagre unna alle data for nåværende prosess og deretter laste inn ny prosess som skal kjøre En context switch er uproduktiv overhead, og må være så rask som mulig for effektiv utnyttelse av maskinen

Hovedstegene i en context switch Prosessen som kjører stoppes, alle prosessdataene lagres i områder av RAM som er reservert for bruk av OS selv Scheduling-algoritmen velger neste prosess som skal få kjøre Alle prosessdata for neste prosess hentes fra RAM til CPU Context switch ferdig, valgt prosess kjøres i CPU frem til neste context switch

Context switch og tråder Context switch mellom hele prosesser er tidkrevende: All kode og data for kjørende prosess må lagres i RAM All kode og data for ny prosess må leses fra RAM Dette er tomgang for CPU Switch mellom tråder i samme prosess er mye raskere: Trådene deler alltid kode, må ikke lese på nytt fra RAM Trådene vil ofte også dele data

Multitasking og context switching Hvis datamaskinen klarer å utføre mange oppgaver (tasks) samtidig, har vi et multitasking system Men, for en maskin med bare én enkel CPU eller et lite antall CPU er, er dette egentlig umulig Bruker kan allikevel oppleve multitasking hvis context switching går raskt nok

To ulike strategier for multitasking Cooperative multitasking: Prosessene samarbeider, og bestemmer selv når context switch skal gjøres Preemptive multitasking: OS bestemmer når context switch skal gjøres

Cooperative multitasking Prosessene samarbeider selv om å dele CPU Kjørende prosess gir fra seg CPU frivillig Når en prosess må vente på f.eks. I/O, gjør OS en context switch og lar neste prosess få bruke CPU Nytt context switch tilbake til første prosess når den er ferdig med I/O OS har bare jobben med å utføre context switch hver gang en prosess går inn/ut av ventetilstand

Ulemper med cooperative multitasking* Arbeidskrevende grådige prosesser som gjør lite I/O vil blokkere CPU inntil de er ferdige Kan gi svært lange ventetider for andre prosesser som ønsker å kjøre opplever ikke multitasking Begrensede muligheter for interaktivitet med brukere Bedre alternativ preemptive multitasking * Cooperative multitasking brukes ikke lenger i vanlige OS, men finnes ofte i real-time systemer der presisjon er spesielt viktig (eks. styring av romfartøy)

Preemptive* multitasking Prosessene får ikke lov til å blokkere CPU OS bestemmer i stedet når context switch skal gjøres Gjøres ved å bruke en timer i datamaskinen: Sender et signal til CPU, f.eks. 100 ganger i sekundet CPU gjør et avbrudd (interrupt) hver gang signalet mottas Stopper kjørende prosess, og utfører i stedet programkoden i OS for å gjøre en context switch *: preempt : ordne på forhånd/reservere

Time sharing Preemptive multitasking med bruk av en timer kalles også for time sharing Prosessene må dele på kjøretiden i CPU Hver prosess får tildelt et tidsintervall (typisk 10-20 ms) med kjøretid, en time slice En scheduling-algoritme velger neste prosess som skal kjøres Ved utløp av hver time slice gjør OS en context switch

Ekte multitasking Bruker vil oppleve multitasking hvis: Time slice er kort nok CPU er rask nok OS gjør effektive context switch Det oppleves da i praksis som om maskinen utfører mange oppgaver effektivt samtidig Vi får også umiddelbar respons ved interaktiv bruk

Time sharing og scheduling Anta at vi bare har én prosessor tilgjengelig: Alle prosesser som ønsker å bruke CPU ligger lagret i en kø Scheduling-algoritmen i OS velger en prosess fra køen, i henhold til gitte kriterier Valgt prosess får kjøre i CPU i en time-slice Kjørende prosess tar deretter ut og må igjen vente i kø på å få kjøre Scheduling-algoritmen må være svært effektivt implementert for å unngå tregt system

En scheduling-algoritme: Round Robin Bruker en sirkulær FIFO-kø Første prosess i køen velges alltid som neste som skal kjøre Valgt prosess kjøres i én time-slice, legges deretter bakerst i kø Alle behandles likt Lett å modifisere til å håndtere prioriteter og flere CPU'er De aller fleste OS bruker en eller annen variant av Round Robin scheduling

Scheduling i Linux Bruker algoritmen Completely Fair Scheduler Prøver å utnytte en eller flere CPU'er så effektivt som mulig og samtidig prioritere interaktivitet Hovedregel: Velg prosessen som har brukt minst CPU-tid til nå Interaktive prosesser prioriteres med sleeper fairness": Prosesser i vente-modus er ofte interaktive programmer som sover fordi de venter på input fra bruker Sleepers behandles på samme måte som de vanlige prosessene i CPU-kø som er klare for eksekvering

Interrupts / avbrudd Ved f.eks. context switch, utføres et avbrudd eller interrupt : CPU avbryter nåværende prosess og begynner en ny i stedet Hvem kan avbryte CPU'en? Alle device: Timer, mus, keyboard, printer, nettverksport... Kjørende programmer, inkludert det interaktive shellet Hvordan avbrytes CPU? Devicet eller programmet sender ett av flere ulike avbrudddsignal, Interrupt Request (IRQ), som får CPU til å avbryte IRQ svarer til et tall (avbruddsnummer) som angir hvordan avbruddet skal håndteres

Hva skjer ved avbrudd? CPU fullfører nåværende instruksjon CPU gjør deretter en context switch til en prosess som starter avbruddshåndtering i OS OS bruker avbruddsnummeret angitt i IRQ til å slå opp i en tabell, der det ligger adresser til programkode som håndterer ulike typer avbrudd Deretter startes riktig avbruddsrutine (interrupt handler) Avbruddsrutiner er kritiske elementer i et OS: Må være fullstendig korrekte og svært raske Er ofte hardkodet i assemblerspråk

Avbruddshåndtering Eksempel: CPU mottar IRQ med avbruddsnummer 2. OS finner adressen til avbruddsrutinen i en avbruddstabell/-vektor, og starter deretter riktig maskinkode for å håndtere avbruddet.

Avbruddshåndtering i Linux Avbruddsrutiner en en del av kjernen (kernel) i Linux Alle avbrudd som gjøres for ulike device lagres/logges i systemfilen /proc/interrupts : IRQ forbundet med device Antall interrupts fra devicet av hver CPU på maskinen Device driver Device navn CPU0 CPU1 0: 20342577 20342119 IO APIC edge timer 12: 3139 381 IO APIC edge i8042 59: 22159 6873 IO APIC edge eth0 64: 3 0 IO SAPIC EDGE ide0 80: 4 12 IO SAPIC edge keyboard