Synkronisering. Föreläsning 8

Relevanta dokument
Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Deadlocks. detektera och undvik

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5

OM KRITERIER av Emelie Johnson Vegh och Eva Bertilsson, publicerad i Canis 2004

TSBK 10 Teknik för avancerade datorspel Fö 9: Nätverk, Peter Johansson, ISY

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp

LYRICUS SAMTAL NR. 1. Att uppleva Helhetens Navigatör

Tentamen i Realtidsprogrammering

Föreläsning 3.1: Datastrukturer, en översikt

Vad roligt att ni har valt att bjuda varandra på den här timmen.

syftar till att förbättra prestanda. Den kan avse något eller flera av följande mått.

1. Konsten att organisera ur trenätsperspektivet

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

Resultat av enkät nr 2 Testresenären

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Installation instructions, accessories. Växelspaksknopp. Volvo Car Corporation Gothenburg, Sweden. Anvisningsnr Version Art. nr

Datorsystem Laboration 2: Minnesmappade bussar

Instruktioner för Brf Siljans elektroniska låssystem


Frågor och svar om TNC-term

Grunderna i stegkodsprogrammering

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Lev utan Stress & Oro

Seriehantering. [En enkel guide för hur du som serieadministratör använder SVEMO TA.]

Ovanliga Tips till ett Smalare Liv av Seif Fendukly Alla rättigheter förbehålls.

Lär dig sökmöjligheterna i Disgen 8

Generell Analys. 3. Det är viktigt att du väljer ett svar i vart och ett av de åttio blocken.

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

Föreläsning 6: Introduktion av listor

ELEVHJÄLP. Diskussion s. 2 Åsikter s. 3. Källkritik s. 11. Fördelar och nackdelar s. 4. Samarbete s. 10. Slutsatser s. 9. Konsekvenser s.

CAN ett kommunikationsprotokoll för realtidssystem MOP 12/13 1

RAPPORT: ATT UPPLEVA EN UTSTÄLLNING HELT I LJUD. FÖR UTSTÄLLNINGEN VÄRDEFULLT. BAKGRUND..s 2 METOD...s 2 RESULTAT...s 3 9 ANALYS AV WORKSHOP...

Vad är syftet? Vad är syftet? Därför föreslår du/ni att: Därför föreslår du/ni att: Namn/grupp: Drakdräparna. Namn/grupp: Konvojen Babord

NÄR MAN TALAR OM TROLLEN och några andra talesätt

Handbok för provledare

Övningar Dag 2 En första klass

Du har fått stycken taggar. (av föreningen okt-06 eller av den f.d. medlem du övertagit lägenheten från) Din pinkod är:

Hej. Niklas heter jag, och detta är min oberoendeförklaring från Scientologikyrkan.

Aditro HR Portalen - logga in och byta lösenord

Laboration i Maskinelement

En handledning för studerande på Högskolan Kristianstad

Abstrakt algebra för gymnasister

Kort bruksanvisning FLUX

Instruktioner för analys- appen

Ekonomiska riktlinjer

Motivering och kommentarer till enkätfrågor

Utvärdering av föräldrakurs hösten 2013

Logger II Plus RADERA NAMN RING UPP

Att träna och köra eldriven rullstol

GIT L0002B INTRODUKTION TILL PROGRAMMERING OCH C# Information inför kursstart

Enkät Plantskolan Hammarby IF FF vinter 2015/ Har din son deltagit som? 2. I vilken åldersgrupp har din son deltagit?

Förslag på lektionsupplägg: Dag 1- en lektionstimme

Sammanfattning på lättläst svenska

Kapitel 1 - Hej Hej jag heter Lisa och går på Hästskolan. Min bästa vän heter Wilma. Jag tycker att vår rektor är lite läskig. Hon heter Svea och hon

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

Integrering av formgivningsprocessen i en produktutvecklingsprocess

Kundportal. Kundportal - Användarhandledning

SLALOMINGÅNGAR hur svårt kan det vara?

Teknikprogrammet, inriktning informations- och medieteknik

BRUKSANVISNING. Logger Nova

FÖRKORTA DIN VÄG PÅ BANAN

Kommunikationsmöjligheter i Mondo

AMERICAN EXPRESS. Webbplats för affärspartners regler och villkor

ANVÄNDARVILLKOR för TomToms Webbplatser

Instruktion för L-100 IF:s kartpärm

CSN-rapportering, gymnasiet

SPELSYSTEM för åringar

Han har tidigare hjälp mig som praktikant och fungerar bra, duktig och vill lära sig.

Ellinor Rasmusson Steg 3 Svensk Galopp. Startboxträning. Ellinor Rasmusson

Gruppenkät. Lycka till! Kommun: Stadsdel: (Gäller endast Göteborg)

SCHOLA COMAI ELEV WEBBKALENDER / SCHEMA VERSION 1.1. [Skriv text]


Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Vad innebär det att läsa kulturantropologi och etnologi på grundnivå vid Uppsala universitet?

Hitta kunder som frilansare

Skapad för att glädja Gud

============================================================================

Kursutvärdering. Samhällskunskap A

Övningar till avsnitt 3 - Leva inifrån och ut

Rumshantering i Resebyra -modulen

SOPHUS HUNDSKALL MC GARAGE

Viktigt att tänka på i en intervju och de vanligaste fallgroparna. som intervjuar. Ett kostnadsfritt whitepaper utgivet av Level Recruitment

SSM tänkte fel: Tio gånger för hög effekt för 90 procent av Sveriges radioamatörer


Barns brukarmedverkan i den sociala barnavården - de professionellas roll för barns delaktighet

Miljökalendern visar att varje enskild individ kan göra skillnad. Den mäter ökningen och minskningen i biltrafiken, och

ANVÄNDARINSTRUKTION BÅRTRANSPORTUNDERREDEN. Gäller följande modeller: , ,

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det

Kursrapport Datorlingvistisk grammatik (första skiss)

Frågebanker, frågeuppsättningar och slumpvisa block

SPELSYSTEM Kollektivt

Skoltaxi inom Piteå kommun

GOLFINSPIRATION Inledning. Släpp kontrollen

Tentamen TEN1 HI

Formula Dice Regelverk

MONTERINGSANVISNING & BRUKSANVISNING för CARGARD Portstyrning RDC 30 / RDC 120

Databasteknik för D1, SDU1 m fl

Gemensam presentation av matematiskt område: Geometri Åldersgrupp: år 5

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?

Transkript:

Synkronisering Föreläsning 8

Synkronisering Så stort, intrikat och viktigt att det finns hela kurser om det i parallellprogrammering. Vi fuskar lite med några av de viktigaste bitarna!

Synkronisering Vad händer då flera processer vill ha samma resurser? Vilka programmeringsmodeller finns för hantering av synkronisering? Hur gör man i distribuerade system? Synkroniseringsproblematik Synkronisering i distribuerade system Kap: 2.3-2.4, 6.1-6.9 OS Föreläsning 8, Synkronisering 4

Synkroniseringsproblem Vad vi borde kunna från fö 6 Deadlock (baklås) Livelock Svältning

Vad vi borde kunna från föreläsning 6! Race-condition: Två processer tävlar om samma resurs Utfallet beror på i vilken ordning processerna accessar resursen Ex: två processer läser, uppdaterar och skriver samma variabel I = X J = X I = X J = X I = I+1 X=4 X=6 5 J = J+1 I = I+1 X=4 X=5 J = J+1 X = I X = J X = I X = J OS Föreläsning 8, Synkronisering 6

Vad vi borde kunna forts. Kritisk sektion Kod där flera processer accessar samma resurs Att undvika race-conditions Ömsesidig uteslutning mutal exclusion Primitiver för att åstadkomma ömsesidig uteslutning Lås Semaforer Synkronisering När processer kommunicerar med varandra för att bestämma i vilken ordning man får göra saker OS Föreläsning 8, Synkronisering 7

Kan ömsesidig uteslutning och synkronisering leda till problem? Deadlock baklås kan uppstå vid: Resurskonflikter En process har reserverat skrivaren och vill ha bandstationen En annan process har reserverat bandstationen och vill ha skrivaren Synkronisering: Två artiga herrar vid en dörr; bägge säger Efter er min herre! OS Föreläsning 8, Synkronisering 8

Deadlock, formell definition En mängd processer P sådan att varje p P väntar (är Blocked) på någon händelse som endast kan orsakas av att någon p P kör. Orsaker till väntan kan till exempel vara I/O-enheter: p vill ha skrivaren som p reserverat ömsesidig uteslutning: p vill öppna en fil som p låst andra resurser: p vill starta en process men processtabellen är full kommunikation: p väntar på att p skall skicka ett meddelande OS Föreläsning 8, Synkronisering 9

Synkroniseringsrelaterade deadlock Process A... recieve(b,&msg1) send(b,msg2)... Process B... recieve(a,&msg1) send(a,msg2)... Bägge processerna väntar på ett meddelande från den andra Kan åtgärdas om de kan göra send() först OS Föreläsning 8, Synkronisering 10

Villkor för deadlock - Coffmans villkor Ömsesidig uteslutning Endast en process åt gången kan använda en resurs Behåll och vänta En process kan behålla (reserverade) resurser medan den väntar på att få andra Ingen pre-emption (konfiskering ) Resurser kan inte tas ifrån en process Cirkulär väntan Det måste finnas en cykel av processer där varje process väntar på att få en resurs av nästa OS Föreläsning 8, Synkronisering 11

Vad är en resurs i det här sammanhanget? En resurs är allt man kan vänta på att få tillgång till. Ex: Minne Diskenhet Lås, semafor Meddelande OS Föreläsning 8, Synkronisering 12

Visualisering av resursrelaterat baklås Process A Resurs X Y Indikerar att B väntar på att få X B Indikerar att Y ägs av B OS Föreläsning 8, Synkronisering 13

Deadlock och schemaläggning Process A Begär X Begär Y Släpp X Släpp Y Process B Begär Y Begär X Släpp Y Släpp X Schemaläggning 12 A begär X A får X B begär Y B A får begär Y Y B A begär får Y X A släpper begär Y X Baklås! A släpper Y B får Y B begär X B får X B släpper Y B släpper X Inget baklås! X A B Y OS Föreläsning 8, Synkronisering 14

Hantering av deadlockproblemet Gör ingenting (strutsalgoritmen): Unix m fl Varför: Det är dyrt och krångligt att undvika/upptäcka deadlock Detektering och återhämtning: VMS systemet håller reda på resursallokering och letar cykler Undvikande genom försiktighet kräver begränsningar för användarprocesser Förhindrande genom elimination av nödvändigt villkor kan inte alltid genomföras fullt ut, men kan användas för att eliminera vissa källor till deadlock OS Föreläsning 8, Synkronisering 15

Att upptäcka deadlock Ganska enkelt om det bara finns en enhet av varje resurs Systemet håller för varje process reda på vilka resurser den har och vilka den väntar på Se det som ett grafproblem: Om det finns cykler så föreligger baklås; bra algoritmer för att hitta cykler är kända (linjär tid) OS Föreläsning 8, Synkronisering 16

Att upptäcka baklås Mer komplicerat om det finns flera av varje resurs (till exempel minne) en process som väntar på att få en resurs väntar på att någon av de processer som har resursen skall släppa den cirkulär väntan kan komma att brytas av att processer som är klara med användningen av en resurs/alla resurser släpper sina resurser En lösning är att konstruera Bankiralgoritm tabeller (mer om det senare) OS Föreläsning 8, Synkronisering 17

Baklås med flera resurser av samma typ 2 A 1 C 2 X 1 Y 0 5 B 1 OS Föreläsning 8, Synkronisering 18

Att reda upp ett baklås som inträffat Återhämtning (recovery)

Återhämtning - via pre-emption Inför pre-emption (konfiskation): Ta ifrån en process en resurs Fysiskt minne: page-out Processorn: Om man har pre-emptiv schemaläggning Bryter mot villkoret att resurser inte kan pre-emptas OS Föreläsning 8, Synkronisering 20

Återhämtning - via roll-back Roll-back (tillbakarullning): Gå tillbaka till tidigare punkt i exekveringen och välj en annan schemaläggning Processer måste spara sitt tillstånd då och då Sidoeffekter som t.ex. I/O är problematiska att rulla tillbaka Jfr: Ordbehandlare med undo-möjlighet OS Föreläsning 8, Synkronisering 21

Återhämtning - via att döda processer Ihjälslagning: Någon av de låsta processerna slås ihjäl Ingen garanti för att baklåset låses upp på en gång, men om man slår ihjäl process efter process... Tillämpas av VMS OS Föreläsning 8, Synkronisering 22

Att aldrig hamna i båklås Bankiralgoritmen Bryta Coffmans villkor

Bankiralgoritmen Bygger på att systemet kan kontrollera schemaläggningen av processerna Vissa scheman leder till baklås, andra inte Varje process måste anmäla sitt maximala resursbehov i förväg OS Föreläsning 8, Synkronisering 24

Bankiralgoritmen forts. Systemet kan skall alltid befinna sig i ett säkert tillstånd Ett tillstånd är säkert om det finns en ordning i vilken processerna kan köras som inte leder till låsning även om alla processer utnyttjar hela sitt maximala resursbehov Om en process kommer med en begäran som skulle leda till att systemet kom i ett osäkert tillstånd om den uppfylldes så körs någon annan process i stället Den uppskjutna begäran uppfylls senare OS Föreläsning 8, Synkronisering 25

Bankiralgoritmen, ett exempel Antag att vi har 9 enheter totalt A Har Max 3 9 B begär 3 enheter B 3 6 A begär 2 enheter Har Max Har Max A 3 9 A 5 9 B 6 6 B 3 6 A B Har Max 3 9 0 - B terminerar Osäkert tillstånd ty A kan vilja ha 4 enheter till B kan vilja ha 3 enheter till Algoritmen undviker detta tillstånd OS Föreläsning 8, Synkronisering 26

Är bankiralgoritmen användbar? Hur ofta känner varje process hela sitt resursbehov innan exekveringen startar Hur ofta har man en fix processpopulation (går visserligen att fixa dynamiska populationer men det blir lite krångligt) Inte användbar i så många sammanhang för att undvika att hamna i deadlock Men har använts i gamla batch-system En lite mer förfinad variant kan användas för att upptäcka om man är i deadlock (se boken) OS Föreläsning 8, Synkronisering 27

Att förhindra låsning (prevention) Man ser till att något av Coffmans fyra villkor inte gäller Kan ibland lösa hela problemet Kombineras i annat fall med t.ex. strutsalgoritmen OS Föreläsning 8, Synkronisering 28

Undvika deadlock - bryt ömsesidig uteslutning Ömsesidig uteslutning Tillåt inte processer att äga resurser exklusivt alla resurser ska kunna delas Går det verkligen? I vissa fall kan man hantera resurser som måste ägas exklusivt genom att ha en process som fungerar som resurshanterare: ex: Hantering av skrivare Endast skrivardemonen reserverar skrivaren explicit Processer som vill skriva ut lägger en fil i en spoolkatalog där skrivardemonen hämtar dem OS Föreläsning 8, Synkronisering 29

Undvika deadlock -bryta behålla och vänta (hold-and-wait) Behåll och vänta Kräv att en process släpper alla resurser när den begär en ny, eller begär alla resurser på en gång Mer drakonisk variant av bankmannens algoritm OS Föreläsning 8, Synkronisering 30

Undvika deadlock -bryta no-preemption Ingen konfiskering Vissa resurser kan konfiskeras Fysiskt minne (dock kan inte swaputrymme på disken konfiskeras) Processorn (om man har avbrytande schemaläggning) Men inte alla resurser kan tas från en process på ett enkelt sätt om ens alls... OS Föreläsning 8, Synkronisering 31

Undvika deadlock -att bryta cirkulär väntan Cirkulär väntan Absolut mest populära villkoret att ge sig på Ge alla resurser ett nummer Det är bara tillåtet att allokera resurser i ökande ordning Om man har en resurs av typ N får man bara begära en resurs M om N<M Fungerar bäst om man vet vad alla processer kommer att göra, t.ex. i ett realtidssystem OS Föreläsning 8, Synkronisering 32

Vad kan man lära sig av att bryta cirkulär väntan? Om man t.ex har lås för flera kritiska sektioner och flera processer använder flera av de kritiska sektionerna så gäller: Om alla processer som behöver låsa mer än en sektion i taget låser sektionerna i samma ordning så undviker man deadlock OS Föreläsning 8, Synkronisering 33

Ett gammalt exempel Om processerna alltid måste ta resurser av typen X före resurser av typen Y skulle vi aldrig kunna få en deadlocksituation i det här exemplet! X A Y B OS Föreläsning 8, Synkronisering 34

