Operativsystem - Processkommunikation

Relevanta dokument
Operativsystem - Processkommunikation

Operativsystem - Baklås

Design mönster. n n n n n n. Command Active object Template method Strategy Facade Mediator

Genomsnittligt sökdjup i binära sökträd

Webprogrammering och databaser. Begrepps-modellering. Exempel: universitetsstudier Kravspec. ER-modellen. Exempel: kravspec forts:

Tommy Färnqvist, IDA, Linköpings universitet

Databaser - Design och programmering. Databasdesign. Kravspecifikation. Begrepps-modellering. Design processen. ER-modellering

Mekanismer. (implementation)

Databaser - Design och programmering. Programutveckling. Programdesign, databasdesign. Kravspecifikation. ER-modellen. Begrepps-modellering

Kontrakt baserad design. Design by contract

Jag läser kursen på. Halvfart Helfart

Mönster. n n n n n n n n n n. Singleton Monostate Null object Factory Composite Observer Abstract server Adapter Bridge Proxy

Föreläsning G04: Surveymetodik

Egna funktioner. Vad är sin? sin är namnet på en av många inbyggda funktioner i Ada (och den återfinns i paketet Ada.Numerics.Elementary_Functions)

Universitetet: ER-diagram e-namn

1. Test av anpassning.

Datastrukturer och algoritmer

Duo HOME Duo OFFICE. Programmerings manual SE

RESTARITMETIKER. Avsnitt 4. När man adderar eller multiplicerar två tal som t ex

Analys av algoritmer. Beräkningsbar/hanterbar. Stora Ordo. O(definition) Datastrukturer och algoritmer. Varför analysera algoritmer?

Lösningar och kommentarer till uppgifter i 1.1

Synkronisering. Ordning och reda

Summering av fält. Synkronisering. Summering av fält. Bounded Buffer. Bounded Buffer (get) Bounded Buffer (put)

Datorövning 2 Fördelningar inom säkerhetsanalys

Universitetet: ER-diagram e-namn

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Återanvändning. Två mekanismer. Nedärvning av egenskaper (inheritance) Objekt komposition

x 1 x 2 x 3 x 4 x 5 x 6 HL Z x x x

Allmänna avtalsvillkor för konsument

CONSTANT FINESS SUNFLEX

Digital signalbehandling Alternativa sätt att se på faltning

Hambley avsnitt 12.7 (även 7.3 för den som vill läsa lite mer om grindar)

Vikingen FutureLook. Delphi Finansanalys AB

SveTys. Affärskultur i Tyskland. Vad är det? Och vad ska jag tänka på?

Föreläsning 10: Kombinatorik

Borel-Cantellis sats och stora talens lag

ENDIMENSIONELL ANALYS B1 FÖRELÄSNING VI. Föreläsning VI. Mikael P. Sundqvist

Systemdesign fortsättningskurs

Introduktion till statistik för statsvetare

Fråga: Erbjuder ni någon utbildning för förskrivare och apotekspersonal för att kunna använda webbapplikationerna på ett effektivt sätt?

Databaser - Design och programmering. Databasdesign. Funktioner. Relationsmodellen. Relationsmodellen. Funktion = avbildning (mappning) Y=X 2

Innehåll Grafräknaren och diskret matematik...1 Vad handlar diskret matematik om?...1 Permutationer och kombinationer...3 Något om heltalsräkning...

Föreläsningar 7,8 sept 24, sept 26 v 39). delvis DD Chapter 6.

Statistisk analys. Vilka slutsatser kan dras om populationen med resultatet i stickprovet som grund? Hur säkra uttalande kan göras om resultatet?

Kompletterande kurslitteratur om serier

Tentamen i Matematisk statistik för V2 den 28 maj 2010

(a) Skissa täthets-/frekvensfunktionen och fördelningsfunktionen för X. Glöm inte att ange värden på axlarna.

Resultatet av kryssprodukten i exempel 2.9 ska vara följande: Det vill säga att lika med tecknet ska bytas mot ett plustecken.

2. Konfidensintervall för skillnaden mellan två proportioner.

Konsoliderad version av. Styrelsens för ackreditering och teknisk kontroll föreskrifter (STAFS 1993:18) om EEG-märkning av färdigförpackade varor

Tentamen i Statistik STG A01 (12 hp) 5 mars 2010, kl

Befolkning per födelseland Reviderad metod vid framskrivningar. Version: 2

Datorövning 2 Fördelningar inom säkerhetsanalys

Mönster. n n n n n. Visitor Decorator Extension Object State Taskmaster

Hambley avsnitt 12.7 (även 7.3 för den som vill läsa lite mer om grindar)

Lärarhandledning Att bli kvitt virus och snuva - När Lisa blev av med förkylningen

Detaljplan Ekedal södra. Behovsbedömning 1/5. Sektor samhällsbyggnad

Innanför skalet på centralenheten: Mikroprogrammering

Subsystem. Klasser är ett bra sätt att organisera små system. Klasser är för små enheter för att organisera stora system

Tentamen i Statistik, STA A13 Deltentamen 2, 5p 20 januari 2007, kl

Synkronisering - Semaforen. Om att vänta men inte i onödan

Summering av fält 1.1. Synkronisering - Semaforen. Summering av fält 1.3. Summering av fält 1.2. Summering av fält 2.3 (INTE GK)

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Parsningsalgoritmer. Parsningsalgoritmer: inledning. OH-serie 1: introduktion. Parsningalgoritmer I. Algoritmer. Vad är parsning? Vad är en algoritm?

Studentens personnummer: Giltig legitimation/pass är obligatoriskt att ha med sig. Tentamensvakt kontrollerar detta.

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2

REGULJÄRA SPRÅK (8p + 6p) 1. DFA och reguljära uttryck (6 p) Problem. För följande NFA över alfabetet {0,1}:

Tentamen Metod C vid Uppsala universitet, , kl

Jag läser kursen på. Halvfart Helfart

Stat. teori gk, ht 2006, JW F13 HYPOTESPRÖVNING (NCT ) Ordlista till NCT

IAB Sverige Juni 2017

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på föreläsningarna Föreläsning 26, 9/2 2011: y + ay + by = h(x)

Uppgifter 3: Talföljder och induktionsbevis

z Teori z Hypotesgenerering z Observation (empirisk test) z Bara sanningen : Inga falska teser z Hela sanningen : Täcker alla sanna teser

Applikationen kan endast användas av enskilda användare med förtroenderapportering.

Fakta om plast i havet

Tentamen. Datorteknik och realtidssystem

Geometriska summor. Aritmetiska summor. Aritmetiska talföljder kallar vi talföljder som. Geometriska talföljder kallar vi talföljder som

SANNOLIKHETER. Exempel. ( Tärningskast) Vi har sex möjliga utfall 1, 2, 3, 4, 5 och 6. Därför är utfallsrummet Ω = {1, 2, 3, 4, 5,6}.

TAMS79: Föreläsning 9 Approximationer och stokastiska processer

(a) om vi kan välja helt fritt? (b) om vi vill ha minst en fisk av varje art? (c) om vi vill ha precis 3 olika arter?

Tentamenskrivning, , kl SF1625, Envariabelanalys för CINTE1(IT) och CMIEL1(ME ) (7,5hp)

Art Brugsanvisning

S0005M V18, Föreläsning 10

Höftledsdysplasi hos dansk-svensk gårdshund - Exempel på tavlan

Programmering Emme-makro rvinst_ic.mac version 2

Många tror att det räcker

Vad är det okända som efterfrågas? Vilka data är givna? Vilka är villkoren?

Minsta kvadrat-metoden, MK. Maximum likelihood-metoden, ML. Medelfel. E(X i ) = µ i (θ) MK-skattningen av θ fås genom att minimera

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Induktion LCB Rekursion och induktion; enkla fall. Ersätter Grimaldi 4.1

Extrem prestanda Nu utan BPA UPPLEV DEN FANTASTISKA STYRKAN HOS VÅRA BPA-FRIA PRODUKTER

Z-Testet. Idè. Repetition normalfördelning. rdelning. Testvariabel z

Exam Concurrent and Real-Time Programming

Maskinvaruguide. PCG-GRT-serien

Sannolikheten. met. A 3 = {2, 4, 6 }, 1 av 11

Inledande kombinatorik LCB 2001

Enkät inför KlimatVardag

Tentamen 19 mars, 8:00 12:00, Q22, Q26

Datorteknik ERIK LARSSON

Transkript:

