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