INF3140 Modeller for parallellitet INF3140/4140: Semaforer

Størrelse: px
Begynne med side:

Download "INF3140 Modeller for parallellitet INF3140/4140: Semaforer"

Transkript

1 INF3140/4140: Semaforer Uke 3, side 1.

2 I dag Symmetriske barrierer Semaforer Verktøy for synkroniseringsprotokoller Skal se flere klassiske problemstillinger Uke 3, side 2.

3 Symmetriske barrierer Alle nodene spiller samme rolle (ingen egen Koordinator-prosess) Mer effektiv hvis arbeidsoppgavene tar ca. like lang tid Arbeiderne eksekverer samme kode n-prosess barriere bygges opp v.h.a. 2-prosess barrierer: Hver prosess har ett flagg som settes når man kommer til barrieren Venter på at den andre sitt flagg skal settes før begge forsetter Uke 3, side 3.

4 Symmetriske barrierer int arrive1 = 0, arrive2 = 0 W1 W2 < await (arrive1 == 0);> < await (arrive2 == 0);> arrive1 = 1; arrive2 = 1; < await (arrive2 == 1);> < await (arrive1 == 1);> arrive2 = 0; arrive1 = 0; Hvis prosessene har flere synkroniseringspunkter, må W1 vente til W2 har nullstiltarrive1 før den kan ankomme neste barriere. Generalisering Til n-prosesser ved kombinasjon av 2-prosess barrierer Beste løsning: Binære kombinasjoner som gir barrierer på log 2 n trinn Hver prosess synkroniserer med forskjellige prosesser i hvert trinn Uke 3, side 4.

5 Implementasjon av KR KR kan implementeres ved < await (!lock) lock = true;> Inngangsportal kritiske programsetninger < lock = false;> Utgangsportal Implementasjon ved spinnelås: while (TS(lock)) skip; Implementerer < await (!lock) lock = true;> Svakhet ved denne tilnærmingen: Busy waiting protokoller blir fort kompliserte Uklart skille mellom bruk av variable til synkronisering og utregning Busy waiting lite effektivt hvis færre prosessorer enn prosesser Uke 3, side 5.

6 Semaforer Ønskelig med spesielt verktøy for synkroniseringsprotokoller Semaforer : Første tilnærming til dette problemet (Dijkstra 1968) Gjør det lett å beskytte KR Disiplinert metode for å implementere signallering og skedulering Inkludert i alle standard biblioteker for tråder og parallell programmering Kan implementeres på ulike måter, som busy waiting Uke 3, side 6.

7 Jernbanesemaforer Semaforkonseptet kommer fra jernbanen Jernbanesemaforer er signalleringsflagg langs togskinnene Gir beskjed om jernbanesporet er klart eller i bruk av et annet tog Programsemaforer Virker på samme måte Grunnleggende signalleringsmekanisme Kan brukes til å implementere mutex og betingelsessynkronisering. Uke 3, side 7.

8 Semaforer: konsept En semafor er en spesiell type programvariabel. Kan bare manipuleres ved to atomære operasjoner P : venter på signal (ønske om å passere) V : signaliserer en hendelse (frigi) Verdien til en semafor er et ikke-negativt heltall. Uke 3, side 8.

9 Semaforer: syntaks I språket deklareres og anvendes en semafor ved: sem s; Ved default initieresstil verdi 0, mulig å initiere semaforer til andre verdier. P(s) V(s) Inngangsprotokoll Implementasjon: < await (s>0) s = s-1; > Utgangsprotokoll Implementasjon: < s = s+1; > Uke 3, side 9.

10 Binær semafor Mulige verdier for semaforen: 0 og 1. Generell semafor Mulige verdier for semaforen: alle ikke-negative heltall Fairness Som for await-setninger. Hvis mange prosesser venter på å få utførep-operasjoner, vil de i de fleste språk bli vekket i samme rekkefølge som de ble satt til å vente. Uke 3, side 10.

