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

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

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

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

Tråder og concurrency i Linux

Dynamic Programming Longest Common Subsequence. Class 27

IN2010: Algoritmer og Datastrukturer Series 2

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

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.

Models of Concurrency

Slope-Intercept Formula

Inf1000 (Uke 10) HashMap og ArrayList

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

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

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

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

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

INF1010 Tråder II 6. april 2016

Uke 5. Magnus Li INF /

The internet of Health

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

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

SAMMENDRAG.

Exercise 1: Phase Splitter DC Operation

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

Baltic Sea Region CCS Forum. Nordic energy cooperation perspectives

UNIVERSITETET I OSLO

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; }

Enkel og effektiv brukertesting. Ida Aalen LOAD september 2017

Mer om C programmering og cuncurrency

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

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

import java.util.arraylist;

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

Digital Transformasjon

Dagens tema Kapittel 8: Objekter og klasser

INF Notater. Veronika Heimsbakk 10. juni 2012

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO

Klasser, objekter, pekere og UML. INF gruppe 13

7) Radix-sortering sekvensielt kode og effekten av cache

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

UNIVERSITETET I OSLO

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

Løsningsforslag 2017 eksamen

static int ant_steiner; //antall steiner static int teller2 = 0; //teller for printing til Thread^ murer; //murertråden

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?

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

Invarianter, +lstander og li1 mer seman+kk

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

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

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

SVM and Complementary Slackness

Databases 1. Extended Relational Algebra

INF1000: Forelesning 7

Ikke pensum! Plan for dagen. Resource Management Kontekst: Bloom (1979) Kap. 11: Resource control (utvalg)

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

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

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

INF1010. Grensesnittet Comparable<T>

Dagens tema: Sjekking

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Norges Informasjonsteknologiske Høgskole

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

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

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

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

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

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

5 E Lesson: Solving Monohybrid Punnett Squares with Coding

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

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

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

Graphs similar to strongly regular graphs

INF1010 Arv. Marit Nybakken 2. februar 2004

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

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

Perpetuum (im)mobile

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

SERVICE BULLETINE

pnvdb Documentation Release Jan Tore Kyrdalen

(MVC - Model, View, Control)

UNIVERSITETET I OSLO

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

Bostøttesamling

INF1000: Forelesning 7. Konstruktører Static

Transkript:

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

Fra sekvensielt til parallelt «Sanntidprogrammering etter 33 å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) 13.nov. 2009 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 (neste time med Ommund Øgård) 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

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 direkte bruk av semaforer 29

Meldinger, ikke vha funksjonskall pekere til fellesdata direkte bruk av semaforer pipes 30

Meldinger, ikke vha funksjonskall pekere til fellesdata direkte bruk av semaforer pipes meldinger 31

Meldinger, ikke vha funksjonskall pekere til fellesdata direkte bruk av semaforer pipes asynkrone meldinger 32

Meldinger, ikke vha funksjonskall pekere til fellesdata direkte bruk av semaforer pipes asynkrone meldinger «skjeve» meldingsdiagram 33

Meldinger, ikke vha funksjonskall pekere til fellesdata direkte bruk av semaforer 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

39

kommunikasjon= 40

kommunikasjon= synkronisering 41

halvferdig kommunikasjon= synkronisering 42

halvferdig kommunikasjon= synkronisering blokkering 43

CSP 44

CSP Ada 45

Ada CSP KRoC 46

CSP Ada KRoC JCSP 47

CSP Ada Transterpreter KRoC JCSP 48

CSP Ada Transterpreter KRoC JCSP C+kjøresystem 49

parallellitet 50

parallellitet alt blir enklere 51

parallellitet alt blir enklere WYSIWYG-semantikk 52

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

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

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

parallellitet nesten 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 Vranglås! 57

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

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

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

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 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; 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 62

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

64

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, 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 galt_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 galt_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 } 65

Kanal i Amsterdam, nov. 09 66

CSP Ada Transterpreter KRoC JCSP C+kjøresystem 67

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

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

http://en.wikipedia.org/wiki/go_(programming_language) 70

Dønn ferskt! Sjekk denne siden i dag! http://en.wikipedia.org/wiki/go_(programming_language) 71

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_lang_faq.html#csp Skal vi gå og prøve Go? 72

Fra sekvensielt til parallelt 73

Fra sekvensielt til parallelt og multikjerne 74

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