Operativsystem - Processkommuikatio Mats Björkma 2017-01-20

Iehåll Processer (föreläsig 2) Processmodell Processtillståd Trådar Processkommuikatio (föreläsig 3, de här) Semaforer Moitorer Meddeladesystem Skedulerig/schemaläggig (föreläsig 4) Kriterier för e skedulerare Skedulerigsalgoritmer Operativsystem, Mats Björkma, MDH 2

Lärademål Varför behövs processkommuikatio och processykroiserig? Race coditio, ömsesidigt uteslutade, kritiska avsitt Mekaismer för kommuikatio/ sykroiserig Semaforer, meddeladeöverförig, delat mie Operativsystem, Mats Björkma, MDH 3

Mer begrepp Prioritet: Olika processer ka ha tilldelats olika prioritet, vilket betyder att skedulerare tar häsy till detta i valet av ästa process att köra (mer i ästa föreläsig) Operativsystem, Mats Björkma, MDH 4

Förtydligade: Multitrådade käror Modera OS-käror är oftast multitrådade, vilket betyder att flera aktiviteter ka vara på gåg samtidigt i OS-kära Detta är e aledig till att varje process behöver e ege kerel stack, exv. ka flera processer ha systemarop som pågår samtidigt Operativsystem, Mats Björkma, MDH 5

Multitaskig=> samtidighet Wikipedia: Sychroizatio "I computer sciece, especially parallel computig, sychroizatio meas the coordiatio of simultaeous threads or processes to complete a task i order to get correct rutime order ad avoid uexpected race coditios." Operativsystem, Mats Björkma, MDH 6

Multitaskig=> samtidighet Processer som är omedveta om varadra: Oberoede tillämpigar Kokurrerar om samma resurser Processer medveta om varadra: Samarbetar geom att dela resurser E process ka vara beroede av ifo frå e aa Operativsystem, Mats Björkma, MDH 7

Processkommuikatio och sykroiserig Varför kommuikatio och sykroiserig? Odelbara resurser (ömsesidigt uteslutade) Sykroisera aktiviteter Udvika baklås (deadlock/livelock) i systemet Kommuikatio mella processer Operativsystem, Mats Björkma, MDH 8

Processkommuikatio och sykroiserig forts. Kommuikatiosmetoder Semaforer Meddeladeöverförig Delat mie Operativsystem, Mats Björkma, MDH 9

Ömsesidigt uteslutade Det fis resurser (s.k. kritiska resurser) som edast e process i taget bör få aväda (exv. ekel skrivare uta ege haterig av samtidiga utskriftsjobb) Ömsesidigt uteslutade (mutual exclusio) kallas egeskape vi vill garatera för dessa resurser Operativsystem, Mats Björkma, MDH 10

Ömsesidigt uteslutade Garati iebär att det aldrig får fias e risk för att mer ä e process aväder resurse samtidigt Operativsystem, Mats Björkma, MDH 11

Exempel ur verklighete(?) Frå e gammal OS-kurs i Uppsala: E ekelspårig järvägssträcka i Adera mella Peru och Bolivie (sic) måste ha ett sigalsystem för att garatera att max ett tåg i taget är ute på lije Operativsystem, Mats Björkma, MDH 12

Exempel ur verklighete Vi måste hitta e lösig som garaterar ömsesidigt uteslutade uta att resultera i baklås Dessutom skall de vara fri frå svält, d.v.s. att ett tåg blir ståede för alltid Ett öskemål till är att lösige skall vara rättvis, d.v.s. att tåg frå båda håll skall ha samma chas att få köra Operativsystem, Mats Björkma, MDH 13

Exempel ur verklighete Problemet uppstår förstås är det kommer tåg frå båda hålle precis samtidigt Operativsystem, Mats Björkma, MDH 14

Kritiskt avsitt E typisk mekaism för att åstadkomma ömsesidigt uteslutade i kod är kritiska avsitt (critical regio el. critical sectio) Kritiska avsitt är kodavsitt som bara e process i taget får exekvera i Exempel: Kode som exekveras för att skriva ut på skrivare Operativsystem, Mats Björkma, MDH 15

