Fra sekvensielt til parallelt



Like dokumenter
Fra sekvensielt til parallelt

Fra harde µ-sekunder via mjuke sekunder til forte år: sann tid i industrien Øyvind Teig

Fra harde µ-sekunder via mjuke sekunder til forte år: sann tid i industrien Øyvind Teig

Tråder og concurrency i Linux

Forelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy

Plan for dagen. Kræsj-kurs i sanntidsprogrammering. Måter å tenke på. Programmering intro. Tråder & synkronisering

IN2010: Algoritmer og Datastrukturer Series 2

Dette er en historie..

Dynamic Programming Longest Common Subsequence. Class 27

Fra harde µ-sekunder til forte år: sann tid i industrien

HONSEL process monitoring

FIRST LEGO League. Härnösand 2012

KROPPEN LEDER STRØM. Sett en finger på hvert av kontaktpunktene på modellen. Da får du et lydsignal.

INF1010 Tråder II 6. april 2016

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Inf1000 (Uke 10) HashMap og ArrayList

Fra harde µ-sekunder til forte år: sann tid i industrien

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Slope-Intercept Formula

Exercise 1: Phase Splitter DC Operation

Syntax/semantics - I INF 3110/ /29/2005 1

UNIVERSITETET I OSLO

Endelig ikke-røyker for Kvinner! (Norwegian Edition)

Concurrency. Lars Vidar Magnusson. September 20, Lars Vidar Magnusson () Forelesning i Operativsystemer September 20, / 17

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

Mer om C programmering og cuncurrency

Invarianter, +lstander og li1 mer seman+kk

The internet of Health

Uke 5. Magnus Li INF /

SAMMENDRAG.

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Fra harde µ-sekunder til forte år: sann tid i industrien

Moving Objects. We need to move our objects in 3D space.

Models of Concurrency

Gir vi de resterende 2 oppgavene til én prosess vil alle sitte å vente på de to potensielt tidskrevende prosessene.

Vekeplan 4. Trinn. Måndag Tysdag Onsdag Torsdag Fredag AB CD AB CD AB CD AB CD AB CD. Norsk Matte Symjing Ute Norsk Matte M&H Norsk

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Førsteamanuensis John I. Dalseng Høgskolen i Finnmark 9500 Alta

Dokumentasjon. Hvorfor skrive dokumentasjon? For hvem? Javas dokumentasjon «Lesbar programmering» («Literate programming») IN 211 Programmeringsspråk

Plan for dagen Dagens sidesprang: Sverres editorer gjennom tidene & verktøyet tinyclip. Meldingsbasert synkronisering & kommunikasjon

Baltic Sea Region CCS Forum. Nordic energy cooperation perspectives

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Hvor mye teoretisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

Løsningsforslag til slutteksamen i SESM3401 Styring av mekatroniske systemer

Norges Informasjonsteknologiske Høgskole

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

import java.util.arraylist;

Enkel og effektiv brukertesting. Ida Aalen LOAD september 2017

SVM and Complementary Slackness

Databases 1. Extended Relational Algebra

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM

INF2820 Datalingvistikk V2012. Jan Tore Lønning & Stephan Oepen

buildingsmart Norge seminar Gardermoen 2. september 2010 IFD sett i sammenheng med BIM og varedata

INF Notater. Veronika Heimsbakk 10. juni 2012

INF1000: Forelesning 7

Dagens tema Kapittel 8: Objekter og klasser

UNIVERSITETET I OSLO

EKSAMEN I FAG TDT MMI Lørdag 11. august 2012 Tid: kl

Digital Transformasjon

7) Radix-sortering sekvensielt kode og effekten av cache

UNIVERSITETET I OSLO

Klasser, objekter, pekere og UML. INF gruppe 13

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

EXAM TTM4128 SERVICE AND RESOURCE MANAGEMENT EKSAM I TTM4128 TJENESTE- OG RESSURSADMINISTRASJON

Løsningsforslag 2017 eksamen

P(ersonal) C(omputer) Gunnar Misund. Høgskolen i Østfold. Avdeling for Informasjonsteknologi

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

EKSAMEN I FAG TDT MMI Lørdag 4. juni 2005 Tid: kl

GYRO MED SYKKELHJUL. Forsøk å tippe og vri på hjulet. Hva kjenner du? Hvorfor oppfører hjulet seg slik, og hva er egentlig en gyro?

Call function of two parameters

Tilstandsmaskiner med UML og Java

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

INF1000: Forelesning 7. Konstruktører Static

