Models of Concurrency

Størrelse: px
Begynne med side:

Download "Models of Concurrency"

Transkript

1 Models of Concurrency Martin Steffen 1 University of Oslo, Norway INF3140 Høst 2007

2 Dagens program Mer asynkron meldingsutveksling Interagerende prosesser med ulike kommunikasjonsmønstre Oppsummering av erfaringer Remote procedure call ( RPC ) Hva RPC er Eksempler: klokketjener, strømfletting, verdi-ombytting Rendezvous Hva rendezvous er Eksempler: buffer, klokketjener, verdi-ombytting Kombinasjoner av RPC, rendezvous og meldingsutveksling Eksempler: Begrenset buffer, lesere og skrivere Martin Steffen (UiO) Models of Concurrency / 32

3 Interagerende prosesser: ombytting av verdier Studerer prosesser som likemenn (eng. peers ). Bruker følgende modellproblem: Gitt n prosesser P[0],..., P[n 1], n > 1 Hver prosess har et tall lagret i lokal variabel v Mål: alle prosesser skal få vite største og minste tall Sammenligner og vurderer ulike kommunikasjonsmønstre: Martin Steffen (UiO) Models of Concurrency / 32

4 Interagerende prosesser: ombytting av verdier Studerer prosesser som likemenn (eng. peers ). Bruker følgende modellproblem: Gitt n prosesser P[0],..., P[n 1], n > 1 Hver prosess har et tall lagret i lokal variabel v Mål: alle prosesser skal få vite største og minste tall Sammenligner og vurderer ulike kommunikasjonsmønstre: P 5 P 4 P 5 P 4 P 5 P 4 P 1 P 0 P 3 P 0 P 3 P 0 P 3 P2 P 1 P 2 P 1 P 2 sentralisert symmetrisk ringformet Martin Steffen (UiO) Models of Concurrency / 32

5 Sentralisert løsning: kommentarer P 5 P 4 P 1 P 0 P2 P 3 Prosess P[0] er koordinator : P[0] gjør beregningen, dvs. finner største og minste tall. De andre prosessene bare sender sine tall og venter på svar fra P[0]. Telling av utvekslete meldinger: Ett send receive-par per melding nok å telle antall send: P[0]: n 1 P[1],..., P[n 1]: (n 1) 1 Totalt (n 1) + (n 1) = 2(n 1) meldinger utvekslet n kanaler nødvendig. Martin Steffen (UiO) Models of Concurrency / 32

