2003-12-19Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Relationsdatabasdesign
”DU KAN ENDAST BLI BÄTTRE PÅ ATT SKRIVA GENOM ATT FAKTISKT SKRIVA” Doris Lessing – Nobelpristagare 2008.
Klasser och objekt.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Arv.
Inkapsling.
Att programmera i språket Java
1 Föreläsning 3 Datalogi för E1 / 2D1343 Repetition List List operationer Stränghantering For-slingor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
DAV B04 - Databasteknik Indexering (kap 14).
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kap 3 & 4: Processer & trådar.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 7: Deadlocks.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
Java. Kortfattat om Java Syntaxen påminner i hög grad om C++ Stöd för objektorientering Kod kan köras i en virtuell maskin som finns tillgänglig för nästan.
Programmering B PHP Lektion 2
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
Programmering B PHP Lektion 3
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Att designa parallella program - manuell vs. automatisk parallellisering - Java och ”multi-core”
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Transaktionshantering (kap 17+18)
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: -Producent – konsument problemet -Förmedling av fildeskriptorer.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 6: Process- synkronisering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Next previous Innehåll Del 1-trådar Del 2-URLer Del 1: Trådar Föreläsning 8.
1. Konnektionism – grunderna
Styrteknik 7.5 hp distans: PLC-Program, kaffe-automat PLC7B:1
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Mutationer – en förändring i arvsmassan
Skriva.
INTRODUKTION TILL PROGRAMMERING
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Operativsystem - Processkommunikation
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Styrteknik 7.5 hp distans: PLC-delprogram, tasks TASKS:1
F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax.
Föreläsningsanteckningar Kortfattat om programmeringsmetodik Ola Ågren Hur det går till att göra ett program.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
Operativsystem - Baklås Mats Björkman
IT och medier1 Utgående från boken Computer Science av: J. Glenn Brookshear Grundläggande datavetenskap, 4p Kapitel 3 Operativsystem.
Presentationens avskrift:

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

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 2 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")

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 3 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

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 4 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 (mutual exclusion); turordningen är oviktig samarbetande synkronisering (eng. cooperation synchronizat- ion) förekommer vid gemensamma mål; turordningen är viktig (ex: producer-consumer) 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.

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 5 Processer ”Heavyweight” eller ”lightweight” Möjliga tillstånd:  Nyskapad  Ready  Running  Blockerad  Död Möjliga problem  Deadlock  Utsvältning (=> Fair scheduling)  Icke-determinism  Hastighetsberoende (realtid)

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 6 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

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 7 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).

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 8 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.

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 9 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.

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 10 Parallellitet på satsnivå High Performance Fortran Distribuerar data på flera processorer som exekverar samma kod, SIMD Funktionella språk, ingen inbyggd sekvensialitet, olika typer av parallellism möjliga. Inga sidoeffekter, endast databeroende styr exekveringsordningen. Deluttryck kan evalueras i godtycklig ordning, även parallellt (Church-Rosser!) Inga nya språkonstruktioner nödvändiga (i princip), implicit parallellism

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 11 God jul och Gott Nytt År!!! (och intressanta gruppövningar )