Sensuren vil bli avsluttet i henhold til gjeldende regelverk. Alle deloppgaver teller likt unntatt implementasjonsoppgavene som teller dobbelt.

Speed Racer Theme. Theme Music: Cartoon: Charles Schultz / Jef Mallett Peanuts / Frazz. September 9, 2011 Physics 131 Prof. E. F.

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

Hvor mye praktisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

Eksamen i TTK4145 Sanntidsprogrammering 12. august

INF Seminaroppgaver til uke 3

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO

INF1010. Grensesnittet Comparable<T>

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap AVSLUTTENDE EKSAMEN I. TDT42378 Programvaresikkerhet

Mannen min heter Ingar. Han er også lege. Han er privatpraktiserende lege og har et kontor på Grünerløkka sammen med en kollega.

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

Physical origin of the Gouy phase shift by Simin Feng, Herbert G. Winful Opt. Lett. 26, (2001)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

Han Ola of Han Per: A Norwegian-American Comic Strip/En Norsk-amerikansk tegneserie (Skrifter. Serie B, LXIX)

5 E Lesson: Solving Monohybrid Punnett Squares with Coding

Little Mountain Housing

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Et enkelt rammeverk for kjøring av OpenGL-programmer i Java

SERVICE BULLETINE

PATIENCE TÅLMODIGHET. Is the ability to wait for something. Det trenger vi når vi må vente på noe

Transkript:

Fra sekvensielt til parallelt «Sanntidprogrammering etter 34 år» Øyvind Teig senior utviklingsingeniør Autronica Fire and Security, «a UTC company» Gjesteforelesning på Høgskolen i Sør-Trøndelag (HiST) 10.nov. 2010 1

Fra sekvensielt til parallelt «Sanntidprogrammering etter 34 år» fremdeles gøy! Øyvind Teig senior utviklingsingeniør Autronica Fire and Security, «a UTC company» Gjesteforelesning på Høgskolen i Sør-Trøndelag (HiST) 10.nov. 2010 2

AFS: brannvarsling 3

Fra brannmeldere 4

Fra brannmeldere til kontrollere 5

Fra brannmeldere til kontrollere til sentraler 6

Fra brannmeldere til kontrollere til sentraler (forelesning med Ommund Øgård på nyåret) 7

Sekvensielt C 8

Sekvensielt C C++ 9

Sekvensielt C C++ Java 10

Sekvensielt C C++ Java main() 11

Sekvensielt C C++ Java main() new ThisObject(); new ThatObject(); 12

C C++ Java sekvensielt sekvensielt Fremdeles like sekvensielt main() new ThisObject(); new ThatObject(); 13

sekvensielt sekvensielt Fint som objekt! 14

sekvensielt sekvensielt Fin innmat i prosess! Fint som objekt! 15

Objekt -orientert programmering 16

Prosess -orientert programmering 17

Objekt Prosess -orientert programmering ja, takk! 18

Objekt Prosess -orientert programmering Hvilke, når, hvor? ja, takk! 19

Prosess 20

Prosess Startes lik objekter eller function med static data 21

Prosess Startes lik objekter eller function med static data Kjører av seg sjøl 22

Prosess Startes lik objekter eller function med static data Kjører av seg sjøl Er tette ingen lekkasje 23

Prosess Startes lik objekter eller function med static data Kjører av seg sjøl Er tette ingen lekkasje Kan ha egne tidskrav 24

1/3 Forklar hovedfunksjon Forklar når kommunikasjon og synkronisasjon er det samme Vis kodeeksepmel 25

Meldinger, ikke vha 26

Meldinger, ikke vha funksjonskall 27

Meldinger, ikke vha funksjonskall pekere til fellesdata 28

Meldinger, ikke vha funksjonskall pekere til fellesdata semaforebeskyttede data 29

Meldinger, ikke vha funksjonskall pekere til fellesdata semaforebeskyttede data pipes 30

Meldinger, ikke vha funksjonskall pekere til fellesdata semaforebeskyttede data pipes meldinger 31

Meldinger, ikke vha funksjonskall pekere til fellesdata semaforebeskyttede data pipes asynkrone meldinger 32

Meldinger, ikke vha funksjonskall pekere til fellesdata semaforebeskyttede data pipes asynkrone meldinger «skjeve» meldingsdiagram 33

Meldinger, ikke vha funksjonskall pekere til fellesdata semaforebeskyttede data pipes asynkrone meldinger «skjeve» meldingsdiagram Som (alle) kan være ok til sitt bruk 34

Meldinger, vha 35

Meldinger, vha synkrone meldinger 36

