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

Relevanta dokument
Trådar. Aktiva objekt

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

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

Exam Concurrent and Real-Time Programming

Synkronisering. Föreläsning 8

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

Realtidssystem. - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp

Assemblerprogrammering del 3

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

Föreläsning 5: Introduktion av pekare

Föreläsning 6: Introduktion av listor

1.1 Runnable och Thread

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

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

Operativsystem - Processkommunikation

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Exempel på ett litet Ada-program

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Imperativ programmering. Föreläsning 2

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

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

Transaktioner och samtidighet

Testning av program. Verklig modell för programutveckling

Pascal... Pascal. Pascal... Pascal...

Imperativ programmering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 2. Operativsystem och programmering

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Fö 2 TSEA81 Datorteknik och realtidssystem

Deluppgift 17 Processhantering: exec, sleep, exit, plist

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

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

Programmering II (ID1019) :00-11:00

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

Vyer, Prepared Statements, Triggers

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Föreläsning 4: Poster

Program & programmering

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

1. PLSQL 2 2. Select into

Grunderna i stegkodsprogrammering

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Deklarativ programmering

Tentamen Lösningar EDA698 Realtidssystem

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Översikt. Datorarkitekturer med operativsystem. Inledning. Inledning

DATORER OCH PROGRAM. Programmerade maskiner Program beteendeplan och beteendegenerator Generalitet och portabilitet Datorn är en symbolmaskin

Tentamen den 18 mars svar Datorteknik, EIT070

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Operativsystem. Hierarkin för hårdvara läses nerifrån

Maskinorienterad programmering

Fördelning. Fördelningsprinciper. Lastbalansering

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

Lösningar till tentamen i EIT070 Datorteknik

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Realtidssystem Z EDA300 Tentamen 15/ , kl i V-huset

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Maskinorienterad programmering

DATORER OCH PROGRAM. Datorn är en symbolmaskin

Föreläsning 3-4 Innehåll

Databaser - Design och programmering. Säkerhetsproblem. SQL-injektion. Databashanteraren. Transaktion. Exempel. Transaktionshantering och säkerhet

Klassdeklaration. Metoddeklaration. Parameteröverföring

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

Realtidssystem. - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1

Transkript:

Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden Parallellitet 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") 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 Varför parallella underprogram? De är "naturliga" Ofta avbildar program den parallella realiteten (t.ex. reaktiva system, simuleringsprogram, 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 begrepp i språket behövs 1

Processer och trådar 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. 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 synchronization) förekommer vid gemensamma mål; turordningen är viktig (ex: producer-consumer) Processer En scheduler fördelar processer på processorer Heavyweight eller lightweight processer Möjliga tillstånd: Nyskapad Ready Running Blockerad Död Möjliga problem Deadlock Utsvältning (=> Fair scheduling) Icke-determinism Hastighetsberoende (realtid) Semaforer 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 räknare (kapacitet) 0 och en väntekö (initialt tom) för blockerade processer 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) 2

Semaforer Semaforoperationerna måste vara odelbara! Programmerarens ansvar att semaforen kontrollerar resursen som avsett. Lätt att göra fel! Initialvärde =1 => mutual exclusion (binär semafor) Exempel: buffert med plats för ett värde nonempty := 0; nonfull:= 1 producer: consumer: wait(nonfull) wait (nonempty) lägg in data hämta data release(nonempty) release (nonfull) Semaforer Om flera semaforer ; ordningen viktig! nonempty := 0; free:= N; access:=1 producer: wait(free) wait(access) lägg in data release(access) release(nonempty) consumer: wait (nonempty) wait(access) hämta data release (access) release (free) Omkastad ordning mellan t ex wait(access) och wait(nonempty) kan leda till deadlock Monitorer En monitor inkapslar datastrukturer och operationerna som ger access till dem. (ADT!) Endast en process i taget får tillträde till monitorn. För att möjliggöra samarbetande synkronisering finns det en datatyp queue vars operationer delay och continue endast kan exekveras i en monitor. 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). 3

Synkroniseringsmeddelanden I Ada kan processer skicka och ta emot synkroniseringsmeddelanden. Om både sändaren och mottagaren är beredda sker ett rendezvous, annars väntar den ena. accept xyz(<parametrar>) <body> betyder "vänta tills någon process P skickar meddelandet xyz och exekvera <body> sedan, medan P är blockerad" Rendezvous Time Lines Synkroniseringsmeddelanden Icke deterministiskt urval sker med select-strukturen: select when <villkor> => accept abc( ) or when <villkor> => accept xyz( ) end select En task deklarerar anropbara entry points som den accepterar anrop till. Andra tasks kan anropa dem. (Se exempel, avsnitt 13.5.5) 4

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. 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 Undantagshantering Ett program som inte klarar av händelser som avviker från det normalt förväntade (exceptions ) är inte robust. Önskvärt att i programmet - kunna specificera vad som ska göras när vissa undantag uppträder (hantera u.) - kunna skilja detta från huvudalgoritmen 5

Centrala frågor: Undantagshantering (forts) Hur deklararar man ett undantag? Vilken räckvidd har det? Kan ett undantag ha parametrar? Hur aktiveras ett undantag? Hur binds ett aktiverat undantag till en hanterare? Hur definierar vi de enheter som ska hantera ett aktiverat undantag? Var fortsätter exekveringen efter hanteringsrutinens slut? Ett exempel: exceptions i Ada Inbyggda + användardefinierade undantag Hanterare kan knytas till ett block / underprogram / paket / task Undantag kan ej ha parametrar När ett undantag aktiveras avslutas enheten, kontrollen går till hanteraren Om ingen hanterare finns propageras undantaget till omslutande paket / anropande underprogram. Ada, exempel procedure P is BAD_FORMAT: exception; procedure Q is begin if S/= then raise BAD_FORMAT; end if end Q procedure R is begin Q; exception when BAD_FORMAT=>handler body 1 end R begin R; Q; exception when BAD_FORMAT=>handler body 2 end P; 6