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

Relevanta dokument
Synkronisering. Ordning och reda

Trådar. Aktiva objekt

Institutionen för elektro- och informationsteknologi, LTH

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

Mekanismer. (implementation)

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

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

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:

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Några gamla tentamensuppgifter: Processer. 3. Antag givet ett system i vilket rent CPU-bundna processer med följande egenskaper exekveras.

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Imperativ programmering. Föreläsning 2

Parallellism, återblick

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

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

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

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Deluppgift 17 Processhantering: exec, sleep, exit, plist

En problemställning är att realisera primitiver (funktioner) som måste programmeras vid inträde i och vid utträde ur (godtyckliga) kritiska avsnitt.

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.

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

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

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

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

Polymorfi (många skepnader) är egentligen en mängd olika abstraktionsmekanismer och en indelning skulle kunna se ut så här: polymorfi

1. PLSQL 2 2. Select into

Datorarkitekturer med operativsystem ERIK LARSSON

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

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)

Tentamen den 18 mars svar Datorteknik, EIT070

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

Karlstads Universitet, Datavetenskap 1

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

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Maskinorienterad programmering

DATORER OCH PROGRAM. Datorn är en symbolmaskin

Föreläsning 3-4 Innehåll

Deluppgift 10 Starta den första processen (3.5h förarbete, 30min kodning)

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

Concurrency Saker händer samtidigt. Process En instans av ett program

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