Meldinger, vha synkrone meldinger asynkrone «signaler» 37

Meldinger, vha synkrone meldinger asynkrone «signaler» «rette» meldingsdiagram 38

kommunikasjon= 39

2/3 Forklar hovedfunksjon Forklar når kommunikasjon og synkronisasjon er det samme Vis kodeeksepmel 40

kommunikasjon= synkronisering 41

halvferdig kommunikasjon= synkronisering 42

halvferdig kommunikasjon= synkronisering blokkering 43

halvferdig kommunikasjon= synkronisering blokkering betyr at prosessoren kan gjøre andre ting 44

CSP Communicating Sequential Processes (Hoare) Egen formalisme og brukes i språk og bibliotek 45

Ada CSP Communicating Sequential Processes (Hoare) Egen formalisme og brukes i språk og bibliotek 46

Ada CSP Communicating Sequential Processes (Hoare) Egen formalisme og brukes i språk og bibliotek KRoC 47

CSP Ada KRoC JCSP 48

CSP Ada Transterpreter KRoC JCSP 49

CSP Ada Transterpreter KRoC JCSP C+kjøresystem 50

parallellitet 51

parallellitet alt blir enklere 52

parallellitet alt blir enklere WYSIWYG-semantikk 53

parallellitet alt blir enklere WYSIWYG-semantikk = se på MSC, ikke inni motpart 54

parallellitet alt blir enklere WYSIWYG-semantikk = se på MSC, ikke inni motpart Byggeklosser / bibliotek 55

parallellitet alt blir enklere WYSIWYG-semantikk = se på MSC, ikke inni motpart Byggeklosser / bibliotek Klient / tjener 56

parallellitet nesten alt blir enklere WYSIWYG-semantikk = se på MSC, ikke inni motpart Byggeklosser / bibliotek Klient / tjener 57

parallellitet nesten alt blir enklere WYSIWYG-semantikk = se på MSC, ikke inni motpart Byggeklosser / bibliotek Klient / tjener Vranglås! 58

parallellitet nesten alt blir enklere WYSIWYG-semantikk = se på MSC, ikke inni motpart Byggeklosser / bibliotek Klient / tjener Vranglås! Bruk sikre design mønstre 59

parallellitet nesten alt blir enklere WYSIWYG-semantikk = se på MSC, ikke inni motpart Byggeklosser / bibliotek Klient / tjener Vranglås! Bruk sikre design mønstre Formell modellering = bevis 60

rett modell for parallellitet (nesten) alt blir enklere WYSIWYG-semantikk = se på MSC, ikke inni motpart Byggeklosser / bibliotek Klient / tjener Vranglås! Bruk sikre design mønstre Formell modellering = bevis 61

mtype = {M_UP, M_DW}; chan Chan_data_down = [0] of {mtype}; chan Chan_data_up = [0] of {mtype}; proctype P1 (chan Chan_data_in, Chan_data_out) { do :: Chan_data_in? M_UP -> skip; :: Chan_data_out! M_DW -> skip; od; }; proctype P2 (chan Chan_data_in, Chan_data_out) { do :: Chan_data_in? M_DW -> skip; :: Chan_data_out! M_UP -> skip; od; En formell modell i Promela kan formelt verifiseres i Spin }; init { atomic { } } run P1 (Chan_data_down, Chan_data_up); run P2 (Chan_data_up, Chan_data_down); http://en.wikipedia.org/wiki/promela#executability Promela / Spin 62

mtype = {M_UP, M_DW}; chan Chan_data_down = [0] of {mtype}; chan Chan_data_up = [0] of {mtype}; proctype P1 (chan Chan_data_in, Chan_data_out) { do :: Chan_data_in? M_UP -> skip; :: Chan_data_out! M_DW -> skip; od; En formell modell i Promela }; proctype P2 (chan Chan_data_in, Chan_data_out) { kan formelt verifiseres i Spin do :: Chan_data_in? M_DW -> skip; :: Chan_data_out! M_UP -> skip; od; }; init { atomic { } } run P1 (Chan_data_down, Chan_data_up); run P2 (Chan_data_up, Chan_data_down); http://en.wikipedia.org/wiki/promela#executability Promela / Spin 63

CSP Ada Transterpreter KRoC JCSP C+kjøresystem «ChanSched» 64

3/3 Forklar hovedfunksjon Forklar når kommunikasjon og synkronisasjon er det samme Vis kodeeksepmel 65

