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

Like dokumenter
Deadlocks og mer om concurrencymekanismer

Tråder og concurrency i Linux

Mer om C programmering og cuncurrency

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.

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

Eksempler på ikke-blokkerende systemkall:

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

Forelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy

Introduksjon til kurset og dets innhold

Oppgave 1 - Linux kommandolinje (%)

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Scheduling og prosesshåndtering

Repetisjon - Modul 1

Generelt om operativsystemer

INF2270. Input / Output (I/O)

- analyse og implementasjon

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

Tråder Repetisjon. 9. og 13. mai Tråder

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

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

Definisjon av prosess

Tråder Repetisjon. 9. og 13. mai Tråder

P1 P2 P3 P1 P2 P3 P1 P2. OS gjør Contex Switch fra P1 til P2

INF2270. Input / Output (I/O)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Læringsmål og pensum. v=nkiu9yen5nc

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

HØGSKOLEN I SØR-TRØNDELAG

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

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

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015

Operativsystemer og grensesnitt

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

1. Introduksjon til operativsystemer

Plan. Oppgaver og repetisjon Eksempler med fikspunkt og induksjon: 1. sortering 2. divisjon 3. Heis? IN 315: Foilsett 9: Unity: Arkitekturer

IN1010 våren Repetisjon av tråder. 15. mai 2018

Fakultet for informasjonsteknologi,

Kort notat om parallellstyring IN147

Grunnleggende Grafalgoritmer II

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

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

STE6221 Sanntidssystemer Løsningsforslag

MAT1030 Diskret Matematikk

TDT4258 Eksamen vår 2013

Kapittel 5: Relasjoner

Hvordan en prosessor arbeider, del 1

Forelesning ISA-nivået Kap 5.1

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

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

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

DAT kandidatnummer: 142

MAT1030 Plenumsregning 1

Tilkobling og Triggere

Seksjon 1. INF2270-V16 Forside. Eksamen INF2270. Dato 1. juni 2016 Tid Alle trykte og skrevne hjelpemidler, og en kalkulator, er tillatt.

Forelesning 5. Diverse komponenter/større system

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

Eksamen i TTK4145 Sanntidsprogrammering 12. august

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

Minnehåndtering i operativsystemer

INF3140 Modeller for parallellitet INF3140/4140: Låser og Barrierer

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

1b) RaceCondision: En bug som kommer til overflaten ved uheldig timing/scheduling. Det klassiske eksemplet er vel med suspend og resume:

Kapittel 5 - Advanced Hypertext Model Kapittel 6 - Overview of the WebML Development Process

Begrepet kritisk region er sentralt i forbindelse med datamaskinsystemer.

MAT1030 Diskret Matematikk

Kapittel 5: Relasjoner

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

En oppsummering (og litt som står igjen)

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

Debugging. Tore Berg Hansen, TISIP

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Dagens tema: 12 gode råd for en kompilatorskriver

UNIVERSITETET I OSLO

Oppgaver uke 1: Løsningsforslag

Operativsystemer og nettverk

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Eksamensoppgave i TDT4258 Energieffektive Datamaskinsystemer

MAT1030 Diskret matematikk

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

Fra sekvensielt til parallelt

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Prosessoren. Bakgrunnen Innhold LMC. Assemblerkode Oppsummering instruksjonene [Englander kap 6] Hva inneholder den? Hvordan utføres instruksjonene?

HØGSKOLEN I SØR-TRØNDELAG

Transkript:

Concurrency Lars Vidar Magnusson September 20, 2011 Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 1 / 17

Oversikt Concurrency 1 Concurrency Beskrivelse Prinsipper Vanskeligheter Operativsystemets rolle Enkelt eksempel Kjøring av eksempel 2 Samhandling mellom prosesser 3 Mutual exclusion Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 2 / 17

Concurrency Beskrivelse Beskrivelse Begrepet concurrency kan oversettes med samtidighet i.e. det dreier seg om å gjøre ting samtidig. Kjøre flere programmer (prosesser) samtidig på en prosessor (multiprogramming). Fordele en applikasjon utover flere prosesser/tråder for å utnytte seg av flere prosessorer (multiprocessing). Spre prosessering utover et nettverk av maskiner (distributed processing). Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 3 / 17

Concurrency Prinsipper Prinisipper Det er en rekke prinsipper og termer som går igjen når man snakker om concurrency. En critical section refererer en del av koden som krever tilgang til en delt resurs. En deadlock er en situasjon når to prosesser venter på hverandre, og ingen kommer videre uten den andre. En livelock oppstår når to prosesser kontinuerlig endrer status som en respons på en endring i den andre uten å få gjort noe annet. Begrepet mutual exclusion blir brukt om et krav om at når en prosess er i en critical section, så kan ikke en annen prosess også være i en critical section som krever tilgang til samme ressurs. Begrepet race conditions brukes om situasjoner der flere tråder/prosesser leser og skriver til et delt data, og hvor resultatet avhenger av relative forhold. Begrepet starvation blir brukt til å betegne prosesser som er klare til å kjøre, men av en eller annen årsak ikke blir valgt av scheduler. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 4 / 17

Concurrency Vanskeligheter Vanskeligheter Det er en rekke problemer som dukker opp i forbindelse concurrency. Deling av globale resurser e.g globale variable. At resursene må fordeles optimalt av operativsystemet e.g. en prosess kan bli fordelt en resurs for så å låse seg. Det blir mye vanskeligere å finne feil i programkode, siden feil ikke lenger trenger være hverken deterministiske eller repoduserbare. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 5 / 17

