Presentation laddar. Vänta.

Presentation laddar. Vänta.

2002-12-20F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.

Liknande presentationer


En presentation över ämnet: "2002-12-20F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden."— Presentationens avskrift:

1 F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden

2 F. Drewes, Inst. f. datavetenskap2 Parallellitet Nivåer på vilka parallellitet kan förekomma är instruktionsnivå – maskininstruktioner exekveras parallellt satsnivå – enstaka programsatser exekveras parallellt underprogramnivå – underprogram exekveras parallellt programnivå – flera program exekveras parallellt Ofta är det nödvändigt eller önskvärt att programdelar exekveras parallellt (jämlöpande, eng. concurrently). Det kan handla om fysisk parallellitet – två eller fler processorer används logisk parallellitet – konceptuell parallellitet som fysiskt kan vara sekventiell ("interleaving")

3 F. Drewes, Inst. f. datavetenskap3 Varför parallella underprogram? De är "naturliga" Ofta avbildar program den parallella realiteten (t.ex. reaktiva system, simulationsprogram, osv.) De ger bättre möjligheter att utnyttja datorn Om datorn har flera processorer utnyttjas de på det viset som programmet tjänar mest på De behövs i många interaktiva system Om något komplext beräknas behöver inte användaren vänta utan kan jobba på eller eventuellt ingripa  Lämpliga koncept i språket behövs

4 F. Drewes, Inst. f. datavetenskap4 Processer och trådar Synkronisering behövs för att bearbeta gemensamma data synkronisering garanterar att sats S av tråd T exekveras före eller efter sats S´ av tråd T´ tävlande synkronisering (eng. competition synchronization) förekommer om en resurs (t.ex. skrivare) inte kan delas; turordningen är oviktig samarbetande synkronisering (eng. cooperation synchronizat- ion) förekommer vid gemensamma mål; turordningen är viktig Exekveringen av ett parallellt program består av flera kontrollflöden som kallas trådar (eng. threads). En process (eng. ofta "task"=uppgift) är en enhet som kan exekveras parallellt med andra och som kontrollerar en tråd.

5 F. Drewes, Inst. f. datavetenskap5 Semaforer Om en process P exekverar wait(s)…  och semaforens kapacitet är > 0 minskas den med 1  annars ställs P i semaforens väntekö Om en process P exekverar release(s)…  och väntekön är tom ökas dess kapacitet med 1  annars får första processen i väntekön fortsätta (och givetvis tas den bort från kön) En semafor (Dijkstra 1965) är en datastruktur med två atomära operationer wait och release. Ofta omger de kod som ska synkroniseras. En semafor har en kapacitet  0 och en väntekö (initialt tom) för blockerade processer

6 F. Drewes, Inst. f. datavetenskap6 Monitorer För att möjliggöra samarbetande synkronisering finns det en datatyp queue vars operationer delay och continue endast kan exekveras i en monitor. En monitor inkapslar datastrukturer och operationerna som ger access till dem. Endast en process i taget får tillträde till monitorn. Om delay(q) exekveras blockerar processen. Den ställs i kön q och andra processer får tillträde till monitoren. Om continue(q) exekveras släpper processen monitorn och första processen som väntar i q får fortsätta (om en sådan finns).

7 F. Drewes, Inst. f. datavetenskap7 Synkroniseringsmeddelanden accept xyz( ) betyder "vänta tills någon process P skickar meddelandet xyz och exekvera sedan, medan P är blockerad" icke deterministiskt urval sker med select-strukturen: select when => accept abc(…) … or when => accept xyz(…) … … end select I Ada kan processer skicka och ta emot synkroniserings- meddelanden. Om både sändaren och mottagaren är beredda sker ett rendezvous, annars väntar den ena.

8 F. Drewes, Inst. f. datavetenskap8 Jämförelse Semaforer är primitiva och flexibla, känsliga för fel problemet är att olika programdelar måste samarbeta på mycket låg nivå. Monitorer liknar ADT:er och har liknande fördelar men samarbetande synkronisering förblir komplicerad. Synkroniseringsmeddelanden är enklare och flexiblare än monitorer, men minst lika strukturerade. De passar dessutom bra till distribuerade system.

9 F. Drewes, Inst. f. datavetenskap9 God jul och Gott Nytt År!!! (och intressanta gruppövningar )


Ladda ner ppt "2002-12-20F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden."

Liknande presentationer


Google-annonser