01 Void P_Prefix (void) // extended Prefix 02 { 03 Prefix_CP_a CP = (Prefix_CP_a)g_CP; // get proc Context from Scheduler 04 PROCTOR_PREFIX() // jump table (see Section 2) 05... some initialisation 06 SET_EGGTIMER (CHAN_EGGTIMER, LED_Timeout_Tick); 07 SET_REPTIMER (CHAN_REPTIMER, ADC_TIME_TICKS); 08 CHAN_OUT (CHAN_DATA_0,Data_0); //first output 09 while (TRUE) 10 { 11 ALT(); // this is the needed PRI_ALT 12 ALT_EGGREPTIMER_IN (CHAN_EGGTIMER); 13 ALT_EGGREPTIMER_IN (CHAN_REPTIMER); 14 ALT_SIGNAL_CHAN_IN (CHAN_SIGNAL_AD_READY); 15 ALT_CHAN_IN (CHAN_DATA_2,Data_2); 16 ALT_ALTTIMER_IN (CHAN_ALTTIMER,TIME_TICKS_100_MSECS); 17 ALT_END(); 18 switch (g_thischannelid) 19 { 20... process the guard that has been taken, e.g. CHAN_DATA_2 21 CHAN_OUT (CHAN_DATA_0,Data_0); 22 }; 23 } 24 } 66

01 Void P_Prefix (void) // extended Prefix 02 { 03 Prefix_CP_a CP = (Prefix_CP_a)g_CP; // get proc Context from Scheduler 04 PROCTOR_PREFIX() // jump table (see Section 2) Fjorårets side 05... some initialisation 06 SET_EGGTIMER (CHAN_EGGTIMER, CP->LED_Timeout_Tick); 07 SET_REPTIMER (CHAN_REPTIMER, ADC_TIME_TICKS); 08 CHAN_OUT (CHAN_DATA_0,&CP->Data_0,sizeof(CP->Data_0)); //first output 09 while (TRUE) 10 { 11 ALT(); // this is the needed PRI_ALT 12 ALT_EGGREPTIMER_IN (CHAN_EGGTIMER); 13 ALT_EGGREPTIMER_IN (CHAN_REPTIMER); 14 ALT_SIGNAL_CHAN_IN (CHAN_SIGNAL_AD_READY); 15 ALT_CHAN_IN (CHAN_DATA_2,&CP->Data_2,sizeof(CP->Data_2)); 16 ALT_ALTTIMER_IN (CHAN_ALTTIMER, TIME_TICKS_100_MSECS); 17 ALT_END(); 18 switch (g_thischannelid) 19 { 20... process the guard that has been taken, e.g. CHAN_DATA_2 21 CHAN_OUT (CHAN_DATA_0, &CP->Data_0, sizeof (CP->Data_0)); 22 }; 23 } 24 } 67

Kanal i Amsterdam, nov. 09 68

CSP Ada Transterpreter KRoC JCSP C+kjøresystem 69

Ada Go CSP Transterpreter KRoC JCSP C+kjøresystem 70

Ada CSP Google Transterpreter KRoC JCSP C+kjøresystem 71

"Concurrent" http://en.wikipedia.org/wiki/go_(programming_language) 72

Nytt i fjor http://en.wikipedia.org/wiki/go_(programming_language) 73

Certain concurrency-related structural conventions of Go channels and alternative channel inputs are borrowed from Tony Hoare's CSP. http://en.wikipedia.org/wiki/go_(programming_language) 74

Why build concurrency on the ideas of CSP? Concurrency and multi-threaded programming have a reputation for difficulty. We believe the problem is due partly to complex designs such as pthreads and partly to overemphasis on low-level details such as mutexes, condition variables, and even memory barriers. Higher-level interfaces enable much simpler code, even if there are still mutexes and such under the covers. One of the most successful models for providing high-level linguistic support for concurrency comes from Hoare's Communicating Sequential Processes, or CSP. Occam and Erlang are two well known languages that stem from CSP. Go's concurrency primitives derive from a different part of the family tree whose main contribution is the powerful notion of channels as first class objects. http://golang.org/doc/go_faq.html#csp (2010 - ingen forandring) http://golang.org/doc/go_lang_faq.html#csp (2009) Skal vi gå og prøve Go? 75

Go vises mer i faget sanntidsprogrammering på NTNU http://www.itk.ntnu.no/fag/ttk4145/information/ 76

Fra sekvensielt til parallelt 77

Fra sekvensielt til parallelt og multikjerne 78

Fra sekvensielt til parallelt og multikjerne Øyvind Teig http://www.teigfam.net/oyvind/ takk for meg! 79