Concurrency Operativsystemets rolle Operativsystemets rolle Med concurrency får operativsystemet mere ansvar (repetisjon). Holde styr på alle prosessene. Allokasjon og deallokasjon av prosessor, minne, filer og I/O enheter Beskytte data og resurser Kjøretiden må være uavhengig av kjøretiden til andre concurrent prosesser. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 6 / 17

Enkelt eksempel Concurrency Enkelt eksempel Et enkelt eksempel for å illustrere concurrency. // Shared f u n c t i o n f o r c h a r a c t e r i n p u t and output void echo ( ) { // S t o r e a s i n g l e c h a r a c t e r i n g l o b a l v a r i a b l e c h i n = g e t c h a r ( ) ; // Set the next output c h a r a c t e r i n g l o b a l v a r i a b l e chout = c h i n ; // Output the c h a r a c t e r p u t c h a r ( chout ) ; } Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 7 / 17

Concurrency Kjøring av eksempel Kjøring av eksempel En simulering av to prosesser som kjører samtidig på en prosessor. 1 Prosess P1 kaller echo og blir avbrutt av operativsystemet etter å ha lagret input x i chin. 2 Prosess P2 blir aktivert og kaller echo som leser inn input y, lagrer det i de globale variabelene chin og chout, og skriver ut tegnet til skjermen. 3 P1 blir så aktivert på nytt på operativsystemet og fortsetter der den slapp, men problemet er nå at chin ikke lenger inneholder x, som medfører at y på nytt blir skrevet til skjermen. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 8 / 17

Oversikt Samhandling mellom prosesser 1 Concurrency 2 Samhandling mellom prosesser Oversikt Prosesser konkurrerer om resurser Samarbeid via deling Samarbeid via direkte kommunikasjon 3 Mutual exclusion Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 9 / 17

Samhandling mellom prosesser Oversikt Oversikt Boka klassifiserer måtene som prosesser samhandler basert på hvor bevist prosessene er på hverandre. Prosesser som ikke er bevist på andre prosesser. Dette er vanlig i operativsystem som støtter (samtidige) prosesser. Prosessene kan konkurrere om tilgjengelige resurser. Prosesser som er indirekte klar over andre prosesser på grunn av et delt objekt. Slike prosesser må samarbeide med hverandre. Prosesser som er direkte klar over andre prosesser. Disse er typisk designet for å kommunisere direkte med hverandre. I virkeligheten er ikke skillene like klare. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 10 / 17

Samhandling mellom prosesser Prosesser konkurrerer om resurser Prosesser konkurrerer om resurser Når prosesser ikke er klar over hverandre oppstår det konkurranse om resursene. Deadlock kan oppstå. Starvation kan oppstå. Mutual exclusion fra critical sections. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 11 / 17

Samhandling mellom prosesser Samarbeid via deling Samarbeid via deling Når prosesser samarbeider via en delt resurs endrer bildet seg litt. Det kan fortsatt oppstå både deadlocks og starvation, men man kan lettere skille mellom brukermønster e.g. lese og skrive, og bare operasjoner som endrer data bør være mutually exclusive. Det kan oppstå problemer med data coherency. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 12 / 17

Samhandling mellom prosesser Samarbeid via direkte kommunikasjon Samarbeid via direkte kommunikasjon Prosesser som samarbeider via direkte kommunikasjon er gjerne designet for å tilby en felles tjeneste. Resursene er ikke delte, så det er ingen behov for mutual exclustion Det kan fortsatt forekomme både deadlocks og starvation. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 13 / 17

Oversikt Mutual exclusion 1 Concurrency 2 Samhandling mellom prosesser 3 Mutual exclusion Krav til mutual exclusion Interrupt disabling Maskinkode instruksjon Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 14 / 17

Mutual exclusion Krav til mutual exclusion Krav til mutual exclusion En mekanisme for mutual exclution må oppfyll følgende krav. Må oppretteholde ekslusiviteten. Hvis en prosess stopper opp i en kritisk seksjon kan ikke andre prosesser bli påvirket. At en prosess er i en kritisk seksjon i endelig tid. At en prosess ikke skal kunne stå å vente på udefinert tid, enten via deadlock eller starvation. At en prosess som ønsker tilgang til en kritisk seksjon skal få det uten nevneverdig forsinkelser hvis seksjonen er ledig. At ingen antagelser blir gjort i forhold til antall prosessorer og ytelse. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 15 / 17

Mutual exclusion Interrupt disabling Interrupt disabling Interrupts kan i mange operativsystem disables. Garanterer mutual exclusion på maskiner med en prosessor. Hemmer operativsystemet fra å fordele prosessorkraften Garanterer ikke mutual exclusion på maskiner med flere prosessorer. while ( t r u e ) { // D i s a b l e i n t e r r u p t s // C r i t i c a l s e c t i o n // Enable i n t e r r u p t s // Other code } Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 16 / 17

Mutual exclusion Maskinkode instruksjon Maskinkode instruksjon Prosessorer kommer ofte med en instruksjon som kan benyttes til å sørge for mutual exclusion. Dette har en rekke fordeler. Fungerer på mange prosessorer uten tilpasning. Enkel mekanisme, enkel og verifisere. Kan støtte flere ulike critical sections. Men fremgangsmåten har også en rekke ulemper Benytter typisk busy waiting for ventende prosesser. Både starvation og deadlocks kan forekomme. Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 20, 2011 17 / 17