Ömsesidigt uteslutade Exempel uta kritiskt avsitt: Process A Process B Börjar skriva ut ett dokumet på skrivare. Blir avbrute av process B som har högre prioritet. Avbryter A och skriver ut sitt dokumet. Blir klar och avslutar. Fortsätter utskrifte av det första dokumetet. Resultatet blir ihopbladade utskrifter. Operativsystem, Mats Björkma, MDH 16

Ömsesidigt uteslutade Lösige blir att hela de kod som skriver ut på skrivare måste vara ett kritiskt avsitt, så att ite process B ka skriva ut är A reda börjat skriva ut, uta B måste väta tills A är klar Operativsystem, Mats Björkma, MDH 17

Ömsesidigt uteslutade Ett aat exempel hadlar om åtkomst till delade variabler Operativsystem, Mats Björkma, MDH 18

Ömsesidigt uteslutade forts. Race coditio Sceario 1 Example: it saldo= 1000; 900 1900 Thread A Thread B void A(void){ void B(void){ it peg; it peg; peg=saldo; peg=saldo; peg=peg-100; peg=peg+1000; saldo=peg; saldo=peg; } } RESULTAT: saldo=1900 Operativsystem, Mats Björkma, MDH 19

Ömsesidigt uteslutade forts. Race coditio Sceario 2 Example: it saldo= 1000; 2000 900 Thread A Thread B void A(void){ void B(void){ it peg; it peg; peg=saldo; peg=saldo; peg=peg-100; peg=peg+1000; saldo=peg; saldo=peg; } } RESULTAT: saldo=900 Operativsystem, Mats Björkma, MDH 20

Ömsesidigt uteslutade Äve i detta exempel gäller det att skapa ett kritiskt avsitt, i detta fall är det kode frå ia processe läser saldot tills efter de har skrivit det ya saldot som behöver utgöra ett kritiskt avsitt Operativsystem, Mats Björkma, MDH 21

Ömsesidigt uteslutade geom kritiska avsitt Operativsystem, Mats Björkma, MDH 22

Ömsesidigt uteslutade Nu behöver vi ågra mekaismer som hjälper oss att skapa kritiska avsitt Operativsystem, Mats Björkma, MDH 23

Ömsesidigt uteslutade forts. Fyra krav: 1. Aldrig fler ä e process samtidigt i kritiska avsittet 2. Iga atagade om processhastighet eller atal CPU:er 3. Ige process som ite är i kritiska avsittet får blockera e aa process 4. Ige process skall behöva väta i evighet på exekverig Udvik baklås, svält och busy waitig ( rastlös väta ) Hur ka detta lösas? Algoritmiskt i tillämpige Algoritmiskt i tillämpige + hårdvarustöd Iterrupt disable Test Ad Set-primitiv OS-stöd: semaforer, meddeladeöverförig Operativsystem, Mats Björkma, MDH 24

Ömsesidigt uteslutade - Algoritm i tillämpige it tur = 0; void thread0(){ void thread1(){ while(1){ while(1){ // some code // some code while(tur!=0) ; while(tur!=1) ; // Critical Sectio // Critical sectio tur = 1; tur = 0; } } } } Fugerar dea algoritm? Fis det ackdelar med dea lösig? Operativsystem, Mats Björkma, MDH 25

Ömsesidigt uteslutade - Algoritm i tillämpige it tur = 0; void thread0(){ void thread1(){ while(1){ while(1){ // some code // some code while(tur!=0) ; while(tur!=1) ; // Critical Sectio // Critical sectio tur = 1; tur = 0; } } } } Fugerar dea algoritm? Fis det ackdelar med dea lösig? Operativsystem, Mats Björkma, MDH 26

Ömsesidigt uteslutade - Algoritm i tillämpige it tur = 0; void thread0(){ void thread1(){ while(1){ while(1){ // some code // some code while(tur!=0){} //spi while(tur!=1){} //spi // Critical Sectio // Critical sectio tur = 1; tur = 0; } } } } Fugerar dea algoritm? Fis det ackdelar med dea lösig? Operativsystem, Mats Björkma, MDH 27

Ömsesidigt uteslutade - Algoritm i tillämpige (bättre?) boolea iterested[2] = {false,false}; void thread0(){ void thread1(){ while(1){ while(1){ // some code // some code iterested[0] = true; iterested[1] = true; while(iterested[1]){} while(iterested[0]){} // Critical Sectio // Critical sectio iterested[0] = false; iterested[1] = false; } } } } Fugerar dea algoritm? Fis det ackdelar med dea lösig? Operativsystem, Mats Björkma, MDH 28

Ömsesidigt uteslutade - Algoritm i tillämpige (u då?) it loser; boolea iterested[2] = {false,false}; void thread0(){ void thread1(){ while(1){ while(1){ // some code // some code iterested[0] = true; iterested[1] = true; loser = 0; loser = 1; while(loser==0 && while(loser==1 && iterested[1]) {} iterested[0]) {} // Critical Sectio // Critical sectio iterested[0] = false; iterested[1] = false; } } } } Fugerar dea algoritm? Fis det ackdelar med dea lösig? Operativsystem, Mats Björkma, MDH 29

Ömsesidigt uteslutade - Algoritm i tillämpige med hårdvarustöd void thread0(){ void thread1(){ while(1){ while(1){ // some code // some code iterrupt_disable(); iterrupt_disable(); // Critical Sectio // Critical sectio iterrupt_eable(); iterrupt_eable(); } } } } Fugerar dea algoritm? Fis det ackdelar med dea lösig? Operativsystem, Mats Björkma, MDH 30

Ömsesidigt uteslutade - Algoritm i tillämpige med hårdvarustöd Test ad Set (TAS) Sätter e variabel och returerar gamla värdet Läsige av gamla värdet och sättige av ya är garaterat atomärt (odelbart) it TAS(char *flag){ it result; asm{ tas flag be alreadyset move #0,&result bra exit alreadyset: move #1,&result exit: } retur result; } Operativsystem, Mats Björkma, MDH 31

Ömsesidigt uteslutade - Algoritm i tillämpige med hårdvarustöd char flag=0; void thread0(){ void thread1(){ it TAS(char *flag){ while(1){ while(1){ it result; // some code // some code asm{ while(tas(&flag)==1){} while(tas(&flag)==1){} tas flag // Critical Sec. // Critical sec. be alreadyset flag=0; flag=0; move #0,&result } } bra exit } } alreadyset: move #1,&result exit: } retur result; Fis det ackdelar med dea lösig? } Operativsystem, Mats Björkma, MDH 32

Test ad set Variater på test ad set ka heta: Compare ad swap Atomic exchage Samma pricip: e odelbar operatio där e variabel ädras och det gamla värdet kotrolleras Operativsystem, Mats Björkma, MDH 33

Busy wait Alla lösigar (hittills) har avät busy wait, de process som måste väta ligger i e tight loop och kollar och kollar och kollar Slöseri med CPU-tid, vem ka hjälpa? Operativsystem, Mats Björkma, MDH 34

Ta-daa! Is it a spi lock? Is it a test-ad-set istructio? No! It s The Operatig System! Operativsystem, Mats Björkma, MDH 35

OS-stöd för kommuikatio och sykroiserig 36

Semaforer Ett verktyg för att åstadkomma ömsesidigt uteslutade Fis i så gott som alla operativsystem Operativsystem, Mats Björkma, MDH 37

Semaforer Två versioer: Biära semaforer ka vara 0 eller 1 Räkade semaforer ka vara 0 Operativsystem, Mats Björkma, MDH 38

Semaforer Biära semaforer aväds är det fis e istas av e resurs och de ka avädas av e process i taget Exempel: Lås på toadörr. E avädare ka gå i på toa och vrida om låset. Övriga får då väta till dess de som aväder toa låser upp dörre Operativsystem, Mats Björkma, MDH 39

Semaforer Räkade semaforer aväds är det fis flera istaser av resurse och/ eller flera processer ka samsas Exempel: E ut/e i på kroge. Det fis ett maximalt atal tillåta samtidiga besökare. När maxatalet är uppfyllt måste ästa besökare väta på att ågo lämar lokale. Operativsystem, Mats Björkma, MDH 40

Semaforer forts. E semafor har två operatioer: wait(semaphore); räkar er sigal(semaphore); räkar upp Alterativa am: take/give, acquire/ release, dow/up, P/V (hollädska Probere/Verhoge försök/höj) Operativsystem, Mats Björkma, MDH 41

Mutex (MUTual EXclusio) E biär semafor kallas iblad mutex E mutex aväds som ett lås (kom ihåg toadörre), operatioera kallas iblad mutex_lock (wait) respektive mutex_ulock (sigal) Operativsystem, Mats Björkma, MDH 42

Semaforer forts. Om e semafor är 1 (eller mer) och e process aropar wait( ), så kommer semafore att räkas ed och processe får fortsätta Operativsystem, Mats Björkma, MDH 43

Semaforer forts. Om e semafor är 0 och e process aropar wait( ), så kommer processe att flyttas till ett vätetillståd (wait/sleep) och sättas i e kö associerad till semafore Processe blir kvar i kö till dess e aa process aropar sigal( ) Operativsystem, Mats Björkma, MDH 44

Semaforer forts. När e process aropar sigal( ) tittar operativsystemet om det fis ågo process i vätelista till de semafore. Om det fis ågo i kö, så väcks de första processe i kö upp och får fortsätta exekvera (processe flyttas till ready-kö) Om vätelista är tom, räkas semafore upp med 1 Operativsystem, Mats Björkma, MDH 45

Semaforer forts. OS:et löser problemet med busy wait: När e process måste väta behöver de ite ligga och spia rut rut och testa om de får fortsätta Operativsystemet försätter istället processe i ett vätetillståd, och lovar att väcka upp processe är de ka fortsätta Systemet slipper slösa CPU-tid på busy wait Operativsystem, Mats Björkma, MDH 46

Semaforer forts. Operativsystemet tillhadahåller äve rättvisa: Om flera processer med samma prioritet blir vätade på wait( ), så kommer operativsystemet att först väcka de som aropade wait( ) först (Vid busy wait och exv. test_ad_set är det slumpmässigt vilke av de vätade som har tur att testa precis vid rätt tid) Operativsystem, Mats Björkma, MDH 47

Semaforer forts. Semaforoperatioera måste vara odelbara (atomära) Operativsystemet garaterar detta Vätade processer sätts tillstådet till vätade (wait/sleep) läggs i i vätelista på e semafor Operativsystem, Mats Björkma, MDH 48

Semaforer forts. Problem med semaforer Priority iversio: e process med hög prioritet ka bli vätade på e semafor som e process med lägre prioritet har låst Baklås: Process 0 har låst semafore A och vätar på semafore B, Process 1 har låst semafore B och vätar på semafore A Operativsystem, Mats Björkma, MDH 49

Semaforer forts. Skrivarproblemet löst med semaforer: Process A Process B Ett skrivarjobb begärs. Processe aropar wait(lpr). Eftersom skrivare är ledig räkas semafore er till 0. Utskrifte startar. A blir avbrute av process B som har högre prioritet. B vill också skriva ut. B aropar wait(lpr). Eftersom semafore reda är 0 blir B försatt i vätetillståd (wait/sleep). A slutför utskrifte av det första dokumetet. Aropar sigal(lpr). B plockas ut ur semaforkö och ka skriva ut. Aropar sigal(lpr). Operativsystem, Mats Björkma, MDH 50

Semaforer forts. WAIT(S) SIGNAL(S) LOCK LOCK S > 0 Y N FIND CURRENT PROCESS DESCRIPTOR EMPTY SEMAPHORE QUEUE Y N DEQUEUE PROCESS DESCRIPTOR S = S - 1 S = S + 1 MOVE FROM READY QUEUE TO WAITING ADD TO READY QUEUE ADD TO SEMAPHORE QUEUE UNLOCK UNLOCK EXIT TO DISPATCHER EXIT TO DISPATCHER Operativsystem, Mats Björkma, MDH 51

Processykroiserig Uppgift: sykroisera aktiviteter som måste ske i viss ordig Exempel: Producet/kosumetproblemet E process producerar meddelade Meddeladea placeras i e kö E aa process läser meddeladea Problem: Begräsad köstorlek Operativsystem, Mats Björkma, MDH 52

Producet/kosumet När producete har producerat ett meddelade skall kosumete kua kosumera det När kö är full måste producete väta tills kosumete kosumerat ett meddelade När kö är tom måste kosumete väta tills producete producerat ett meddelade Operativsystem, Mats Björkma, MDH 53

Producet/kosumet Exempel: Vi aväder tre semaforer: E räkade semafor för atalet tomma platser E räkade semafor för atalet fulla platser E biär semafor (mutex) för att få ömsesidigt uteslutade vid åtkomst till de delade kö Operativsystem, Mats Björkma, MDH 54

Producet/kosumetproblemet med semaforer #defie N 100 semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void producer(void) { it item; /* Number of slots i the buffer */ /* Mutual exclusio */ /* Number of empty slots i the buffer */ /* Number of full slots i the buffer */ void cosumer(void) { it item; } while(true){ produce_item(&item); wait(&empty); wait(&mutex); eter_item(item); sigal(&mutex); sigal(&full); } } while(true){ wait(&full); wait(&mutex); remove_item(&item); sigal(&mutex); sigal(&empty); cosume_item(item); } Operativsystem, Mats Björkma, MDH 55

Producet/kosumetproblemet med semaforer felaktigt #defie N 100 semaphore mutex = 1; semaphore empty = N; semaphore full = 0; void producer(void) { it item; /* Number of slots i the buffer */ /* Mutual exclusio */ /* Number of empty slots i the buffer */ /* Number of full slots i the buffer */ void cosumer(void) { it item; } while(true){ produce_item(&item); wait(&empty); wait(&mutex); eter_item(item); sigal(&mutex); sigal(&full); } while(true){ wait(&mutex); wait(&full); remove_item(&item); sigal(&mutex); sigal(&empty); cosume_item(item); } Operativsystem, Mats Björkma, MDH 56 }

Semaforer Semaforer i kerel space vs user space Semaforer i kerel space => systemarop till OS:et Avädbara för sykroiserig mella processer Kräver ite delat mie mella processera Widows: CreateSemaphore(), CreateMutex() Uix: semget() Semaforer i user space => hateras i tillämpige Avädbara för sykroiserig mella trådar i samma process Aväder delat mie (plus ofta ågo form av stöd frå OS:et) Widows: CriticalSectio() aropar edast kära är ågo behöver ställa sig i kö Liux Futex (Fast userspace mutex): kräver TAS el. likade + systemarop för köhaterig Operativsystem, Mats Björkma, MDH 57

Meddeladesystem Processkommuikatio geom meddelade Två primitiver sed receive Direkt kommuikatio, eller Idirekt kommuikatio Operativsystem, Mats Björkma, MDH 58

Meddeladesystem - Direkt kommuikatio Process to Process IPC Sed(toProcess, message); Receive(fromProcess, message); Skicka broadcast till flera mottagade processer Sykro överförig (Redezvous) Ige buffrig, processera blockeras tills överförige sker Aalogi: Telefo Asykro överförig Buffrad kommuikatio, ige blockerig Aalogi: telefosvarare Operativsystem, Mats Björkma, MDH 59

Meddeladesystem - Idirekt kommuikatio Kommuikatio via brevlåda (mailbox) E mailbox iehåller E buffert Ett am Två möjligheter Mailboxe ägs av e process Mailbox owed by the process P1 P2 Mailbox owed by the OS Mailboxe ägs av OS:et P1 P2 P3 Operativsystem, Mats Björkma, MDH 60

Producet/kosumetproblemet med meddeladeöverförig #defie N 100 void producer(void){ } it item; message m,toke; while(1){ produce_item(&item); receive(cosumer,&toke); build_mesg(&m,&item); } sed(cosumer, &m); void cosumer(void){ } it item, i; message m,toke; for(i=0;i<n;i++) sed(producer,&toke); while(1){ receive(producer,&m); } extract_item(&m); sed(producer, &toke); cosume_item(item); Operativsystem, Mats Björkma, MDH 61

Delat mie De flesta operativsystem stöder det Speciella primitiver för skapade och åtkomst Felkällor: sykroiserig måste bli rätt Ite bra för distribuerade system Dock sabbt och effektivt om processera ka dela fysiskt mie Operativsystem, Mats Björkma, MDH 62

Delat mie Det delade miet mappas i i båda processeras adressrymd P1 P2 Shared Memory Widows: CreateFileMappig(), MapViewOfFile() Liux/Uix: shm_ope(), mmap() Operativsystem, Mats Björkma, MDH 63

Lärademåle ige Varför behövs processkommuikatio och processykroiserig? Race coditio, ömsesidigt uteslutade, kritiska avsitt Mekaismer för kommuikaito/ sykroiserig Semaforer, meddeladeöverförig, delat mie Operativsystem, Mats Björkma, MDH 64