11 Eksempel: Mutex Mutex implementert ved binær semafor: sem mutex = 1; process CS[i = 1 to n] { while (true) { P(mutex); KR V(mutex); Ikke KR Semaforenmutex er initiert til 1 og alltid P før V: Binær semafor Uke 3, side 11.

12 Delt binær semafor Delte binære semaforer implementerer mutex: Anta at vi er gitt mer enn én binær semafor Anta initielt at én av semaforene har verdi 1 og resten har verdi 0. Anta så at prosesser begynner med et kall tilppå en semafor og avslutter med et kall tilvpå en (annen) semafor. Da vil prosessene eksekvere i mutex: Hvis én prosess er i KR, vil alle semaforene ha verdi 0 og alle andre prosesser må vente før de kan fullføre sinp-operasjon. Uke 3, side 12.

13 Delt binær semafor (2) Ser på produsent / konsument eksemplet. Labuf være et buffer. En produsent gjør put -operasjoner påbuf. En konsument gjør get -operasjoner påbuf. Angir grenseverdiene tilbuf vha semaforer: sem empty = 1; sem full = 0; En produsent kan gjøre put -operasjoner når den kan passereempty. En konsument kan gjøre get -operasjoner når den kan passerefull. empty ogfull utgjør en delt binær semafor. Uke 3, side 13.

14 Eksempel: Produsent / Konsument Ser først på tilfellet med én plass i bufferet: typet buf; /* Buffer av en eller annen type T */ sem empty = 1, full = 0; process Producer{ while (true){. P(empty); buf = data; V(full); process Consumer{ while (true){. P(full); result = buf; V(empty); Uke 3, side 14.

15 Generalisering til flere plasser i bufferet (1) Eksempelet tvinger Produsent og Konsument til å holde samme fart. De må aksessere bufferet annenhver gang. Det er rett frem å generalisere til buffer av en gitt størrelse n. Bufferet implementerer en kø av verdier som er produsert, men ikke konsumert. Generelle semaforer holder orden på antall fulle og ledige plasser i bufferet. Lafront ogrear være heltall som hhv. peker til første plass i bufferet og til plassen etter siste verdi. Uke 3, side 15.

16 Generalisering til flere plasser i bufferet (2) Tilfellet med begrenset bufferstørrelse n: typet buf[n]; /* Array av en type T */ int front = 0, rear = 0; sem empty = n, full = 0; process Producer{ while (true){. P(empty); buf[rear] = data; rear = rear + 1 % n; V(full); process Consumer{ while (true){. P(full); result = buf[front]; front = front + 1 % n; V(empty); Uke 3, side 16.

17 Generalisering til mange prosesser (1) Anta nå at det er flere produsenter og konsumenter. Unngå at to produsenter skriver tilbuf[rear] førrear oppdateres: Flere produsenter kan ikke utføre put -operasjoner samtidig. Unngå at samme element leses to ganger: Flere konsumenter kan ikke utføre get -operasjoner samtidig. Dette løses ved å legge til to binære semaforer: mutexput ogmutexget. Uke 3, side 17.

18 Generalisering til mange prosesser (2) Programmet kombinerer nå 3 ulike synkroniseringsproblemer: produsent vs. konsument: empty ogfull produsent vs. produsent: mutexput konsument vs. konsument: mutexget De ulike synkroniseringsproblemene løses ved ulike semaforer. Uke 3, side 18.

19 Generalisering til mange prosesser (3) typet buf[t]; int front = 0, rear = 0; sem empty = n, full = 0, mutexput = 1, mutexget = 1; process Producer[i = 1 to M]{ while (true){. P(empty); P(mutexPut); buf[rear] = data; rear = rear + 1 % n; V(mutexPut); V(full); process Consumer[i = 1 to N]{ while (true){. P(full); P(mutexGet); result = buf[front]; front = front + 1 % n; V(mutexGet); V(empty); Uke 3, side 19.

20 Eksempel: Barrieresynkronisering Bruker delte binære semaforer som barrierer. sem arrive1 = 0, arrive2 = 0; process Arbeider1 {. V(arrive1); ankommer barrieren P(arrive2); venter på øvrige prosesser. process Arbeider2 {. V(arrive2); ankommer barrieren P(arrive1); venter på øvrige prosesser. Uke 3, side 20.

21 Eksempel: De spisende filosofer Fem filosofer sitter rundt et bord. Hver filosofer veksler mellom følgende to aktiviteter: tenke spise nudler Filosofene trenger to spisepinner for å kunne spise. Dessverre finnes bare 5 spisepinner, én mellom hvert par med filosofer. Uke 3, side 21.

22 De spisende filosofer (2) process Philosopher [i = 0 to 4] { while (true) { think; acquire chopsticks; eat; release chopsticks; Vi kan her se på spisepinnene som felles ressurser. Tenk på hver spisepinne som en lås til en kritisk region. En filosof kan ta en spisepinne ved å utføre enp-operasjon på den, og slippe den igjen ved å utføre env-operasjon. Vi lar filosofene plukke opp venstre spisepinne først og den høyre etterpå. Uke 3, side 22.

23 De spisende filosofer (3) sem chopstick[5] = ( [5] 1) process Philosopher [i = 0 to 4] { while (true) { think; P(chopstick[i]); P(chopstick[(i+1)%5]); eat; V(chopstick[i]; V(chopstick[(i+1)%5]); Hva med deadlock? Uke 3, side 23.

24 De spisende filosofer (4) For å unngå deadlock, lar vi Philosopher4 plukke opp høyre spisepinne først. sem chopstick[5] = ( [5] 1) process Philosopher [i = 0 to 3] { while (true) { think; P(chopstick[i]); P(chopstick[i+1]); eat; V(chopstick[i]; V(chopstick[i+1]); process Philosopher4 { while (true) { think; P(chopstick[0]); P(chopstick[4]); eat; V(chopstick[0]; V(chopstick[4]); Uke 3, side 24.

25 Eksekvering Det er installert en kompilator for språketmpd på linuxmaskinene på ifi. Startes med kommandoenmpd (Evnt. /store/bin/mpd) man mpd await-setninger er ikke støttet Semaforer er støttet! Sehttp:// for oversikt Uke 3, side 25.

26 Hello world Filenhello.mpd: resource hello() write("hello world.") end Inkludér alltid de magiske ordeneresource ogend Kompilering og kjøring: $ mpd -o hello hello.mpd $./hello Hello world. $ Uke 3, side 26.

27 De spisende filosofer resource phil() sem chopstick[0:4] = ([5] 1) process Philosopher [i = 0 to 3] { int eat = 0, think = 0; while (true) { think = think + 1; writes( Think,i,think); nap(200) # think; P(chopstick[i]); P(chopstick[i+1]); eat = eat + 1; writes( Eat,i,eat); nap(200) # eat; V(chopstick[i]); V(chopstick[i+1]); process Philosopher4 {... end Uke 3, side 27.

28 Leser og skriver problemet Klassisk synkroniseringsproblem Problembeskrivelse Leser- og skriverprosesser deler en felles ressurs (database). Leseres transaksjoner kan lese informasjon fra DB Skriveres transaksjoner kan lese og oppdatere informasjon i DB Antar at DB er initielt konsistent og at hver transaksjon isolert sett vedlikeholder konsistens. For å unngå interferens mellom transaksjonene, krever vi at Skrivere har eksklusiv tilgang til DB. når ingen skriver har tilgang, kan et vilkårlig antall lesere utføre sine transaksjoner samtidig. Uke 3, side 28.

29 Løsning ved Mutex (1) Tilnærming: DB som kritisk region Larw være en mutex semafor: sem rw = 1; sem rw = 1; process Leser [i = 1 to M] { while (true) {. P(rw); Les i DB V(rw); Men: Ønsker flere lesere samtidig process Skriver [i = 1 to N] { while (true) {. P(rw); Skriv i DB V(rw); Uke 3, side 29.

30 Løsning ved Mutex (2) Aksess for flere lesere Lesere må utelukke skrivere, men flere lesere samtidig er akseptabelt. Den første leseren tar låsen, påfølgende lesere går rett inn int nr = 0; sem rw = 1; # teller antall lesere # lås for leser / skriver eksklusjon process Leser [i = 1 to M] { while (true) {. < nr = nr + 1; if (nr == 1) P(rw); > Les i DB < nr = nr - 1; if (nr == 0) V(rw); > process Skriver [i = 1 to N] { while (true) {. P(rw); Skriv i DB V(rw); Uke 3, side 30.

31 Løsning ved Mutex (3) Implementasjon av leseren int nr = 0; sem rw = 1; sem mutexl = 1; # antall lesere # lås for leser / skriver eksklusjon # mutex for lesere process Leser [i = 1 to M] { while (true) {. P(mutexL); nr = nr + 1; if (nr == 1) P(rw); V(mutexL) Les i DB P(mutexL); nr = nr - 1; if (nr == 0) V(rw); V(mutexL) Bruker forskjellige semaforer til forskjellige synkroniseringsproblemer Uke 3, side 31.

32 Løsning ved Mutex (4) Preferanse for lesere Anta at en leser har aksess til DB. Hvis en ny leser ønsker aksess, vil denne få aksess til DB med en gang. Hvis både en leser og en skriver ønsker aksess, vil leseren få aksess med en gang mens skriveren må vente. En kontinuerlig strøm av lesere vil dermed effektivt blokkere for skrivertilgang til DB Denne løsningen er derfor ikke fair for skrivere. Uke 3, side 32.

33 Løsning med buffersynkronisering (1) Mutex-løsningen synkroniserte to uavhengige KR problemer leser vs. skriver leser vs. leser Nå skal vi i stedet bruke en delt binær semafor. Synkroniseringskravet for leser / skriver : en skriver trenger eksklusiv adgang, mange lesere kan ha adgang samtidig. Uke 3, side 33.

34 Løsning med buffersynkronisering (2) Global invariant Anta at vi har to tellere nr nw antallet lesere antallet skrivere Synkroniseringskravet kan formuleres som: RW: (nr == 0 or nw == 0) and nw <= 1 Hvis vi kan gjørerw til en global invariant, har vi løst leser / skriver problemet. Uke 3, side 34.

35 Løsning med buffersynkronisering (3) Telleroppdatering Da trenger vi kode for å oppdatere tellerne: Leser: Skriver: < nr = nr + 1; > < nw = nw + 1; > Lese i DB Skrive i DB < nr = nr - 1; > < nw = nw - 1; > Legger betingelser på de atomære aksjonene for å opprettholde invarianten. Før økning avnr: (nw == 0) Før økning avnw: (nr == 0 and nw == 0) Uke 3, side 35.

36 Løsning med buffersynkronisering (4) int nr = 0, nw = 0; ## RW: (nr == 0 or nw == 0 ) and nw <= 1 process Leser [i=1 to M] { while (true) {. <await (nw == 0) nr = nr + 1;> Lese i DB < nr = nr - 1; > process Skriver [i=1 to N] { while (true) {. <await (nr == 0 and nw == 0) nw = nw + 1;> Skrive i DB < nw = nw - 1; > Uke 3, side 36.

37 Løsning med buffersynkronisering (5) Delte binære semaforer Implementasjon avawait-setninger gjøres med delte binære semaforer. Kan brukes til å implementere vilkårlige synkroniseringsproblemer med forskjellige vakterb 1, B 2... Bruke en entry-semafor (e) initiert til 1 For hver vaktb i : assosier en teller og en delay-samafor, begge initiert til 0 Semaforen: oppholde prosessene som venter påb i Telleren: telle antall prosesser som venter påb i For leser/skriver eksemplet trenger vi da tre semaforer og to tellere: sem e = 1; sem r = 0; int dr = 0; # betingelse leser: nw == 0 sem w = 0; int dw = 0; # betingelse skriver: nr == 0 and nw == 0 Uke 3, side 37.

38 Løsning med buffersynkronisering (6) e, r ogwutgjør en delt binær semafor: Max én har verdien 1 Alle eksekveringsstier starter med P-operasjon og ender med V-operasjon Mutex Signalere slik at invarianten holder B i holder når en prosess starter KR fordi: enten prosessen sjekker det selv, eller prosessen signalleres bare nårb i holder Unngår deadlock fordi delay-semaforene signalleres bare når noen venter på dem (sjekkes v.h.a. tellerne) Trenger signalleringsmekanismesignal som sender signal til riktig semafor. Uke 3, side 38.

39 Løsning med buffersynkronisering (7) int nr = 0, nw = 0; int dr = 0; int dw = 0; sem e = 1; sem r = 0; sem w = 0; process Leser [i=1 to M] { # Inngangsbetingelse: nw == 0 while (true) {. # <await (nw == 0) nr = nr + 1;> P(e); if (nw>0) { dr=dr+1; V(e); P(r); nr=nr+1; SIGNAL; Lese i DB # < nr = nr - 1; > P(e); nr=nr-1; SIGNAL Uke 3, side 39.

40 Løsning med buffersynkronisering (8) process Skriver [i=1 to N] { # Inngangsbetingelse: nw == 0 and nr == 0 while (true) {. # <await (nr == 0 and nw == 0) nw = nw + 1; > P(e); if (nr> 0 or nw> 0) { dw=dw+1; V(e); P(w); nw = nw + 1; SIGNAL; Lese i DB # < nw = nw - 1; > P(e); nw = nw - 1; SIGNAL; Uke 3, side 40.

41 Løsning med buffersynkronisering (9) SIGNAL: if (nw == 0 and dr > 0) { dr = dr -1; V(r); elseif (nr == 0 and nw == 0 and dw > 0) { dw = dw -1; V(w); else V(e); # vekker leser # vekker skriver # slipper KR Koden kan forenkles i mange tilfeller Uke 3, side 41.

42 Delt Binær Semafor Boka kaller slik bruk av delt binær semafor for Passing the Baton Gjør det mulig å implementere vilkårlig synkroniseringsbetingelse Har fått navn p.g.a. signaleringsmekanismen Sender stafettpinnen videre til en ventende prosess slik at ventebetingelsen holder Hvis ingen venter eller kan slippe til, gjøres pinnen tilgjengelig for alle (V(e)) Skedulerings-strategier Løsningen vi har sett gir fremdeles preferanse til lesere. Imidlertid har vi eksplisitt kontroll med skedulering. F. eks. lett å endre slik at Skrivere har prioritet over lesere Lesere og skrivere har lik prioritet Uke 3, side 42.

INF3140 Modeller for parallellitet INF3140/4140: Låser og Barrierer

INF3140 Modeller for parallellitet INF3140/4140: Låser og Barrierer INF3140/4140: Låser og Barrierer Uke 2, side 1. Praktisk Obligatorisk oppgave 1 Er nå lagt ut. Merk: Frist fredag 21. sept. Guppelærer Mohammad Ali Norozi mohammno@ifi.uio.no Merk: Kun gruppe 1 åpen! Forelesningssted

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

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

INF4140: Låser og Barrierer (Locks and Barriers)

INF4140: Låser og Barrierer (Locks and Barriers) INF4140: Låser og Barrierer (Locks and Barriers) Chapter 3 (version 3.9.09) H09, Uke 2, side 1. Practical Stuff Obligatory assignment 1 NB: Deadline Monday 21. Sept. See teaching plan. Group teacher Chris

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

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

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon. Hardware-støttet Semafor og Implementasjon av semafor i OS til å synkronisere Hardware-støttet alle softwareløsninger innebærer mange instruksjoner i tillegg til busy-waiting, som koster CPU-tid. I praksis

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

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

INF1010 Tråder II 6. april 2016

INF1010 Tråder II 6. april 2016 INF1010 Tråder II 6. april 2016 Stein Gjessing Universitetet i Oslo 1 Tråder i Java tråden minrunp class MinRun implements Runable { MinRun(... ) {... } public void run( ) {...... } } //end

Detaljer

IN1010 våren Repetisjon av tråder. 15. mai 2018

IN1010 våren Repetisjon av tråder. 15. mai 2018 IN1010 våren 2018 Repetisjon av tråder 15. mai 2018 Stein Gjessing,, Universitetet i Oslo 1 Tråder Datamaskinarkitektur prosessor registre cache 1 cache 2 prosessor registre cache 1 Disk System-bus Minne

Detaljer

INF3140 Modeller for parallellitet INF3140/4140: Programanalyse

INF3140 Modeller for parallellitet INF3140/4140: Programanalyse INF3140/4140: Programanalyse Uke 4, side 1. Hvordan sjekke egenskaper ved programmer? Testing eller debugging øker tilliten til programmet ved prøving, men gir ingen garanti for korrekthet Operasjonell

Detaljer

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

INF3140 / INF4140 MODELLER FOR PARALLELLITET. PMA-gruppen. Institutt for informatikk Universitetet i Oslo. INF3140 / INF4140 MODELLER FOR PARALLELLITET PMA-gruppen Institutt for informatikk Universitetet i Oslo http://www.ifi.uio.no/~pma Uke 1, side 1. Modeller for parallellitet Forelesere Johan Dovland (IFI)

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

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

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet INF2810: Funksjonell Programmering Køer, tabeller, og (litt om) parallelitet Stephan Oepen & Erik Velldal Universitetet i Oslo 5. april 2013 Tema 2 Siste gang Kort om underveisevaluering Destruktive listeoperasjoner

Detaljer

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet INF2810: Funksjonell Programmering Køer, tabeller, og (litt om) parallelitet Stephan Oepen & Erik Velldal Universitetet i Oslo 5. april 2013 Tema 2 Siste gang Kort om underveisevaluering Destruktive listeoperasjoner

Detaljer

Løkker og arrayer. Løse problemer med programmering. INF1000, uke3 Geir Kjetil Sandve

Løkker og arrayer. Løse problemer med programmering. INF1000, uke3 Geir Kjetil Sandve Løkker og arrayer Løse problemer med programmering INF1000, uke3 Geir Kjetil Sandve Hva vi har lært så langt Variabler og uttrykk Beslutninger Kontrollflyt og feilmeldinger Metoder og parametre Fokus i

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 12. desember 2003 Tid for eksamen: 09.00 12.00 Oppgavesettet er på 5 sider. Vedlegg: INF3140/4140 Modeller for parallellitet

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

Models of Concurrency

Models of Concurrency Models of Concurrency Martin Steffen 1 University of Oslo, Norway INF3140 Høst 2007 Dagens program Mer asynkron meldingsutveksling Interagerende prosesser med ulike kommunikasjonsmønstre Oppsummering av

Detaljer

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket! agens tema Kjøresystemer (Ghezzi&Jazayeri.,.) Innledende om semantikk Operasjonell semantikk / SIMPLESEM Bokholderi og minneorganisering Forskjellige språkklasser... en beskrivelse av hva som skjer når

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

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

Eksempler på ikke-blokkerende systemkall:

Eksempler på ikke-blokkerende systemkall: Blokkerende systemkall Thread-modeller Thread-modeller Blokkerende systemkall Viktigste grunn for tråder: blokkerende I/O forespørsler Applikasjonen som ber om I/O blir satt på vent av operativsystemet

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

INF2220: Forelesning 2

INF2220: Forelesning 2 INF2220: Forelesning 2 Mer om analyse av algoritmer Analyse av binære søketrær Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) ANALYSE AV ALGORITMER 2 Analyse av tidsforbruk Hvor

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

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk ( Kjøresystemer Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Statiske språk (2.7.1-2.7.2) FORTRAN, COBOL Stakk-baserte språk (2.7.3-2.7.4) ALGOL 60 Dynamiske språk

Detaljer

Intel Core i7. Omid Mirmotahari 4

Intel Core i7. Omid Mirmotahari 4 INF2270 Pipeline Hovedpunkter Oppsummering av én-sykel implementasjon Forbedring av én-sykel designet Introduksjon til pipelining Oppbygning av datapath med pipelining Intel Core i7 Omid Mirmotahari 4

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

INF225 høsten 2003 Prosjekt del 4: kodegenerering

INF225 høsten 2003 Prosjekt del 4: kodegenerering INF225 høsten 2003 Prosjekt del 4: kodegenerering Thomas Ågotnes 19. november 2003 1 Introduksjon I denne delen av prosjektet skal C- -parseren fra del 3 utvides til å generere maskinkode. Maskinkoden

Detaljer

FYS3240/4240 Forslag til prosjektoppgave for Lab 4: DAQ-øvelse med LabVIEW

FYS3240/4240 Forslag til prosjektoppgave for Lab 4: DAQ-øvelse med LabVIEW FYS3240/4240 Forslag til prosjektoppgave for Lab 4: DAQ-øvelse med LabVIEW Jan Kenneth Bekkeng, 11.3.2013 Hensikten med denne øvelsen er å lære DAQ-programmering med utviklingsverktøyet LabVIEW. NB: se

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

INF1010 Sortering. Marit Nybakken 1. mars 2004

INF1010 Sortering. Marit Nybakken 1. mars 2004 INF1010 Sortering Marit Nybakken marnybak@ifi.uio.no 1. mars 2004 Dette dokumentet skal tas med en klype salt og forfatter sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

Dagens tema: Synkronisering

Dagens tema: Synkronisering Dagens tema: Synkronisering Kappløp og kritiske regioner Blokkering Produsent/konsument-problemet Semaforer Fraktaleksemplet med semaforer og delt lager. «De spisende filosofer»: 3 gale løsninger En foreløbig

Detaljer

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig. Synkronisering En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig. Behov for synkronisering Mange prosesser/tråder

Detaljer

Oppgave 1 - Linux kommandolinje (%)

Oppgave 1 - Linux kommandolinje (%) Løsningsforslag Eksamen høst 2017 Operativsystemer Oppgave 1 - Linux kommandolinje (%) a) pwd b) ps Oppgave 2 - Bash-scripting (%) a) ping -i 5 www.hin.no b) ping -c 1 www.hin.no ping -c 1 -t 1 www.hin.no

Detaljer

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 18. mai 1993 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: IN 110 Algoritmer

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

Hjemmeeksamen 1 i INF3110/4110

Hjemmeeksamen 1 i INF3110/4110 Hjemmeeksamen i INF30/40 Innleveringsfrist: fredag 24. oktober kl. 500 Innlevering Hele besvarelsen skal leveres skriftlig på papir i IFI-ekspedisjonen innen fredag 24. oktober kl. 500. Merk besvarelsen

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Mer om C Cs preprosessor Allokering av variable Separat kompilering Programmet make Pekere i C Operasjoner på pekere Pekere og vektorer Referanseparametre Pekere til «alt» og «ingenting» Dynamisk

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

Læringsmål og pensum. Oversikt

Læringsmål og pensum. Oversikt 1 2 Læringsmål og pensum TDT4105 Informasjonsteknologi grunnkurs: Uke 39 Betingede løkker og vektorisering Læringsmål Skal kunne forstå og programmere betingede løkker med while Skal kunne utnytte plassallokering

Detaljer

Løsningsforslag til eksamen i IN 147(A)

Løsningsforslag til eksamen i IN 147(A) Løsningsforslag til eksamen i IN 147(A) Dag Langmyhr (oppgave 1, 4 og 6) ØysteinGranLarsen (oppgave 2, 3 og 5) 31. mai 1999 1 Oversettelse Funksjonen strxxx går gjennom en tekst og finner adresessen til

Detaljer

INF2810: Funksjonell Programmering. Strømmer

INF2810: Funksjonell Programmering. Strømmer INF2810: Funksjonell Programmering Strømmer Stephan Oepen & Erik Velldal Universitetet i Oslo 12. april 2013 Tema 2 Forrige uke Litt mer i dybden om køer Eksperiment: live-programmering Tabeller som hierarkiske

Detaljer

INF2810: Funksjonell Programmering. Strømmer

INF2810: Funksjonell Programmering. Strømmer INF2810: Funksjonell Programmering Strømmer Stephan Oepen & Erik Velldal Universitetet i Oslo 12. april 2013 Tema 2 Forrige uke Litt mer i dybden om køer Eksperiment: live-programmering Tabeller som hierarkiske

Detaljer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 12. desember 2002 Varighet: Fagnummer: Fagnavn: Klasse(r): 3 timer LO116D Programmering i Visual Basic FU

Detaljer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer INF2220 - Algoritmer og datastrukturer HØSTEN 2016 Institutt for informatikk, Universitetet i Oslo Forelesning 6: Grafer II Ingrid Chieh Yu (Ifi, UiO) INF2220 28.09.2016 1 / 30 Dagens plan: Dijkstra fort.

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

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

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

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

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1020 Algoritmer og datastrukturer Eksamensdag: 15. desember 2004 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 6 sider.

Detaljer

INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første

Detaljer

Løsningsforslag til eksamen i IN 147 og IN 147A

Løsningsforslag til eksamen i IN 147 og IN 147A Løsningsforslag til eksamen i IN 17 og IN 17A Dag Langmyhr Øystein Gran Larsen Våren 1996 1 Oversettelse I vårt forslag har vi lagt større vekt på at oversettelsen skal vært «rett frem» og lett forståelig

Detaljer

Vranglås (Deadlocks) Fag: Operativsystemer

Vranglås (Deadlocks) Fag: Operativsystemer Vranglås (Deadlocks) Fag: Operativsystemer 1 Innhold: Vranglås Vranglås Eksempler: Svensk flagg, Veikryss, spisende filosofer Betingelser for vranglås Metoder for å håndtere vranglås Tilbake til systemer

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

Metoder med parametre, løkker og arrayer

Metoder med parametre, løkker og arrayer Metoder med parametre, løkker og arrayer Løse problemer med programmering INF1000, uke3 Ragnhild Kobro Runde METODER MED PARAMETRE Statiske void-metoder med parametre Den typen metoder vi så på forrige

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på

Detaljer

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

Programmering Høst 2017

Programmering Høst 2017 Programmering Høst 2017 Tommy Abelsen Ingeniørfag - Data Innledning Dette er et dokument med litt informasjon og eksempler om kontrollstrukturer, samt oppgaver til forskjellige kontrollstrukturer. Spør

Detaljer

IN1020. Datamaskinarkitektur

IN1020. Datamaskinarkitektur IN1020 Datamaskinarkitektur Hovedpunkter Von Neumann Arkitektur BUS Pipeline Hazarder Intel Core i7 Omid Mirmotahari 4 Von Neumann Arkitektur John von Neumann publiserte i 1945 en model for datamaskin

Detaljer

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema. Sortering. Fortsettelse om programmering vha tråder. Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære

Detaljer

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:

Detaljer

Norsk informatikkolympiade runde

Norsk informatikkolympiade runde Norsk informatikkolympiade 2017 2018 1. runde Sponset av Uke 46, 2017 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

Detaljer

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Dagens tema. Sortering. Fortsettelse om programmering vha tråder. Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære

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

Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006

Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006 Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006 Prosesser og tråder Datamaskinen lager prosesser. En prosess organiserer arbeidet i et program ved å administrere tråder. Det er

Detaljer

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016 Norsk informatikkolympiade 2016 2017 1. runde Sponset av Uke 46, 2016 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

Detaljer

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre: Heap Heap* En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger til venstre En heap er også et

Detaljer

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker Nybegynnerkurs i C Øyvind Grønnesby 14. oktober 2004 Introduksjon pass-by-value svakt typet portabel assembler siste ISO-standard er C99 Hello world #i n c l u d e < s t d l i b. h> #i n c l u d e

Detaljer

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre Python: Løkker TDT4110 IT Grunnkurs Professor Guttorm Sindre Denne uka Vi trenger å Støttes av Hente data fra bruker Vise data til bruker Lagre data i minnet for bruk videre i programmet Fra tastatur:

Detaljer

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator? Kursopplegg Velkommen til INF2100 Bakgrunnen Bakgrunnen for INF2100 Jeg er Dag Langmyhr (dag@ifi.uio.no). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får

Detaljer

Løsningsforslag til eksamen i IN147(A)

Løsningsforslag til eksamen i IN147(A) Løsningsforslag til eksamen i IN147(A) Dag Langmyhr Øystein Gran Larsen 12 mai 1997 Oppgave 1: JK-flip-flop Boolsk ligning D-signalet bestemmer neste utgang, dvs Q(t + 1), og D-signalet tar derfor de samme

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 15. desember 2010 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 8 sider. Vedlegg: Tillatte hjelpemidler: INF2220

Detaljer

Velkommen til INF2100 Jeg er Dag Langmyhr

Velkommen til INF2100 Jeg er Dag Langmyhr Velkommen til Jeg er Dag Langmyhr (dag@ifi.uio.no). Bakgrunn for I INF1000 20 har dere lært å rammere, men bare små rammer (< 1000 linjer). Hensikten med er å gi mer rammeringstrening Dagens tema: Hva

Detaljer

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

Innhold. Oppgave 1 Oversettelse (vekt 15%)

Innhold. Oppgave 1 Oversettelse (vekt 15%) UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 147 Program- og maskinvare Eksamensdag: 29. mai 2001 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 10 sider. Vedlegg: Tillatte

Detaljer

Stack. En enkel, lineær datastruktur

Stack. En enkel, lineær datastruktur Stack En enkel, lineær datastruktur Hva er en stack? En datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi

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

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten. Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på

Detaljer

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten. Oppgave 1: RPJ, kapittel 4, oppg. 2 INF1000 Plenumsgruppe 1, 22.09.02 Hvis en person har inntekt < 10 000, så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første 10 000 og 30% på

Detaljer

INF2270. Input / Output (I/O)

INF2270. Input / Output (I/O) INF2270 Input / Output (I/O) Hovedpunkter Innledning til Input / Output Ulike typer I/O I/O internt i datamaskinen I/O eksternt Omid Mirmotahari 3 Input / Output En datamaskin kommuniserer med omverdenen

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:

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

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Stack Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi ta ut et element, tar

Detaljer

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist

Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Stack Hva er en stack? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi ta ut et element, tar

Detaljer

Velkommen til INF2100

Velkommen til INF2100 Kursopplegg Velkommen til INF2100 Jeg er Dag Langmyhr (dag@ifi.uio.no). Dagens tema: Hva går kurset ut på? Bakgrunn for kurset Hvordan gjennomføres kurset? Hvordan får man det godkjent? Pause (med registrering

Detaljer

Norsk informatikkolympiade runde

Norsk informatikkolympiade runde Norsk informatikkolympiade 2015 2016 1. runde Sponset av Uke 46, 2015 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.

Detaljer

INF1010 siste begreper før oblig 2

INF1010 siste begreper før oblig 2 INF1010 siste begreper før oblig 2 Sammenligning. Mer lenkede lister. Forskjellige listeimplementasjoner. Binære trær. Bittelitt om grensesnitt (interface). Dagens forelesning Flere temaer på grunn av

Detaljer

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer INF2220 - Algoritmer og datastrukturer HØSTEN 2009 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 5: Prioritetskø og Heap Bjarne Holen (Ifi, UiO) INF2220 H2009, forelesning 5 1 /

Detaljer

Datastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer

Datastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer Hva er en datastruktur? Datastrukturer Elementære Datastrukturer En datastruktur er en systematisk måte å lagre og organisere data på, slik at det er lett å aksessere og modifisere dataene Eksempler på

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider.

Detaljer

Oppsummering av digitalteknikkdelen

Oppsummering av digitalteknikkdelen Oppsummering av digitalteknikkdelen! Følgende hovedtemaer er gjennomgått! Boolsk Algebra! von Neuman-arkitektur! Oppbygging av CPU! Pipelining! Cache! Virtuelt minne! Interne busser 09.05. INF 1070 1 Boolsk

Detaljer