Livelock En grupp av processer som exekverar men inte kommer vidare eftersom de hela tiden synkroniserar med varandra Ex: två personer möts i en smal gång och går fram och tillbaka åt samma håll för att släppa förbi den andre Svårt att upptäcka eftersom processerna fortfarande exekverar (ej blockerade) OS Föreläsning 8, Synkronisering 35

Svältning... ett relaterat ämne

SJF för online schemaläggning Shortest Job First är en optimal schemaläggningsalgoritm om man har alla jobb från början man vet hur lång tid de tar Om man får in nya jobb hela tiden kan det hända att ett jobb med körtid 10 kommer in, men det finns redan ett jobb i kön med körtid 5 ochdessutom kommer det hela tiden in nya korta jobb så det första jobbet får aldrig köra! Dvs. jobb kan bli utsatta för svältning OS Föreläsning 8, Synkronisering 37

Svältning Svältning inträffar när någon process aldrig får köra för att andra processer prioriteras Kanske andra processer har högre prioritet Kanske olika synkroniseringsproblem avlöser varandra OS Föreläsning 8, Synkronisering 38

Lösningar på svältningsproblemet Vanlig lösning Ge processer som fått vänta länge ökad prioritet (aging) Undvik prioriteter alla processer har samma prioritet OS Föreläsning 8, Synkronisering 39

Synkroniseringsexempel - gamla kära vänner Det finns ett antal synkroniseringsproblems-exempel som täcker in många av de vanligaste problemen som dyker upp vid synkronisering Bounded-buffer Readers and writers Sleeping barber Dining philosophers Förstår man dem kan man hantera många (de allra flesta) problem som kan dyka upp i samband med synkronisering OS Föreläsning 8, Synkronisering 40

Synkronisering koordinering i distribuerade system Klockor och tidsstämplar Ömsesidig uteslutning Valalgoritmer Att komma överens

Klockor Det är en fysikalisk omöjlighet att exakt synkronisera klockor Vi kan komma ganska nära med GPS-systemen Statistisk klocksynkronisering Men vi kan inte använda vanliga klockor för att exakt avgöra i vilken ordning händelser inträffat i ett distribuerat system Att kunna sekvensiera händelser kan vara viktigt i t.ex. databassystem och vid återhämntning efter krasch OS Föreläsning 8, Synkronisering 42

Logiska klockor - Lamports arbete Varje process i har en egen logisk klocka T i Vid varje lokal händelse i processen sätts T i = T i +1 Sändande av meddelande till en annan process är kommunikation och då uppdateras T i och skickas med meddelandet Vid mottagning av meddelande uppdateras den lokala tiden till max(lokaltid+1, meddelandetid + 1) Ger kausal ordning, dvs om en händelse A orsakat händelse B, direkt eller indirekt, är tidsstämpeln av A mindre än tidsstämpeln för B Total ordning av händelser kan man få om man t.ex använder (unikt) processid för att ordna händelser med samma tidsstämpel OS Föreläsning 8, Synkronisering 43

Ömsesidig uteslutning Centraliserad approach En server delar ut tillstånd att accessa kritisk sektion som sedan återlämnas till servern Token ring Rättigheten att accessa kritisk sektion, token, skickas runt i ring mellan processer som vill in i kritiska sektionen Distribuerad approach En process som vill in i kritiska sektionen skickar ut ett meddelande till alla andra om det stämplat med sin logiska klocka En process som tar emot meddelandet gör följande Om den inte vill in i KS svara direkt OK Om den vill in i KS och skickat ett meddelande om det med mindre tidsstämpel än på den förfrågan den tog emot vänta till dess att den fått använda KS svara sedan annars svara direkt OK Om den är inne i KS vänta med att svara till dess ute ur KS När en process fått ok från har den exklusiv tillgång till KS OS Föreläsning 8, Synkronisering 44

Annat intressant Strategier för att hantera lås så man undviker deadlock Programmeringsprimitiver: monitorer, kritiska sektioner, meddelandesändning i olika former Hur åstadkommer man atomiska transaktioner? Hur kan man återställa ett tillstånd efter krasch? (feltolerans i distribuerade databassystem) Hur väljer man koordinatorer? Hur kommer man överens? Hur hanterar man felaktiga processer? Kan problemen med ömsesidig uteslutning och kritiska sektioner minska/försvinna i distribuerade system med meddelandesändning? Hur hanteras borttappade meddelanden? OS Föreläsning 8, Synkronisering 45