6 Sentralisert løsning: kode chan values ( i nt ), r e s u l t s [ 1.. n 1]( i n t smallest, i nt l a r g e s t ) ; process P [ 0 ] { # koordinator prosess i nt v =... ; # anta v i n i t i a l i s e r t i nt new, s ma llest = v, l a r g e s t = v ; # i n i t i a l i s e r i n g # faa tak i v e r di e r og l agre s t o e r s t og minst for [ i = 1 to n 1] { r eceive values (new ) ; i f (new < s m allest ) s ma llest = new ; i f (new > l a r g e s t ) l a r g e s t = new ; } # send r e s u l t a t e t t i l de andre prosessene for [ i = 1 to n 1] send r e s u l t s [ i ] ( smallest, l a r g e s t ) ; } process P[ i = 1 to n 1] { i nt v =... ; i nt smallest, l a r g e s t ; send values ( v ) ; r e ceive r e s u l t s [ i ]( smallest, l a r g e s t ) ; } # Fig i Andrews ( l i t e problem r e t t e t ) Martin Steffen (UiO) Models of Concurrency / 32

7 Symmetrisk løsning: kommentarer P 5 P 4 P 0 P 3 P 1 P 2 Single-program, multiple data ( SPMD ) -løsning: Hver prosess utfører samme program og kommuniserer resultatet til alle andre. n prosesser som hver sender n 1 meldinger, dvs. totalt n(n 1) meldinger utvekslet. n kanaler nødvendig Martin Steffen (UiO) Models of Concurrency / 32

8 Symmetrisk løsning: kode chan values [ n ]( i n t ) ; process P[ i = 0 to n 1] { i nt v =... ; i nt new, s ma llest = v, l a r g e s t = v ; # send v t i l de n 1 andre prosessene for [ j = 0 to n 1 st j!= i ] send values [ j ] ( v ) ; # faa tak i n 1 v er d i e r # og l agre s t oerst og minst. for [ j = 1 to n 1] { # j ikke brukt i loekka r eceive values [ i ] ( new ) ; i f (new < s m allest ) smallest = new ; i f (new > l a r g e s t ) l a r g e s t = new ; } } # Fig i Andrews Martin Steffen (UiO) Models of Concurrency / 32

9 Ringformet løsning: kommentarer P 5 P 4 P 0 P 3 P 1 P 2 Nesten symmetrisk, bortsett fra P[0], P[n 2] og P[n 1]. Hver prosess utfører samme program og sender svaret videre (hvis nødvendig). Teller antall send: P[0]: 2 P[1],..., P[n 3]: (n 3) 2 P[n 2]: 1 P[n 1]: 1 Totalt 2 + 2(n 3) = 2(n 1) meld. utvekslet. n kanaler nødv. Martin Steffen (UiO) Models of Concurrency / 32

10 Ringformet løsning: kode (1) chan values [ n ]( i n t smallest, i nt l a r g e s t ) ; process P [ 0 ] { # i n i t i a l i s e r utveklsingen i nt v =... ; i nt smallest = v, l a r g e s t = v ; # send v t i l neste prosess, P[ 1 ] send values [ 1 ] ( smallest, l a r g e s t ) ; # faa globale s ma llest og l a r g e s t f ra P[ n 1] # og send dem videre t i l P[ 1 ] r e ceive values [ 0 ] ( smallest, l a r g e s t ) ; send values [ 1 ] ( smallest, l a r g e s t ) ; } Martin Steffen (UiO) Models of Concurrency / 32

11 Ringformet løsning: kode (2) process P[ i = 1 to n 1] { i nt v =... ; i nt smallest, l a r g e s t ; # motta s ma llest og l a r g e s t saa langt, # og oppdater dem ved sammenlingning med v r e ceive values [ i ] ( smallest, l a r g e s t ) i f ( v < s ma llest ) s m allest = v ; i f ( v > l a r g e s t ) l a r g e s t = v ; # send r e s u l t a t e t t i l neste, og vent paa globalt r e s u l t a t send values [( i +1) mod n ]( smallest, l a r g e s t ); i f ( i < n 1) r eceive values [ i ] ( smallest, l a r g e s t ) ; # send glob. res. videre, men ikke f r a P[ n 1] t i l P[ 0 ] i f ( i < n 2) send values [ i +1]( smallest, l a r g e s t ) ; } # Fig. 7.3 i Andrews ( r e t t e t ) Martin Steffen (UiO) Models of Concurrency / 32

12 Erfaring med meldingsutveksling Meldingsutveksling velegnet for applikasjoner der prosesser kommuniserer enveis over én eller flere kanaler. Kan også lage klient-tjener-applikasjoner ved meld.utv., men: Hver klient må ha egen svarkanal Generelt: to-veis kommunikasjon må realiseres med 2 kanaler Gir mange kanaler RPC og rendezvous passer bedre for klient-tjener -applikasjoner. Martin Steffen (UiO) Models of Concurrency / 32

13 Remote Procedure Call: hovedidé kallende prosess paa maskin A kalt prosedyre paa maskin B op foo(formals); # deklarasjons... call foo(args); -----> proc foo(formals) # ny prosess lages... <----- end;... Martin Steffen (UiO) Models of Concurrency / 32

14 RPC (forts.) RPC kombinerer noen elementer fra monitorer og meldingsutveksling Som vanlig prosedyrekall, men kaller og kalt prosedyre kan være i ulike adresserom, f.eks. på ulike maskiner i nettverk. Kallerprosessen blokkerer til kalt prosedyre er ferdig, som ved monitor-kall og synkron meldingsutveksling. Asynkron programmering støttes ikke direkte. 1 En ny prosess håndterer hvert kall. Potensielt toveis kommunikasjon: kaller sender argumenter og mottar resultat. 1 Men: Creol... Martin Steffen (UiO) Models of Concurrency / 32

15 RPC: modul, prosedyre, prosess Modul : ny programmeringskonstruksjon for både prosedyrer, og prosesser. module M g r e n s e s n i t t for eksporterte operasjoner ; body v a r i a b e l d e k l a r a s j o n e r ; i n i t i a l i s e r i n g s k o d e ; prosedyrer for eksport erte operasjoner ; l okale prosesser ; end M Moduler kan være i ulike adresserom Prosedyrer og prosesser i M: kan dele variable utføres samtidig (eng. concurrent) må synkronisering for gjensidig utelukkelse kan kun kommunisere med prosesser i M ved prosedyrer eksportert av M Martin Steffen (UiO) Models of Concurrency / 32

16 RPC: operasjoner Deklarasjon av operasjon O: op O(formelle arg.) [ returns type ] ; Implementasjon av operasjon O: proc O(formelle arg.) [ returns variabel ] { lokale variabeldeklarasjoner; setninger } Kall av modul Ms operasjon O: call M.O(aktuelle arg.) Prosesser : som før. Martin Steffen (UiO) Models of Concurrency / 32

17 Eksempel: Klokketjener (RPC) Problem: Lage modul som tilbyr klokke-tjenester til prosesser i andre moduler. Klokketjeneren har to operasjoner synlige for klientprosesser: get time() returns int returnerer klokkeslettet delay(int interval) lar prosess sove i spesifisert antall tidsenheter Flere klienter dvs. flere prosesser kan utføre operasjoner samtidig behov for beskyttelse av variable. Klokketjeneren har en intern prosess som får avbrudd (eng. interrupts) fra en maskinvareklokke og oppdaterer sin klokke. Martin Steffen (UiO) Models of Concurrency / 32

18 Kode: Klokketjener (RPC 1) module TimeServ er op get time () returns i n t ; op delay ( i nt i n t e r v a l ) ; body i nt tod = 0; # k l o k k e s l e t t e t sem m = 1; # for gj e n s i d i g u telukkelse sem d [ n ] = ([ n ] 0); # for ventende prose sser queue of ( i nt waketime, i nt p r ocess i d ) napq ; ## naar m == 1, tod < waketime for ventende prosesser proc get time () r eturns time { time = tod ; } proc delay ( i n t i n t e r v a l ) { P(m) ; # anta myid unik og i [0, n 1] i n t waketime = tod + i n t e r v a l ; s ett inn ( waketime, myid) paa r e t t sted i napq ; V(m) ; P(d [ myid ] ) ; } process Clock.... end TimeServ er # vent paa aa b l i vekket Martin Steffen (UiO) Models of Concurrency / 32

19 Kode: Klokketjener (RPC 2) process Clock { i n t id ; s t a r t maskinvareklokka ; while ( true ) { vent paa avbrudd, og r e s t a r t maskinvareklokka tod = tod + 1; P(m) ; # mutex while ( tod >= minste waketime i napq) { f j e r n ( waketime, id ) fra napq ; V(d [ id ] ) ; } V(m) ; } } end TimeServer # Fig. 8.1 i Andrews ( f e i l r e t t e t ) # vekk prosess # mutex Martin Steffen (UiO) Models of Concurrency / 32

20 Rendezvous RPC: Tilbyr intermodul-kommunikasjon Programmeren må lage synkronisering eksplisitt Rendezvous: Kjent fra språket Ada (US DoD) Kombinerer kommunikasjon mellom og synkronisering av prosesser Lager ikke ny prosess ved kall. I stedet: gjør rendezvous med eksisterende prosess Operasjoner utføres én av gangen synch send og receive kan betraktes som primitiv rendezvous. Martin Steffen (UiO) Models of Concurrency / 32

21 Rendezvous: hovedidé kallende prosess paa maskin A kalt prosess paa maskin B op foo(formals); # eksisterende prosess call foo(args); -----> in foo(formals) -> BODY;... <----- ni Martin Steffen (UiO) Models of Concurrency / 32

22 Rendezvous: modul-deklarasjon module M op O 1 ( typer ) ;... op O n ( typer ) ; body process P 1 { v a r i a b e l d e k l a r a s j on e r ; while ( true ) in O 1 ( v a r i a b l e ) and B 1 > S 1 ;... [ ] O n ( v a r i a b l e ) and B 1 > S n ; ni }... andre prosesse r end M Martin Steffen (UiO) Models of Concurrency / 32

23 Rendevous: uttrykkssyntaks Kall: c a l l O i (expr 1,..., expr m ) ; Innputt-setning, serie av guarde de uttrykk: in O 1 (v 1,...v m1 ) and B 1 > S 1 ;... [ ] O n(v 1,... v mn ) and B n > S n ; ni Bestanddeler i guard: and B i synkroniseringsuttrykk (valgfri) S i setninger (1 eller flere) Variablene v 1,...,v mi kan refereres av B i og leses/skrives av S i. Martin Steffen (UiO) Models of Concurrency / 32

24 Rendezvous: semantikk for innputt-setningen Gitt følgende: in... [ ] O i (v i,..., v mi ) and B i > S i ;... ni Guard en slår til når O i kalles og B i sann (eller utelatt). Utførelse av in-setningen: Blokkerer til guard for en operasjon slår til Hvis flere guard er slår til, betjen det eldste kallet Verdier returneres til kaller Så er call- og in-setningene ferdige Martin Steffen (UiO) Models of Concurrency / 32

25 Eksempel: begrenset buffer (rendezvous) module BoundedBuf f er op deposit ( elem ), fetch ( r e s u l t elem ) ; body process Buffer { elem buf [ n ] ; i n t front = 0, rear = 0, count = 0; while ( true ) in deposit ( item ) and count < n > buf [ rear ] = item ; count++; rear = ( rear +1) mod n ; [ ] fetch ( item ) and count > 0 > item = buf [ front ] ; count ; f ront = ( front +1) mod n ; ni } end BoundedBuffer # Fig. 8.5 i Andrews ( modulo navn ) Martin Steffen (UiO) Models of Concurrency / 32

26 Eksempel: klokketjener (rendezvous) module TimeServ er op get time () returns i n t ; op delay ( i nt ) ; # NB: absolutt tid som argument op t i ck ( ) ; # k a l l e s ved timer s t y r t avbrudd body process Timer { i n t tod = 0; s t a r t maskinvare timer ; while ( true ) in get time () r eturns time > time = tod ; [ ] delay ( waketime ) and waketime <= tod > skip ; [ ] t i c k () > { tod++; r e s t a r t maskinvare timer &; ni } end TimeServer # Fig. 8.7 i Andrews Martin Steffen (UiO) Models of Concurrency / 32

27 RPC, rendezvous og meldingsutveksling Programmerer nå med blanding av primitiver: forespørsel håndtering effekt call proc prosedyrekall (RPC) call in rendezvous send proc dynamisk prosess-laging send in asynkron meldingsutveksling Martin Steffen (UiO) Models of Concurrency / 32

28 RPC, rendezvous og meldingsutveksling Programmerer nå med blanding av primitiver: forespørsel håndtering effekt call proc prosedyrekall (RPC) call in rendezvous send proc dynamisk prosess-laging send in asynkron meldingsutveksling i tilleg (ikke i Andrews) asynkron prosedyrekall, wait-by-necessity, futures Martin Steffen (UiO) Models of Concurrency / 32

29 Rendezvous, meldingsutveksling og semaforer sammenhenger Sammenligning av innputt-setning og receive: in O(a 1,...,a n ) -> v 1 =a 1,...,v n =a n ni receive O(v 1,...,v n ) Sammenligning av meldingsutveksling og semaforer: send O() og receive O() V(O) og P(O) Martin Steffen (UiO) Models of Concurrency / 32

30 Eksempel: begrenset buffer (igjen) module BoundedBuf f er op deposit ( elem ), fetch ( r e s u l t elem ) ; body elem buf [ n ] ; i nt front = 0, rear = 0; # l okale operasjoner som s imulerer semaforer op empty (), f u l l (), mutexd (), mutexf ( ) ; send mutexd ( ) ; send mutexf ( ) ; # i n i t. semaforer t i l 1 for [ i = 1 to n ] # i n i t. empty semaforen t i l n send empty ( ) ; proc deposit ( item ) { r eceive empty ( ) ; r eceive mutexd ( ) ; buf [ rear ] = item ; rea r = ( r ear +1) mod n ; send mutexd ( ) ; send f u l l ( ) ; } proc fetch ( item ) { r eceive f u l l ( ) ; r e ceive mutexf ( ) ; item = buf [ front ] ; front = ( front +1) mod n ; send mutexf ( ) ; send empty ( ) ; } end BoundedBuffer # Fig i Andrews ( modulo navn ) Martin Steffen (UiO) Models of Concurrency / 32

31 Primitivet?O i rendezvous Nytt primitiv på operasjoner, jf. empty(...) for bet.var. og kanaler.?o betyr antall utestående forespørsler på operasjon O. Nyttig i innputt-setningen for å gi prioritet: in O 1 (...) -> S 1 ; [] O 2 (...) and?o 1 == 0 -> S 2 ; ni Her prioriteres O 1 over O 2. Martin Steffen (UiO) Models of Concurrency / 32

32 Lesere og skrivere, beskyttet adgang module ReadersWriters op read ( r e s u l t types ) ; # bruker RPC op write ( types ) ; # bruker rendezvous body op s tartread (), endread ( ) ; # l o kale op.... databasen (DB )... ; proc read ( vars ) { c a l l s tartread ( ) ; # faa leseadgang... l e s vars fra DB... ; send endread ( ) ; # f r i g i DB } process Writer { i n t nr = 0; while ( true ) in s tartread () > nr++; [ ] endread () > nr ; [ ] write ( vars ) and nr == 0 >... s k r i v vars t i l DB... ; ni } end ReadersWriters Martin Steffen (UiO) Models of Concurrency / 32

33 Lesere og skrivere: preferanse skr. module ReadersWriters op read ( r e s u l t types ) ; # bruker RPC op write ( types ) ; # bruker rendezvous body op s tartread (), endread ( ) ; # l o kale op.... databasen (DB )... ; proc read ( vars ) { c a l l s tartread ( ) ; # faa leseadgang... l e s vars fra DB... ; send endread ( ) ; # f r i g i DB } process Writer { i n t nr = 0; while ( true ) in s tartread () and? write == 0& > nr++; [ ] endread () > nr ; [ ] write ( vars ) and nr == 0 >... s k r i v vars t i l DB... ; ni } end ReadersWriters Martin Steffen (UiO) Models of Concurrency / 32

34 References I [1] G. R. Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, Martin Steffen (UiO) Models of Concurrency / 32

Operativsystemer, prosesser og tråder

Operativsystemer, prosesser og tråder Dagens program Grunnleggende tråd-programmering i Java: Java-tråder: definisjoner, egenskaper Interferens Låsing og synkronisering Venting og signallering Løpende eksempel: lesere og skrivere Erfaringer

Detaljer

INF3140 Modeller for parallellitet INF3140/4140: Monitorer

INF3140 Modeller for parallellitet INF3140/4140: Monitorer INF3140/4140: Monitorer Uke 6, side 1. Monitor Programmoduler med mer struktur enn semaforer Monitorer er en mekanisme for data-abstraksjon Data i monitor er innkapslet og manipuleres vha. monitorprosedyrer

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: December 16th. 2005 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 11 sider. Vedlegg: INF3140/4140 Models of Concurrency

Detaljer

Fra sekvensielt til parallelt

Fra sekvensielt til parallelt 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)

Detaljer

Meldingsutveksling. Martin Steffen 1. University of Oslo, Norway INF3140. Høst 2007

Meldingsutveksling. Martin Steffen 1. University of Oslo, Norway INF3140. Høst 2007 Martin Steffen 1 University of Oslo, Norway INF3140 Høst 2007 University of Oslo, Norway INF3140 Høst 2007 2007-10-24 Martin Steffen 1 The following slides come at week 8. This lection opens the second

Detaljer

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2 INF2810: Funksjonell Programmering En metasirkulær evaluator, del 2 Stephan Oepen & Erik Velldal Universitetet i Oslo 03. mai 2013 Tema 2 Forrige uke SICP 4.1. Structure and interpretation of computer

Detaljer

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2 INF2810: Funksjonell Programmering En metasirkulær evaluator, del 2 Stephan Oepen & Erik Velldal Universitetet i Oslo 03. mai 2013 Tema 2 Forrige uke SICP 4.1. Structure and interpretation of computer

Detaljer

INF4140 MODELLER FOR PARALLELLITET. PMA-gruppen. Institutt for informatikk Universitetet i Oslo.

INF4140 MODELLER FOR PARALLELLITET. PMA-gruppen. Institutt for informatikk Universitetet i Oslo. INF4140 MODELLER FOR PARALLELLITET PMA-gruppen Institutt for informatikk Universitetet i Oslo http://www.ifi.uio.no/~pma (versjon 27.8.08) INF 4140 H08 Uke 1, side 1. Modeller for parallellitet Forelesere

Detaljer

Fra sekvensielt til parallelt

Fra sekvensielt til parallelt 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)

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2 INF2810: Funksjonell programmering INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme, del 2 Erik Velldal Universitetet i Oslo 7. mai 2015 Tema Forrige uke SICP 4.1. Structure and interpretation

Detaljer

Mer om C programmering og cuncurrency

Mer om C programmering og cuncurrency Mer om C programmering og cuncurrency Lars Vidar Magnusson September 23, 2011 Lars Vidar Magnusson () Forelesning i Operativsystemer 20.09.2011 September 23, 2011 1 / 19 Oversikt Mer om C programmering

Detaljer

INF2810: Funksjonell Programmering. Kommentarer til prøveeksamen

INF2810: Funksjonell Programmering. Kommentarer til prøveeksamen INF2810: Funksjonell programmering INF2810: Funksjonell Programmering Kommentarer til prøveeksamen Erik Velldal Universitetet i Oslo 1: Grunnleggende (6 poeng)? (define foo '(a b))? (define bar foo)? (set!

Detaljer

Hjemmeeksamen 2 i INF3110/4110

Hjemmeeksamen 2 i INF3110/4110 Hjemmeeksamen 2 i INF3110/4110 Innleveringsfrist: onsdag 19. november kl. 1400 Innlevering Besvarelsen av oppgave 2,3,4 og 5 skal leveres skriftlig på papir i IFI-ekspedisjonen. Merk denne med navn, kurskode,

Detaljer

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28 Tråder Lars Vidar Magnusson October 11, 2011 Lars Vidar Magnusson () Forelesning i Operativsystemer 09.09.2011 October 11, 2011 1 / 28 Oversikt Tråder 1 Tråder Introduksjon Multithreading Prosesser og

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2 INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme, del 2 Erik Velldal Universitetet i Oslo 4. mai 2017 Tema 2 Forrige uke SICP 4.1. Structure and interpretation of computer programs Metacircular

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2 INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme, del 2 Erik Velldal Universitetet i Oslo 4. mai 2017 Tema 2 Forrige uke SICP 4.1. Structure and interpretation of computer programs Metacircular

Detaljer

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

Forelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy Forelesning III Kap 8 & 7; Dagsplan Moral: Gjenbruk Kap 8: Shared variable-based synchronization and communication Condition synchronization Mutual Exclution Conditional Critical Regions Suspend & Resume

Detaljer

Plan. Oppgaver og repetisjon Eksempler med fikspunkt og induksjon: 1. sortering 2. divisjon 3. Heis? IN 315: Foilsett 9: Unity: Arkitekturer

Plan. Oppgaver og repetisjon Eksempler med fikspunkt og induksjon: 1. sortering 2. divisjon 3. Heis? IN 315: Foilsett 9: Unity: Arkitekturer Plan Tema: Ulike arkitekturer og avbildninger 1. asynkron arkitektur med felles variable 2. synkron arkitektur med felles variable 3. distribuert arkitektur med kanal-kommunikasjon 4. program-skjemaer

Detaljer

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk INF1010 11. mai 2017 Monitorer med kritiske regioner og passive venting innbygget i Java - Kommunikasjon mellom prosesser i Java (Ikke pensum i INF1010) Stein Gjessing Universitetet i Oslo 1 Repetisjon:

Detaljer

INF våren 2017

INF våren 2017 INF1010 - våren 2017 Om Java Objekter og klasser Både for deg som kan og for deg som ikke kan Java Stein Gjessing Universitetet i Oslo Ny versjon etter forlesningen der tre meningsløse private modifikatorer

Detaljer

Kort notat om parallellstyring IN147

Kort notat om parallellstyring IN147 Kort notat om parallellstyring IN147 Kristin Skar 18. mai 2001 1 Kommunikasjon mellom prosesser Mange problemer man kommer borti kan kreve en paralell løsning: Man kan ha behov for økt hastighet, og dermed

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum 1 TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum 2 Læringsmål Mål Introduksjon til filer (som inndata og utdata) Å bruke

Detaljer

IN våren 2018 Tirsdag 16. januar

IN våren 2018 Tirsdag 16. januar IN1010 - våren 2018 Tirsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

IN våren 2019 Onsdag 16. januar

IN våren 2019 Onsdag 16. januar IN1010 - våren 2019 Onsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme Erik Velldal Universitetet i Oslo 27. april 2017 Tema 2 Forrige forelesning Strømmer og utsatt evaluering Kort om makroer I dag Kap. 4 Metasirkulær

Detaljer

RM-ODP og Multimedia middleware (M3W):

RM-ODP og Multimedia middleware (M3W): RM-ODP og Multimedia middleware (M3W): INF 5040 høst 2003 foreleser: Frank Eliassen SRL & Ifi/UiO 1 Litteratur Gordon Blair, Jean-Bernard Stefani, Distributed Processing and Multimedia, Addison-Wesley

Detaljer

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

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering? Dagens tema Dagens tema Kildekode Hva er kompilering? Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Anta at vi lager dette lille

Detaljer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme INF2810: Funksjonell Programmering En Scheme-evaluator i Scheme Erik Velldal Universitetet i Oslo 19. april 2016 Tema 2 Forrige uke Strømmer og utsatt evaluering Kort om makroer I dag Kap. 4 Metasirkulær

Detaljer

Øving i Tornado og VxWorks

Øving i Tornado og VxWorks Øving 5 Øving i Tornado og VxWorks Innledning Denne øvingen går ut på å programmere for et målsystem som benytter sanntidsoperativsystemet VxWorks. Til dette benyttes utviklingssystemet Tornado fra WindRiver.

Detaljer

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse Innhold Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer Prinsipper for synkronisering av felles hukommelse Multiprosessorer koblet sammen av én buss 02.05 2001 Parallelle

Detaljer

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

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon Forelesere: Velkommen til INF-1060 Introduksjon til operativsystemer og datakommunikasjon Pål Halvorsen (paalh@ifi.uio.no) Nettverk og Distribuerte systemer (ND) (ved Simula) Kjell Åge Bringsrud (kjellb@ifi.uio.no)

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Programmering i C++ Løsningsforslag Eksamen høsten 2005 Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det

Detaljer

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer INF3430/4430 Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer 19.09.2006 Agenda Funksjoner og operatorer Prosedyrer Begrepet overload Biblioteker Package/package body Standard

Detaljer

INF2810: Funksjonell Programmering. En metasirkulær evaluator

INF2810: Funksjonell Programmering. En metasirkulær evaluator INF2810: Funksjonell Programmering En metasirkulær evaluator Stephan Oepen & Erik Velldal Universitetet i Oslo 26. april 2013 Tema 2 Forrige uke Strømmer og utsatt evaluering Memoisering Kort om makroer

Detaljer

Forslag til løsning på oppgavesett for uke 40

Forslag til løsning på oppgavesett for uke 40 Forslag til løsning på oppgavesett for uke 40 Lars Vidar Magnusson November 3, 2011 1 Tråder 1. Lag et program som starter tre ulike tråder (forskjellige trådfunksjoner) som hver av skriver ut en melding

Detaljer

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

Plan for dagen. Kræsj-kurs i sanntidsprogrammering. Måter å tenke på. Programmering intro. Tråder & synkronisering Kræsj-kurs i sanntidsprogrammering 1. Amanuensis Sverre Hendseth Teknisk Kybernetikk. http://www.itk.ntnu.no/ansatte/hendseth_sverre/ Plan for dagen Programmering intro Tråder & Synkronisering Non-preemptive

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 Eksamensdag : Tirsdag 6. juni 2006 Tid for eksamen : 09.00-12.00 Oppgavesettet er på : 5 sider Vedlegg : Intet Tillatte

Detaljer

INF2810: Funksjonell Programmering. En metasirkulær evaluator

INF2810: Funksjonell Programmering. En metasirkulær evaluator INF2810: Funksjonell Programmering En metasirkulær evaluator Stephan Oepen & Erik Velldal Universitetet i Oslo 26. april 2013 Tema 2 Forrige uke Strømmer og utsatt evaluering Memoisering Kort om makroer

Detaljer

Faglig kontakt under eksamen: Orestis Gkorgkas

Faglig kontakt under eksamen: Orestis Gkorgkas Side 1 av 5 Norges teknisk-naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Løsningsforslag til EKSAMENSOPPGAVE I FAG TDT4186 OPERATIVSYSTEMER Faglig kontakt under eksamen:

Detaljer

Fakultet for informasjonsteknologi,

Fakultet for informasjonsteknologi, Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap Kontinuasjonsløsning

Detaljer

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

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon Velkommen til INF-1060 Introduksjon til operativsystemer og datakommunikasjon 21.08.2007 INF1060 1 Forelesere: Pål Halvorsen (paalh@ifi.uio.no) Nettverk og Distribuerte systemer (ND) (ved Simula) Kjell

Detaljer

Moderne Funksjonell Programmering i Lisp

Moderne Funksjonell Programmering i Lisp Moderne Funksjonell Programmering i Lisp Lars Tveito 11. mai, 2017 Institutt for Informatikk, University of Oslo Introduksjon Abstract Vi skal utforske programmeringsspråket Clojure, en moderne Lisp-dialekt.

Detaljer

Rekursjon og lister. Stephan Oepen & Erik Velldal. 1. februar, Universitetet i Oslo

Rekursjon og lister. Stephan Oepen & Erik Velldal. 1. februar, Universitetet i Oslo INF2810: Funksjonell programmering Rekursjon og lister Stephan Oepen & Erik Velldal Universitetet i Oslo 1. februar, 2013 Agenda 2 Forrige uke Scheme Substitusjonsmodellen Blokkstruktur Predikater Kondisjonale

Detaljer

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Dagens tema Kjøresystemer (Ghezzi&Jazayeri.6,.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/5 Repetisjon: Statiske språk uten rekursive

Detaljer

TDT4258 Eksamen vår 2013

TDT4258 Eksamen vår 2013 Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Side 1 av 8 TDT4258 Eksamen vår 2013 Løsningsforslag Oppgave 1 Flervalgsoppgave (16 poeng) Du får 2 poeng

Detaljer

Oppgave 1 JK-flip-flop (Total vekt 20%)

Oppgave 1 JK-flip-flop (Total vekt 20%) UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 147 Program- og maskinvare Eksamensdag: 12. mai 1997 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 6 sider. Vedlegg: Tillatte

Detaljer

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:

Detaljer

Viktig. Rettet i koden. Obligatorisk oppgave 2 Litt flere detaljer om semantikksjekk og kodegenerering. Semantikksjekk

Viktig. Rettet i koden. Obligatorisk oppgave 2 Litt flere detaljer om semantikksjekk og kodegenerering. Semantikksjekk Obligatorisk oppgave 2 Litt flere detaljer om semantikksjekk og kodegenerering Viktig Ny patch (patch_oblig2.zip) er lagt ut (15/4) Oblig 1 vil bli rettet denne uken Sjekk om det er registrert at den er

Detaljer

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer

Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer Institutt for datateknikk og informasjonsvitenskap Eksamensoppgave i TDT4258 Energieffektive datamaskinsystemer Faglig kontakt under eksamen: Asbjørn Djupdal Tlf.: 909 39452 Eksamensdato: 29. mai 2013

Detaljer

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon Velkommen til INF-1060 Introduksjon til operativsystemer og datakommunikasjon 22.08.12 INF1060 1 Forelesere: Pål Halvorsen (paalh@ifi.uio.no) Nettverk og Distribuerte systemer (ND) (ved Simula) Tor Skeie

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger

Detaljer

Semantisk Analyse del I

Semantisk Analyse del I Semantisk Analyse del I Attributtgrammatikker Kapittel 6.1-6.2 26.02.2013 1 Statisk semantisk analyse kapittel 6: Innhold Generelt om statisk semantisk analyse Attributt-grammatikker (kapittel 6.1-6.2)

Detaljer

Kap 2: Løkker og lister

Kap 2: Løkker og lister Kap 2: Løkker og lister Ole Christian Lingjærde, Inst for Informatikk, UiO 26-30 August, 2019 (Del 2 av 2) Forrige forelesning på en foil Formatert utskrift: %-operator og f-strings To typer løkker: while-løkker

Detaljer

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer INF3430 Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer Innhold Funksjoner og operatorer Prosedyrer Begrepet overload Biblioteker Package/package body Standard biblioteker

Detaljer

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015 Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den

Detaljer

Oversikt Kompilering Syntaksanalyse Java Feilsjekking Oppsummering

Oversikt Kompilering Syntaksanalyse Java Feilsjekking Oppsummering Dagens tema Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at vi lager dette lille

Detaljer

C:\web\service-elektronikk\fagprover\Anders\flashlite_program_Anders.pas Page 1

C:\web\service-elektronikk\fagprover\Anders\flashlite_program_Anders.pas Page 1 C:\web\service-elektronikk\fagprover\Anders\flashlite_program_Anders.pas Page 1 { F A G P R Ø V E N V Å R E N 1 9 9 9 Universitetet i Bergen Institutt for den Faste Jords Fysikk A D - K O R T P R O G R

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Stephan Oepen Universitetet i Oslo 9. februar 2015 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt. Side 1 av 8 Norges teknisk-naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Løsningsforslag til EKSAMENSOPPGAVE I FAG TDT4186 OPERATIVSYSTEMER Versjon: 13.des 2011 Faglig

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Stephan Oepen Universitetet i Oslo 9. februar 2015 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens

Detaljer

Obligatorisk Innlevering 2

Obligatorisk Innlevering 2 Obligatorisk Innlevering 2 INF5110 - Kompilatorteknikk Våren 2017 Frist 07.05.2017 23:59 Dette er den andre av to oppgaver våren 2017. Den bygger videre på det som er gjort i den første innleveringen.

Detaljer

Dagens tema: 12 gode råd for en kompilatorskriver

Dagens tema: 12 gode råd for en kompilatorskriver Dagens tema: 12 gode råd for en kompilatorskriver Hvordan sjekke navn? Testutskrifter 12 gode råd Hva skal gjøres med navn? Sjekking av navn En kompilator må også sjekke riktig navnebruk: Det må ikke forekomme

Detaljer

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007.

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007. Object interaction Grunnleggende programmering i Java Monica Strand 3. september 2007 1 Innhold Til nå: Hva objekter er og hvordan de implementeres I klassedefinisjonene: klassevariable (fields), konstruktører

Detaljer

Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre

Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre Ark 1 av 12 Forelesning 12.5.1999 Operativsystemer I kurset har vi fokusert på UNIX, men prinsippene gjelder i større eller

Detaljer

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen Eivind Gard Lund 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen Informasjon Semantikksjekk Kodegenerering Oblig 2 tilgjengelig på kurssiden Bygger på deres oblig 1 kode. Det er lagt ut

Detaljer

INF2810: Funksjonell Programmering. Strømmer og utsatt evaluering

INF2810: Funksjonell Programmering. Strømmer og utsatt evaluering INF2810: Funksjonell Programmering Strømmer og utsatt evaluering Stephan Oepen Universitetet i Oslo 30. mars 2017 Forrige forelesning 2 Mer om (prosedyre)navn, bindinger, og verditilordning Nok en ny abstrakt

Detaljer

INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt

INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt INF5110 Obligatorisk Oppgave 2 del 2 Andreas Svendsen SINTEF 23. April 2009 Oversikt Tilbakeblikk på oppgaven Eksempel på sjekk av semantikk Eksempel på kodegenerering Nødvendige instruksjoner for IF-noden

Detaljer

Rekursjon som programmeringsteknikk

Rekursjon som programmeringsteknikk Rekursjon Kap.7 Sist oppdatert 15.02.10 Rekursjon som programmeringsteknikk 10-1 Rekursiv tenkning Rekursjon er en programmeringsteknikk der en metode kan kalle seg selv for å løse problemet. En rekursiv

Detaljer

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

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer INF3430/4430 Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer 2005-10-26 Agenda Funksjoner og operatorer Prosedyrer Begrepet overload Biblioteker Package/package body Standard

Detaljer

Diverse eksamensgaver

Diverse eksamensgaver Diverse eksamensgaver Noen har fått den idé å lage et språk hvor klasser kan ha noe tilsvarende byvalue-result -parametere. Klasser har ingen konstruktører, og by-value-result parametere spesifiseres som

Detaljer

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare Distribuerte objekter og objekt-basert mellomvare INF 5040 H2004 foreleser: Frank Eliassen Frank Eliassen, SRL & Ifi/UiO 1 Hvorfor objekt-basert distribuert mellomvare?! Innkapsling " naturlig tilnærming

Detaljer

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon Oversikt INF1000 Uke 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning Uttrykk

Detaljer

INF2810: Funksjonell Programmering. Muterbare data

INF2810: Funksjonell Programmering. Muterbare data INF2810: Funksjonell Programmering Muterbare data Stephan Oepen Universitetet i Oslo 15. mars 2016 Agenda Forrige uke Prosedyrebasert objektorientering Lokale tilstandsvariabler Innkapsling + set! Eksempel:

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 - Kompilatorteknikk Eksamensdag : Onsdag 4. juni 2008 Tid for eksamen : 14.30-17.30 Oppgavesettet er på : 7 sider Vedlegg

Detaljer

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare Distribuerte objekter og objekt-basert mellomvare INF 5040 H2006 foreleser: Frank Eliassen INF5040 Frank Eliassen 1 Hvorfor objekt-basert distribuert mellomvare? Innkapsling naturlig tilnærming til utvikling

Detaljer

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon INF2810: Funksjonell Programmering Dataabstraksjon og Trerekursjon Stephan Oepen & Erik Velldal Universitetet i Oslo 15. februar, 2013 Tema 2 Forrige uke Høyere-ordens prosedyrer: Prosedyrer som argumenter

Detaljer

INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon.

INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon. INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon. Stephan Oepen & Erik Velldal Universitetet i Oslo 25. januar, 2013 På blokka 2 Forrige uke Introduksjon og oversikt Funksjonell

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Fredag 4. desember 2015 Tid for eksamen: 14.30 (4 timer)

Detaljer

Lisp 5: Makroer. Programvareverkstedet. 29. april 2010

Lisp 5: Makroer. Programvareverkstedet. 29. april 2010 Eirik Alderslyst Nygaard Øystein Ingmar Skartsæterhagen Programvareverkstedet 29. april 2010 (Introduksjon: Litt om evaluering) (Funksjonskall: Alle argumentformene evalueres først, så kalles funksjonen

Detaljer

Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser?

Samtidige prosesser. Prosessor modus. Hvordan kan OS effektivt kontrollere brukerprosesser? Hvordan kan OS. kontrollere brukerprosesser? Samtidige To (tasks) må ikke ødelegge for hverandre: skrive til samme minne kapre for mye CPU-tid få systemet til å henge Beste løsning: All makt til OS = Preemptive multitasking Preemptive = rettighetsfordelende.

Detaljer

Presentasjon av: Erling Ringen Elvsrud Nils Fredrik Gjerull Håkon Torjus Bommen

Presentasjon av: Erling Ringen Elvsrud Nils Fredrik Gjerull Håkon Torjus Bommen SUMO Presentasjon av: Erling Ringen Elvsrud Nils Fredrik Gjerull Håkon Torjus Bommen Innhold Hva er SUMO Programmeringsmodellen Anvendelser Sammenligning med CORBA Systemstøtte Oppsummering Hva er SUMO

Detaljer

Distribuerte objekter og objekt-basert mellomvare

Distribuerte objekter og objekt-basert mellomvare Distribuerte objekter og objekt-basert mellomvare INF5040 foreleser: Olav Lysne Frank Eliassen, SRL & Ifi/UiO 1 Hvorfor objekt-basert distribuert mellomvare? Innkapsling naturlig tilnærming til utvikling

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider: Fra sist JSP - 2 Installasjon av Web-tjener Et enkelt JSP-script HTML statisk Forms Tags Ønsker dynamiske nettsider: Klientside-script/programmering Javascript, vbscript, applets Tjenerside-script/programmering

Detaljer

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå. Repetisjon Skrevet av: Ole Kristian Pedersen, Kodeklubben Trondheim Kurs: Python Tema: Tekstbasert Fag: Programmering Klassetrinn: 8.-10. klasse Introduksjon I denne oppgaven skal vi repetere litt Python-syntaks,

Detaljer

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy Kapittel 13 Advanced Hypertext Implementation Martin Lie Ole Kristian Heggøy 08.11.04 Forbedring av arkitektur Problem med alt i ett -løsning: Spredning av forretningslogikk. Avhengighet mellom presentasjonssider

Detaljer

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer INF3430/4431 Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer Innhold Funksjoner og operatorer Prosedyrer Begrepet overload Biblioteker Package/package body Standard biblioteker

Detaljer

MPIntroduksjon Et eksempel

MPIntroduksjon Et eksempel MPIntroduksjon Et eksempel Jon Nilsen Kjerne- og energigruppen MPIntro p.1/17 Litt om parallisering Grunnleggende ideer: Vil ha raskere og større beregninger parallellisering. Flere prosessorer brukes

Detaljer

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering INF2810: Funksjonell Programmering Høyereordens prosedyrer, lambda og lokale variabler Erik Velldal Universitetet i Oslo 9. februar 2017 Tema 2 Forrige uke Lister og listerekursjon quote Høyereordens prosedyrer

Detaljer

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller. Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer