Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2

Storlek: px
Starta visningen från sidan:

Download "Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2"

Transkript

1 Realtidssystem - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 2 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja) 1

2 Förtydligande: Kursens fokus och mål Praktik-Fokus: Trådar i OS-process semaforer monitorer meddelanden i kö (mailbox / event queue) Teori-Fokus: Trådarnas samspel dödläge / svält / livelock exekveringstider prioriteter schemaläggning och schemaläggningsanalys Man ska kunna bygga flertrådiga program som i princip kan uppfylla realtidskrav Man ska kunna läsa kod av flertrådiga program och kunna lösa problem i koden Man ska bygga upp en förståelse för vad som kan hända när flera trådar måste hanteras Man ska bygga upp en uppfattning om vilka verktyg som finns för att utföra en analys av ett tilltänkt system och kunna utföra enklare analyser 2

3 Innehåll Synkronisering / Ömsesidig uteslutning: Semaforer MutexSem Signalling Counting semaphore 3

4 Kan man få till ömsesidig uteslutning utan systemanrop? class T extends Thread { public void run() { while( true) { noncriticalsection(); preprotocol(); criticalsection(); postprotocol(); class T2 extends Thread { public void class run() T extends { Thread { while( true) public { void run() { noncriticalsection(); while( true) { preprotocol(); noncriticalsection(); criticalsection(); preprotocol(); postprotocol(); criticalsection(); postprotocol(); Critical Section (CS) Jämför Bankkonto-exemplet Vi kommer titta på konstruktionen av pre-/postprotocol Antagandet: En tråd kommer inte att blockeras inom dess kritiska sekvens (critical section). Krav: Ömsesidig uteslutning, ingen dödläge, inget svält, hög verkningsgrad (efficiency). 4

5 Ömsesidig uteslutning, tråden class T extends Thread { public void run() { while( true) { noncriticalsection(); preprotocol(); criticalsection(); postprotocol(); 5

6 Ömsesidig uteslutning, kraven Det här måste uppfyllas: 1. Ömsesidig uteslutning (Mutual exclusion): Exekvering av en kod i en kritisk sekvens får inte flätas ihop med någon annan tråds kodsekvens. 2. Inget dödläge (No deadlock): Om en eller fler tråd(ar) försöker starta exekvering av en kritisk sekvens, måste det finnas någon av dem som faktiskt kan göra det. 3. Ingen svält (No starvation): En tråd måste få möjlighet att någon gång påbörja exekveringen av dess kritiska sekvens. 4. Effektivitet (Efficiency): Liten overhead (förvaltningskostnad) när det finns enbart en tråd, det hela måste fungera bra även om det bara finns en tråd (det får inte finnas en obligatorisk väntemoment på en annan tråd när en sådan inte kan garanteras finnas). Kan de här kraven uppfyllas med vanlig Java-kod? 6

7 Ömsesidig uteslutning - version 1 - int turn = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( turn!= 1); cs1(); turn = 2; class T2 extends Thread { public void run() { while( true) { noncs2(); while( turn!= 2); cs2(); turn = 1; 7

8 Ömsesidig uteslutning - version 1 - int turn = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( turn!= 1); cs1(); turn = 2; class T2 extends Thread { public void run() { while( true) { noncs2(); while( turn!= 2); cs2(); turn = 1; Ömsesidig uteslutning: OK 7

9 Ömsesidig uteslutning - version 1 - int turn = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( turn!= 1); cs1(); turn = 2; class T2 extends Thread { public void run() { while( true) { noncs2(); while( turn!= 2); cs2(); turn = 1; Ömsesidig uteslutning: OK Inget dödläge: OK, en av dem kan alltid köra. 7

10 Ömsesidig uteslutning - version 1 - int turn = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( turn!= 1); cs1(); turn = 2; class T2 extends Thread { public void run() { while( true) { noncs2(); while( turn!= 2); cs2(); turn = 1; Ömsesidig uteslutning: OK Inget dödläge: OK, en av dem kan alltid köra. Inget svält: OK, omväxlande protokoll. 7

11 Ömsesidig uteslutning - version 1 - int turn = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( turn!= 1); cs1(); turn = 2; class T2 extends Thread { public void run() { while( true) { noncs2(); while( turn!= 2); cs2(); turn = 1; Ömsesidig uteslutning: OK Inget dödläge: OK, en av dem kan alltid köra. Inget svält: OK, omväxlande protokoll. Effektivitet / en tråd?: NEJ (en tråd kommer hänga sig efter max en omgång), plus vi har en busy-wait (ineffektiv). För många trådar dessutom rörig. 7

12 Ömsesidig uteslutning - version 1 - int turn = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( turn!= 1); cs1(); turn = 2; class T2 extends Thread { public void run() { while( true) { noncs2(); while( turn!= 2); cs2(); turn = 1; Ömsesidig uteslutning: OK Inget dödläge: OK, en av dem kan alltid köra. Inget svält: OK, omväxlande protokoll. Effektivitet / en tråd?: NEJ (en tråd kommer hänga sig efter max en omgång), plus vi har en busy-wait (ineffektiv). För många trådar dessutom rörig. Ej acceptabelt! 7

13 Ömsesidig uteslutning - version 2 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( c2!= 1); c1 = 0; cs1(); c1 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); while( c1!= 1); c2 = 0; cs1(); c2 = 1; 8

14 Ömsesidig uteslutning - version 2 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( c2!= 1); c1 = 0; cs1(); c1 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); while( c1!= 1); c2 = 0; cs1(); c2 = 1; Ömsesidig uteslutning: NEJ... (testa sammanflätning) 8

15 Ömsesidig uteslutning - version 2 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( c2!= 1); c1 = 0; cs1(); c1 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); while( c1!= 1); c2 = 0; cs1(); c2 = 1; Ömsesidig uteslutning: NEJ... (testa sammanflätning) c1 = 1; c2 = 1; while( c2!= 1); while( c1!= 1); c1 = 0; c2 = 0; cs1(); cs2(); 8

16 Ömsesidig uteslutning - version 2 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); while( c2!= 1); c1 = 0; cs1(); c1 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); while( c1!= 1); c2 = 0; cs1(); c2 = 1; Ömsesidig uteslutning: NEJ... (testa sammanflätning) c1 = 1; c2 = 1; while( c2!= 1); while( c1!= 1); c1 = 0; c2 = 0; cs1(); cs2(); Ingen lösning, även om det kan fungera länge tills det kraschar (genom interrupt i noncs1, eller noncs2!) 8

17 Ömsesidig uteslutning - version 3 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); c1 = 0; while( c2!= 1); cs1(); c1 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); c2 = 0; while( c1!= 1); cs1(); c2 = 1; 9

18 Ömsesidig uteslutning - version 3 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); c1 = 0; while( c2!= 1); cs1(); c1 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); c2 = 0; while( c1!= 1); cs1(); c2 = 1; Ömsesidig uteslutning: OK 9

19 Ömsesidig uteslutning - version 3 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { public void run() { while( true) { noncs1(); c1 = 0; while( c2!= 1); cs1(); c1 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); c2 = 0; while( c1!= 1); cs1(); c2 = 1; Ömsesidig uteslutning: OK Inget dödläge: Nej (alltså ja): 9

20 Ömsesidig uteslutning - version 3 - class T1 extends Thread { public void run() { while( true) { noncs1(); c1 = 0; while( c2!= 1); cs1(); c1 = 1; int c1, c2; c1 = c2 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); c2 = 0; while( c1!= 1); cs1(); c2 = 1; Ömsesidig uteslutning: OK Inget dödläge: Nej (alltså ja): c1 = 0; c2 = 0; while( c2!= 1); // I all evighet... while( c1!= 1); //... och lite till... 9

21 Ömsesidig uteslutning - version 3 - class T1 extends Thread { public void run() { while( true) { noncs1(); c1 = 0; while( c2!= 1); cs1(); c1 = 1; int c1, c2; c1 = c2 = 1; class T2 extends Thread { public void run() { while( true) { noncs2(); c2 = 0; while( c1!= 1); cs1(); c2 = 1; Ömsesidig uteslutning: OK Inget dödläge: Nej (alltså ja): c1 = 0; c2 = 0; while( c2!= 1); // I all evighet... while( c1!= 1); //... och lite till... Ingen lösning, även om det kan fungera länge tills det kraschar (genom interrupt i noncs1, eller noncs2)! 9

22 Ömsesidig uteslutning - version 4 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ c1 = 1; //** c1 = 0; cs1(); c1 = 1; //.. class T2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ c2 = 1; //** c2 = 0; cs2(); c2 = 1; //.. 10

23 Ömsesidig uteslutning - version 4 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ c1 = 1; //** c1 = 0; cs1(); c1 = 1; //.. class T2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ c2 = 1; //** c2 = 0; cs2(); c2 = 1; //.. Ömsesidig uteslutning: OK 10

24 Ömsesidig uteslutning - version 4 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ c1 = 1; //** c1 = 0; cs1(); c1 = 1; //.. class T2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ c2 = 1; //** c2 = 0; cs2(); c2 = 1; //.. Ömsesidig uteslutning: OK Inget dödläge: OK (//** är yield) 10

25 Ömsesidig uteslutning - version 4 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ c1 = 1; //** c1 = 0; cs1(); c1 = 1; //.. class T2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ c2 = 1; //** c2 = 0; cs2(); c2 = 1; //.. Ömsesidig uteslutning: OK Inget dödläge: OK (//** är yield) Inget svält: NEJ, det kan hända att en tråd får köra, men kommer aldrig så långt att den får verkligen utföra CS (kallas livelock om det händer fler trådar så att hela systemet jobbar utan att göra något). 10

26 Ömsesidig uteslutning - version 4 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ c1 = 1; //** c1 = 0; cs1(); c1 = 1; //.. class T2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ c2 = 1; //** c2 = 0; cs2(); c2 = 1; //.. Ömsesidig uteslutning: OK Inget dödläge: OK (//** är yield) Inget svält: NEJ, det kan hända att en tråd får köra, men kommer aldrig så långt att den får verkligen utföra CS (kallas livelock om det händer fler trådar så att hela systemet jobbar utan att göra något). Ej acceptabelt! 10

27 Ömsesidig uteslutning - version 4 - int c1, c2; c1 = c2 = 1; class T1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ c1 = 1; //** c1 = 0; cs1(); c1 = 1; //.. Ömsesidig uteslutning: OK Inget dödläge: OK (//** är yield) Inget svält: NEJ, det kan hända att en tråd får köra, men kommer aldrig så långt att den får verkligen utföra CS (kallas livelock om det händer fler trådar så att hela systemet jobbar utan att göra något). Ej acceptabelt! class T2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ c2 = 1; //** c2 = 0; cs2(); c2 = 1; //.. c1 = 0; c2 = 0; while( c1!= 1) { c2 = 1;... while( c2!= 1); cs1(); c1 = 1; noncs1(); c1 = 0;... c2 = 0; while( c1!= 1) { c2 = 1; while( c2!= 1); cs1(); c1 = 1;... 10

28 Dekkers algoritm int c1, c2, turn; c1 = c2 = turn = 1; class DA1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ if( turn == 2) { c1 = 1; while( turn == 2); c1 = 0; cs1(); c1 = 1; turn = 2; class DA2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ if( turn == 1) { c2 = 1; while( turn == 1); c2 = 0; cs2(); c2 = 1; turn = 1; 11

29 Dekkers algoritm int c1, c2, turn; c1 = c2 = turn = 1; class DA1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ if( turn == 2) { c1 = 1; while( turn == 2); c1 = 0; cs1(); c1 = 1; turn = 2; class DA2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ if( turn == 1) { c2 = 1; while( turn == 1); c2 = 0; cs2(); c2 = 1; turn = 1; Ömsesidig uteslutning: OK 11

30 Dekkers algoritm int c1, c2, turn; c1 = c2 = turn = 1; class DA1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ if( turn == 2) { c1 = 1; while( turn == 2); c1 = 0; cs1(); c1 = 1; turn = 2; class DA2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ if( turn == 1) { c2 = 1; while( turn == 1); c2 = 0; cs2(); c2 = 1; turn = 1; Ömsesidig uteslutning: OK Inget dödläge: OK 11

31 Dekkers algoritm int c1, c2, turn; c1 = c2 = turn = 1; class DA1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ if( turn == 2) { c1 = 1; while( turn == 2); c1 = 0; cs1(); c1 = 1; turn = 2; class DA2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ if( turn == 1) { c2 = 1; while( turn == 1); c2 = 0; cs2(); c2 = 1; turn = 1; Ömsesidig uteslutning: OK Inget dödläge: OK Inget svält: OK (inte bara yield, men blockerar tills CS har körts en gång minst) 11

32 Dekkers algoritm int c1, c2, turn; c1 = c2 = turn = 1; class DA1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ if( turn == 2) { c1 = 1; while( turn == 2); c1 = 0; cs1(); c1 = 1; turn = 2; class DA2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ if( turn == 1) { c2 = 1; while( turn == 1); c2 = 0; cs2(); c2 = 1; turn = 1; Ömsesidig uteslutning: OK Inget dödläge: OK Inget svält: OK (inte bara yield, men blockerar tills CS har körts en gång minst) Effektivitet / en tråd?: Inte bra. 11

33 Dekkers algoritm int c1, c2, turn; c1 = c2 = turn = 1; class DA1 extends Thread { //... noncs1(); c1 = 0; while( c2!= 1){ if( turn == 2) { c1 = 1; while( turn == 2); c1 = 0; cs1(); c1 = 1; turn = 2; class DA2 extends Thread { //... noncs2(); c2 = 0; while( c1!= 1){ if( turn == 1) { c2 = 1; while( turn == 1); c2 = 0; cs2(); c2 = 1; turn = 1; Ömsesidig uteslutning: OK Inget dödläge: OK Inget svält: OK (inte bara yield, men blockerar tills CS har körts en gång minst) Effektivitet / en tråd?: Inte bra. Dekkers algoritm fungerar bra för många trådar, men blir då komplex, den löser problemet ömsesidig uteslutning, MEN med busy-wait. Kan vara användbar i vissa system med flera processorer. 11

34 Ömsesidig uteslutning - Semafor - MutexSem mutex = new MutexSem(); class T1 extends Thread { public void run() { while( true) { noncs1(); mutex.take(); cs1(); mutex.give(); class T2 extends Thread { public void run() { while( true) { noncs2(); mutex.take(); cs2(); mutex.give(); 12

35 Ömsesidig uteslutning - Semafor - MutexSem mutex = new MutexSem(); class T1 extends Thread { public void run() { while( true) { noncs1(); mutex.take(); cs1(); mutex.give(); class T2 extends Thread { public void run() { while( true) { noncs2(); mutex.take(); cs2(); mutex.give(); Ömsesidig uteslutning: OK 12

36 Ömsesidig uteslutning - Semafor - MutexSem mutex = new MutexSem(); class T1 extends Thread { public void run() { while( true) { noncs1(); mutex.take(); cs1(); mutex.give(); class T2 extends Thread { public void run() { while( true) { noncs2(); mutex.take(); cs2(); mutex.give(); Ömsesidig uteslutning: OK Inget dödläge: OK 12

37 Ömsesidig uteslutning - Semafor - MutexSem mutex = new MutexSem(); class T1 extends Thread { public void run() { while( true) { noncs1(); mutex.take(); cs1(); mutex.give(); class T2 extends Thread { public void run() { while( true) { noncs2(); mutex.take(); cs2(); mutex.give(); Ömsesidig uteslutning: OK Inget dödläge: OK Inget svält: OK (give() startar upp den blockerade tråden direkt) 12

38 Ömsesidig uteslutning - Semafor - MutexSem mutex = new MutexSem(); class T1 extends Thread { public void run() { while( true) { noncs1(); mutex.take(); cs1(); mutex.give(); class T2 extends Thread { public void run() { while( true) { noncs2(); mutex.take(); cs2(); mutex.give(); Ömsesidig uteslutning: OK Inget dödläge: OK Inget svält: OK (give() startar upp den blockerade tråden direkt) Effektivitet / en tråd: OK. Blockerade trådar sövs (sleep), dvs de använder inte CPUn. 12

39 Ömsesidig uteslutning - Semafor - MutexSem mutex = new MutexSem(); class T1 extends Thread { public void run() { while( true) { noncs1(); mutex.take(); cs1(); mutex.give(); class T2 extends Thread { public void run() { while( true) { noncs2(); mutex.take(); cs2(); mutex.give(); Ömsesidig uteslutning: OK Inget dödläge: OK Inget svält: OK (give() startar upp den blockerade tråden direkt) Effektivitet / en tråd: OK. Blockerade trådar sövs (sleep), dvs de använder inte CPUn. Acceptabelt! 12

40 Semafor - basfakta 13

41 Semafor - basfakta Semaforer utgör en minimal mekanism för ömsesidig uteslutning 13

42 Semafor - basfakta Semaforer utgör en minimal mekanism för ömsesidig uteslutning En semafor är egentligen bara en integer-variabel med två metoder, take() och give(): 13

43 Semafor - basfakta Semaforer utgör en minimal mekanism för ömsesidig uteslutning En semafor är egentligen bara en integer-variabel med två metoder, take() och give(): class SemaphorePrinciple { int count; public void take() { while( count < 1) suspend executing thread // here, currentthread() is used! --count; public void give() { if( any thread suspended ) resume the first one in queue ; count++; 13

44 Semafor - basfakta Semaforer utgör en minimal mekanism för ömsesidig uteslutning En semafor är egentligen bara en integer-variabel med två metoder, take() och give(): class SemaphorePrinciple { int count; public void take() { while( count < 1) suspend executing thread // here, currentthread() is used! --count; public void give() { if( any thread suspended ) resume the first one in queue ; count++; 13

45 Semafor - basfakta Semaforer utgör en minimal mekanism för ömsesidig uteslutning En semafor är egentligen bara en integer-variabel med två metoder, take() och give(): class SemaphorePrinciple { int count; public void take() { while( count < 1) suspend executing thread // here, currentthread() is used! --count; public void give() { if( any thread suspended ) resume the first one in queue ; count++; OBS 1: take och give är odelbara (atomic) operationer, som kräver systemsupport när de ska implementeras (t ex deaktivera hårdvaruinterrupts). 13

46 Semafor - basfakta Semaforer utgör en minimal mekanism för ömsesidig uteslutning En semafor är egentligen bara en integer-variabel med två metoder, take() och give(): class SemaphorePrinciple { int count; public void take() { while( count < 1) suspend executing thread // here, currentthread() is used! --count; public void give() { if( any thread suspended ) resume the first one in queue ; count++; OBS 1: take och give är odelbara (atomic) operationer, som kräver systemsupport när de ska implementeras (t ex deaktivera hårdvaruinterrupts). OBS 2: take blockerar den anropande tråden sålänge count == 0. Detta kan inte implementeras i vanlig Java-kod. 13

47 Typer av semaforer 14

48 Typer av semaforer MutexSem - MutualExclusion semaphore: Den som tar flaggan får jobba med gemensamma resurser, den som vill ha den samtidigt, får vänta (blockeras). 14

49 Typer av semaforer MutexSem - MutualExclusion semaphore: Den som tar flaggan får jobba med gemensamma resurser, den som vill ha den samtidigt, får vänta (blockeras). CountingSem - Counting semaphore, signalling: Den som gör plats / en resurs tillgänglig, signalerar genom att lägga en flagga på högen, den som vill utnyttja en resursplats tar en flagga från högen. Finns inga fria flaggor, måste den som vill ha en vänta. 14

50 Typer av semaforer MutexSem - MutualExclusion semaphore: Den som tar flaggan får jobba med gemensamma resurser, den som vill ha den samtidigt, får vänta (blockeras). CountingSem - Counting semaphore, signalling: Den som gör plats / en resurs tillgänglig, signalerar genom att lägga en flagga på högen, den som vill utnyttja en resursplats tar en flagga från högen. Finns inga fria flaggor, måste den som vill ha en vänta. 14

51 Semaforer vs omvärlden 15

52 Semaforer vs omvärlden Mutual exclusion (MutexSem): Tåg ska köra mellan Malmö och Lund när det för tillfället råder enkelspårsdrift. 15

53 Semaforer vs omvärlden Mutual exclusion (MutexSem): Tåg ska köra mellan Malmö och Lund när det för tillfället råder enkelspårsdrift. Signaling (CountingSem): Check-In på Kastrup: Man väntar i en lång rad och blir tilldelad en fri disk så fort det finns en sådan. 15

54 Semaforer vs omvärlden Mutual exclusion (MutexSem): Tåg ska köra mellan Malmö och Lund när det för tillfället råder enkelspårsdrift. Signaling (CountingSem): Check-In på Kastrup: Man väntar i en lång rad och blir tilldelad en fri disk så fort det finns en sådan. Rendezvous: Last från ett godståg ska lastas om / kopplas om på ett annat tåg utan att något ska lagras. Båda tågen måste alltså stå i omlastningsområdet samtidigt. 15

55 Semaforer vs omvärlden Mutual exclusion (MutexSem): Tåg ska köra mellan Malmö och Lund när det för tillfället råder enkelspårsdrift. Signaling (CountingSem): Check-In på Kastrup: Man väntar i en lång rad och blir tilldelad en fri disk så fort det finns en sådan. Rendezvous: Last från ett godståg ska lastas om / kopplas om på ett annat tåg utan att något ska lagras. Båda tågen måste alltså stå i omlastningsområdet samtidigt. 15

56 Semaforer - användning i kod Tråd A: Tråd B: Mutual exclusion (ömsesidig uteslutning)... mutex.take(); *** mutex.give(); mutex.take(); *** mutex.give();... Signaling (signalering)... buffer.give(); buffer.take();... Rendezvous *** entry.give(); exit.take(); ***... entry.take(); *** exit.give();... 16

57 Mutex - bara en kan hantera den 17

58 Mutex - bara en kan hantera den Det finns enbart en nyckel till toaletten på ett visst fik. 17

59 Mutex - bara en kan hantera den Det finns enbart en nyckel till toaletten på ett visst fik. Vill man ha nyckeln, måste man fråga efter den vid disken. 17

60 Mutex - bara en kan hantera den Det finns enbart en nyckel till toaletten på ett visst fik. Vill man ha nyckeln, måste man fråga efter den vid disken. Finns inte nyckeln där (toaletten är upptagen), måste man ställa sig i kön. 17

61 Mutex - bara en kan hantera den Det finns enbart en nyckel till toaletten på ett visst fik. Vill man ha nyckeln, måste man fråga efter den vid disken. Finns inte nyckeln där (toaletten är upptagen), måste man ställa sig i kön. När toaletten blir ledig, lämnas nyckeln tillbaka och ges vidare till första personen i kön. 17

62 Mutex - bara en kan hantera den Det finns enbart en nyckel till toaletten på ett visst fik. Vill man ha nyckeln, måste man fråga efter den vid disken. Finns inte nyckeln där (toaletten är upptagen), måste man ställa sig i kön. När toaletten blir ledig, lämnas nyckeln tillbaka och ges vidare till första personen i kön. Står ingen i kön, lämnas nyckeln tillbaka vid disken. 17

63 Mutex - bara en kan hantera den Det finns enbart en nyckel till toaletten på ett visst fik. Vill man ha nyckeln, måste man fråga efter den vid disken. Finns inte nyckeln där (toaletten är upptagen), måste man ställa sig i kön. När toaletten blir ledig, lämnas nyckeln tillbaka och ges vidare till första personen i kön. Står ingen i kön, lämnas nyckeln tillbaka vid disken. Nyckeln måste alltid lämnas (vidare) av den som hämtade den sist. 17

64 Signalera med en sorts signal 18

65 Signalera med en sorts signal Patienten på rummet behöver hjälp och trycker på signalknappen - lampan utanför rummet tänds och larmet i expeditionen går. (signal.give()) 18

66 Signalera med en sorts signal Patienten på rummet behöver hjälp och trycker på signalknappen - lampan utanför rummet tänds och larmet i expeditionen går. (signal.give()) Sjuksköterskan kommer in i rummet och slår av signalen - lampan och larmet släcks och alla utanför vet att problemet åtgärdas - ingen annan behöver eller ska komma och hjälpa. (signal.take()) 18

67 Signalera med en sorts signal Patienten på rummet behöver hjälp och trycker på signalknappen - lampan utanför rummet tänds och larmet i expeditionen går. (signal.give()) Sjuksköterskan kommer in i rummet och slår av signalen - lampan och larmet släcks och alla utanför vet att problemet åtgärdas - ingen annan behöver eller ska komma och hjälpa. (signal.take()) Detta kan hända på flera rum samtidigt, eller med korta mellanrum. Sålänge det finns sjuksköterskor kan de ta över rum efter rum, sen måste kanske en patient vänta lite längre. Om ingen larmar, måste sjuksköterskorna vänta på nästa problem att lösa. (signal.give() + signal.give() + signal.take() + signal.give() + signal.take() + signal.take()) 18

68 Signalera med en sorts signal Patienten på rummet behöver hjälp och trycker på signalknappen - lampan utanför rummet tänds och larmet i expeditionen går. (signal.give()) Sjuksköterskan kommer in i rummet och slår av signalen - lampan och larmet släcks och alla utanför vet att problemet åtgärdas - ingen annan behöver eller ska komma och hjälpa. (signal.take()) Detta kan hända på flera rum samtidigt, eller med korta mellanrum. Sålänge det finns sjuksköterskor kan de ta över rum efter rum, sen måste kanske en patient vänta lite längre. Om ingen larmar, måste sjuksköterskorna vänta på nästa problem att lösa. (signal.give() + signal.give() + signal.take() + signal.give() + signal.take() + signal.take()) 18

69 Signalera med två olika signaler 19

70 Signalera med två olika signaler Chefen och Sekreteraren har ett postfack för att överlämna dokument till varandra, egentligen är det dock bara Sekreteraren som lägger dit dokument, och chefen som hämtar ut dem därifrån. I facket får det enbart ligga ett dokument åt gången. 19

71 Signalera med två olika signaler Chefen och Sekreteraren har ett postfack för att överlämna dokument till varandra, egentligen är det dock bara Sekreteraren som lägger dit dokument, och chefen som hämtar ut dem därifrån. I facket får det enbart ligga ett dokument åt gången. Sekreteraren ser att facket är tomt genom att en tom -lampa lyser på hans kontor. Han går till facket, lägger dit ett dokument som chefen måste signera, och trycker på en knapp som släcker tom -lampan och sedan slår på en det finns ett dokument -lampa på chefens kontor. (free.take() + avail.give()) 19

72 Signalera med två olika signaler Chefen och Sekreteraren har ett postfack för att överlämna dokument till varandra, egentligen är det dock bara Sekreteraren som lägger dit dokument, och chefen som hämtar ut dem därifrån. I facket får det enbart ligga ett dokument åt gången. Sekreteraren ser att facket är tomt genom att en tom -lampa lyser på hans kontor. Han går till facket, lägger dit ett dokument som chefen måste signera, och trycker på en knapp som släcker tom -lampan och sedan slår på en det finns ett dokument -lampa på chefens kontor. (free.take() + avail.give()) Chefen ser lampan, kommer till facket, tar dokumentet, släcker det finns ett dokument - lampan och slår på tom -lampan hos sekreteraren. (avail.take() + free.give()) 19

73 Signalera med två olika signaler Chefen och Sekreteraren har ett postfack för att överlämna dokument till varandra, egentligen är det dock bara Sekreteraren som lägger dit dokument, och chefen som hämtar ut dem därifrån. I facket får det enbart ligga ett dokument åt gången. Sekreteraren ser att facket är tomt genom att en tom -lampa lyser på hans kontor. Han går till facket, lägger dit ett dokument som chefen måste signera, och trycker på en knapp som släcker tom -lampan och sedan slår på en det finns ett dokument -lampa på chefens kontor. (free.take() + avail.give()) Chefen ser lampan, kommer till facket, tar dokumentet, släcker det finns ett dokument - lampan och slår på tom -lampan hos sekreteraren. (avail.take() + free.give()) 19

74 Semaforer i Java (Mutex) Deklarera: import se.lth.cs.realtime.semaphore.*; Semaphore mutex1; // inte tydligt om man vill ha en mutex MutexSem mutex2; // bättre. Skapa / initialisera: /*inte så bra:*/ mutex1 = new CountingSem(); mutex1 = new CountingSem(1); /*bättre:*/ mutex2 = new MutexSem(); // tilldelar värdet 0 till count // tilldelar värdet 1 till count // tilldelar 1 (eller true) till intern status Tillämpning: mutex2.take(); amount += change; mutex2.give(); Förutom att det är tydligare, får man bättre felidentifiering och bättre timing om man skapar ömsesidig uteslutning med en MutexSem istf en CountingSem 20

75 Mutex i trådar import se.lth.cs.realtime.semaphore.*; class ThreadTest { public static void main(string[] args) { class RogersThread extends Thread { String thename; Semaphore thesem; Thread t1,t2; Semaphore s; s = new MutexSem(); t1 = new RogersThread("Thread one",s); t2 = new RogersThread("Thread two",s); t1.start(); t2.start(); public RogersThread( String n, Semaphore s){ thename = n; thesem = s; public void run() { thesem.take(); for(int t=1;t<=100;t++) { System.out.println(theName + ":" + t); sleep(1); thesem.give(); 21

76 Signal i trådar import se.lth.cs.realtime.semaphore.*; class ThreadTest { public static void main(string[] args) { class RogersThread extends Thread { String thename; CountingSem mysem, hissem; Thread t1,t2; CountingSem s1, s2; s1 = new CountingSem(1); s2 = new CountingSem(0); t1 = new RogersThread("One",s1, s2); t1.start(); t2 = new RogersThread("Two",s2, s1); t2.start(); public RogersThread( String n, CountingSem s1, CountingSem s2){ thename = n; mysem = s1; hissem = s2; public void run() { for(int t=1;t<=100;t++) { mysem.take(); System.out.println(theName + ":" + t); hissem.give(); sleep(1); 22

77 Objekt och blockering 23

78 Objekt och blockering Trådobjekt (som alltså kan referera till en exekverande tråd) kallas för aktiva objekt. 23

79 Objekt och blockering Trådobjekt (som alltså kan referera till en exekverande tråd) kallas för aktiva objekt. Andra objekt (beskriven genom vanliga Java-klasser), som blir kallade eller drivna genom aktiva objekt (trådar) kallas för passiva objekt. T ex en semafor ;-) 23

80 Objekt och blockering Trådobjekt (som alltså kan referera till en exekverande tråd) kallas för aktiva objekt. Andra objekt (beskriven genom vanliga Java-klasser), som blir kallade eller drivna genom aktiva objekt (trådar) kallas för passiva objekt. T ex en semafor ;-) Semaforer erbjuder blockerande operationer; hur blir de representerade? 23

81 Objekt och blockering Trådobjekt (som alltså kan referera till en exekverande tråd) kallas för aktiva objekt. Andra objekt (beskriven genom vanliga Java-klasser), som blir kallade eller drivna genom aktiva objekt (trådar) kallas för passiva objekt. T ex en semafor ;-) Semaforer erbjuder blockerande operationer; hur blir de representerade? : Exekverande (executing) : Blockerad (blocked) Tråd (aktivt objekt) Semafor (passivt objekt) : möjligen blockerande (potential blocking) 23

82 Sekvens med mutex / blockerade trådar T1 mutex T2 take take give give Anrop till take - give i följd måste komma från samma tråd. Stöds av MutexSem klassen. 24

83 Signalering T1 give give give signal take take take take T2 En tråd kallar take, en annan give. Stöds av CountingSem klassen. 25

84 Rendezvous T1 give entry exit take T2 sync take give sync Säker dataöverföring / manipulation med T1 från T2 under sync-tiden. T1 har exklusiv tillgång till datan genom att hålla i semaforen förutom mellan sitt give och T2s give 26

85 Exekveringstillstånd Due to scheduler / kernel / OS Running Priority, time-sharing Ready Due to application By this : wait, synchronized call Blocked By other: notify, synchronized return Schemaläggningstillstånd (scheduling state) Running Ready Blocked Kontext PC (Program Counter), SP (stack pointer) Data (beroende på tillämpning) Registerinnehåll 27

86 Övning 1 + Övning 2 28

87 Övning 1 + Övning 2 ÖVNINGAR ÄR INGA FÖRELÄSNINGAR - Kom förberedd! 28

88 Övning 1 + Övning 2 ÖVNINGAR ÄR INGA FÖRELÄSNINGAR - Kom förberedd! Övning 1 i häftet handlar om semaforer och deras tillämpning - frågor till dem besvaras 28

89 Övning 1 + Övning 2 ÖVNINGAR ÄR INGA FÖRELÄSNINGAR - Kom förberedd! Övning 1 i häftet handlar om semaforer och deras tillämpning - frågor till dem besvaras Vid övningstillfället tittar vi på någon tenta-uppgift kring semaforer 28

90 Övning 1 + Övning 2 ÖVNINGAR ÄR INGA FÖRELÄSNINGAR - Kom förberedd! Övning 1 i häftet handlar om semaforer och deras tillämpning - frågor till dem besvaras Vid övningstillfället tittar vi på någon tenta-uppgift kring semaforer Laboration 1 introduceras lite mera 28

91 Övning 1 + Övning 2 ÖVNINGAR ÄR INGA FÖRELÄSNINGAR - Kom förberedd! Övning 1 i häftet handlar om semaforer och deras tillämpning - frågor till dem besvaras Vid övningstillfället tittar vi på någon tenta-uppgift kring semaforer Laboration 1 introduceras lite mera 28

92 Övning 1 + Övning 2 ÖVNINGAR ÄR INGA FÖRELÄSNINGAR - Kom förberedd! Övning 1 i häftet handlar om semaforer och deras tillämpning - frågor till dem besvaras Vid övningstillfället tittar vi på någon tenta-uppgift kring semaforer Laboration 1 introduceras lite mera Övning 2 är till förberedelse för Laboration 1 (väckarklocka) 28

93 Övning 1 + Övning 2 ÖVNINGAR ÄR INGA FÖRELÄSNINGAR - Kom förberedd! Övning 1 i häftet handlar om semaforer och deras tillämpning - frågor till dem besvaras Vid övningstillfället tittar vi på någon tenta-uppgift kring semaforer Laboration 1 introduceras lite mera Övning 2 är till förberedelse för Laboration 1 (väckarklocka) Tillfället ska utnyttjas till att färdigställa ett design-förslag till laborationen, som ska granskas både i kamrat-granskning och av läraren 28

94 Sammanfattning Trådar, kapplöpningsproblem, hantering av gemensamma resurser Semaforer Typer av semaforer Användning av semaforer Man ska kunna lösa uppgifterna till övning 1 och påbörja arbetet med övning 2 / lab1 Lästips: e-bok: delar av Kap 5 (s ) kompendium: Kap 2-1 (Threads) samt 2-2 (Semaphores) 29

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02 Realtidssystem - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698

Läs mer

Realtidssystem. - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-14

Realtidssystem. - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-14 Realtidssystem - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-14 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt

Läs mer

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5 Realtidssystem - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 5 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial

Läs mer

Realtidssystem. - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1

Realtidssystem. - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1 Realtidssystem - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 1 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar

Läs mer

Exam Concurrent and Real-Time Programming

Exam Concurrent and Real-Time Programming LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Exam Concurrent and Real-Time Programming 2018 08 23, 14.00 19.00 1. Vad är prioritetsinversion? Illustrera med ett enkelt exempel. Redogör

Läs mer

Realtidssystem. - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1

Realtidssystem. - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1 Realtidssystem - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 1 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage)

Läs mer

Tentamen Lösningar EDA698 Realtidssystem

Tentamen Lösningar EDA698 Realtidssystem LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Lösningar EDA698 Realtidssystem 13 10 22, 14:00 19:00 1. Prioriteter, korrekthet a) Realtidsproblemet kvarstår. Det finns ingen garanti

Läs mer

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

Concurrency Saker händer samtidigt. Process En instans av ett program Concurrency Saker händer samtidigt Hur gör vi flera saker samtidigt på en dator? - Dela på en CPU - Flera CPU Flera processer på en dator. Operativsystemet (OS) tilldelar dem körtid (time slices, prioritet)

Läs mer

Trådar. Aktiva objekt

Trådar. Aktiva objekt Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.

Läs mer

Parallellism, återblick

Parallellism, återblick Parallellism, återblick Josef Svenningsson December 11, 2012 Lab7 Det är problem med lab7. Gå med i den grupp som ni använt tidigare. DEMO Flera saker händer samtidigt Ofta hanterar program olika indata

Läs mer

Mekanismer. (implementation)

Mekanismer. (implementation) Mekanismer (implementation) Repetition Semafor Räknar tillgängliga resurser Initieras med startvärde Vid förbrukning: väntar tills resurs finns Användning: invänta händelse Lås Markerar att en variabel/datastruktur

Läs mer

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Fö 5+6 TSEA81. Real-time kernel + Real-time OS Fö 5+6 TSEA81 Real-time kernel + Real-time OS Stackens användningsområde * JSR / RTS : returadress * Temporärdata (push / pop) void myfunc(void) { int i; // hamnar nog i register int test[10]; // hamnar

Läs mer

Realtidssystem. - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 4

Realtidssystem. - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 4 Realtidssystem - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 4 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad

Läs mer

Operativsystem - Processkommunikation

Operativsystem - Processkommunikation Operativsystem - Processkommunikation Mats Björkman 2015-01-26 Innehåll Processer (föreläsning 2) Processmodell Processtillstånd Trådar Processkommunikation (föreläsning 3, den här) Semaforer Monitorer

Läs mer

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Objektorienterad Programkonstruktion. Föreläsning dec 2015 Objektorienterad Programkonstruktion Föreläsning 12 14 dec 2015 Parallella Problem I program med flera parallella exekveringstrådar kan det uppstå problem, fel och andra fenomen som inte förekommer i enkeltrådade

Läs mer

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

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram? Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden Parallellitet Ofta är det nödvändigt eller önskvärt att programdelar exekveras

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2012 05 28, 8.00 13.00 Del 1 1. Time To Live (TTL) anger hur många routrar ett multicastpaket

Läs mer

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6 Realtidssystem - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja)

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd

Läs mer

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

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH. Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd

Läs mer

Tentamen EDA698 Realtidssystem (Helsingborg)

Tentamen EDA698 Realtidssystem (Helsingborg) LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen EDA698 Realtidssystem (Helsingborg) 2014 10 28, 14.00 19.00 Det är tillåtet att använda Java snabbreferens och miniräknare, samt ordbok.

Läs mer

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6 Realtidssystem - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial

Läs mer

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas (inbyggda monitor) synchronized. 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på

Läs mer

Synkronisering. Föreläsning 8

Synkronisering. Föreläsning 8 Synkronisering Föreläsning 8 Synkronisering Så stort, intrikat och viktigt att det finns hela kurser om det i parallellprogrammering. Vi fuskar lite med några av de viktigaste bitarna! Synkronisering Vad

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016 Objektorienterad Programkonstruktion Föreläsning 11 6 dec 2016 Föreläsningen 13/12 Halvtidsrepetition Maila frågor som ni vill att jag tar upp! ccs@kth.se Processer Vad vi i dagligt tal menar när vi pratar

Läs mer

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.) Outline för D2, ICT2, E3 och Mek3 Nicholas Wickström Högskolan i Halmstad Sverige p.1/18 Förra föreläsningen Specifikation -Kravspecifikation -Funktionsspecifikation -Blockdiagram Operativsystem -Grunder,

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

Trådar i Java. Johan Ånäs. Seminarieuppsats Institutionen för informationsbehandling Åbo Akademi

Trådar i Java. Johan Ånäs. Seminarieuppsats Institutionen för informationsbehandling Åbo Akademi Trådar i Java Johan Ånäs Seminarieuppsats Institutionen för informationsbehandling Åbo Akademi Sammandrag I dagens samhälle är vi alla bekanta med att man kan köra flera tjänster och applikationer samtidigt.

Läs mer

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om? Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket

Läs mer

Java TRÅDAR OCH GRAFIK. FAdil galjić

Java TRÅDAR OCH GRAFIK. FAdil galjić Java TRÅDAR OCH GRAFIK FAdil galjić Innehållsförteckning 1 Trådar... 5 Ett program med flera trådar... 6 Operationer på en tråd... 18 Kontrollera en tråds aktivitet... 27 Synkroniserad användning av ett

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

Tentamen EDA698 Realtidssystem (Helsingborg)

Tentamen EDA698 Realtidssystem (Helsingborg) LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen EDA698 Realtidssystem (Helsingborg) LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Det är tillåtet att använda Java snabbreferens

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

Synkronisering. Ordning och reda

Synkronisering. Ordning och reda Synkronisering Ordning och reda Banköverföring struct account { int balance; char* owner; }; struct account account[ NUM_ACCOUNTS ]; bool transfer( int amount, unsigned from, unsigned to ); 2 Banköverföring

Läs mer

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

Synkronisering - Semaforen. Om att vänta men inte i onödan

Synkronisering - Semaforen. Om att vänta men inte i onödan Synkronisering - Semaforen Om att vänta men inte i onödan Dörrvakten Har order uppifrån pga brandregler: Släpp in max 40 personer Garanterar att det aldrig är fler insläppta än order angivit Kommer fler

Läs mer

Föreläsning 3: Händelsestyrda program och användargränssnitt

Föreläsning 3: Händelsestyrda program och användargränssnitt (2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2018 03 14, 8.00 13.00 Del 1 1. Applikationslagret levererar data mellan applikationer och till

Läs mer

Tråd C (ms) T (ms) A 4 16 B 3 10 C 4 25 D 2 12

Tråd C (ms) T (ms) A 4 16 B 3 10 C 4 25 D 2 12 LUNDS TEKNISKA HÖGSKOLA Datavetenskap Realtidsprogrammering : EDA040 DAT040 Tentamensskrivning - Realtidsprogrammering 2006-06-01, kl 8.00-13.00 Anvisningar: Tillåtna hjälpmedel: inga utöver Java snabbreferens.

Läs mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

Summering av fält 1.1. Synkronisering - Semaforen. Summering av fält 1.3. Summering av fält 1.2. Summering av fält 2.3 (INTE GK)

Summering av fält 1.1. Synkronisering - Semaforen. Summering av fält 1.3. Summering av fält 1.2. Summering av fält 2.3 (INTE GK) Summering av fält 1.1 Synkronisering - Semaforen Om a6 vänta men inte i onödan Vi har en stor array: int array[2_000_000_000] Vi har variabler för a6 lagra summor och delsumor av arrayen. Dessa iniferas

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/4 2014 Innehåll Kort om Javas Exceptions Trådar i Java swing- klassen Timer Klient-Server-program Javas Exceptions Checked måste hanteras,

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016 Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006 Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006 Detta lösningsförslag är skrivet i stor hast, så det är möjligt att det innehåller en del slarvfel jag ber i så fall om ursäkt för

Läs mer

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER Denna vecka Läsperiodens sista föreläsning Uppsamlingslabb (laboration 6 redovisas först nästa läsperiod) Ingen resurstid

Läs mer

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera

Läs mer

Föreläsnings 9 - Exceptions, I/O

Föreläsnings 9 - Exceptions, I/O Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public

Läs mer

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak och

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2014 06 02, 8.00 13.00 Del 1 1. a) TCP (Transmission Control Protocol) och UDP (User Datagram

Läs mer

Fö 7 TSEA81. Scheduling

Fö 7 TSEA81. Scheduling Fö 7 TSEA81 Scheduling Reflektion Lab 3 Operation Linux Simple OS * wait pthread_mutex_lock si_sem_wait * signal pthread_mutex_unlock si_sem_signal * await pthread_cond_wait si_ev_await * cause pthread_cond_broadcast

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-06-04 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem.

Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem. Motivering Uppsala Universitet 21 april 2005 Många program måste kunna hålla på med flera saker samtidigt, till exempel fleranvändarsystem en webserver som måste kunna leverera flera websidor samtidigt

Läs mer

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

Föreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

Läs mer

Deluppgift 17 Processhantering: exec, sleep, exit, plist

Deluppgift 17 Processhantering: exec, sleep, exit, plist Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson Deluppgift 17 Processhantering: exec, sleep, exit, plist Inledning För att få ett praktiskt

Läs mer

"if"-satsen. Inledande programmering med C# (1DV402)

if-satsen. Inledande programmering med C# (1DV402) "if"-satsen Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket if-satsen

Läs mer

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada Mer källkod Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne Erik Forslin efo@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 1 Styrstrukturer i Java En styrstruktur är något som påverkar

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan. Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen

Läs mer

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A Mål Datorteknik Föreläsning 5 Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av fle processer Att du ska förstå begreppet tråd Att du ska veta hur odelba resurser kan

Läs mer

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

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör. Tentamen Inst. för Informationsteknologi Avdelningen för Datorteknik Herbert P Sander Tel: 070 376 06 87 Ämne: Operativsystem Lokal: Post Scriptum, sal 2 Datum: Måndagen den 13 maj 2002 Tid: Kl 09.00-14.00

Läs mer

Föreläsning 8: Exempel och problemlösning

Föreläsning 8: Exempel och problemlösning TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

Läs mer

Systemnära programmering 2012-11-05. Tentamen. Systemnära programmering, 7.5hp 5 november 2012

Systemnära programmering 2012-11-05. Tentamen. Systemnära programmering, 7.5hp 5 november 2012 Tentamen Systemnära programmering, 7.5hp 5 november 2012 Skrivtid: 9 13 Hjälpmedel: EN av följande böcker Bilting & Skansholm: Vägen till C ELLER J.R. Hanly & E.B. Koffman: C Program Design for Engineers

Läs mer

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer

Läs mer

Tentamen. Datorteknik och realtidssystem

Tentamen. Datorteknik och realtidssystem Tentamen Datorteknik och realtidssystem, TSEA81 Datum 2017-04-18 Lokal KÅRA Tid 14-18 Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal frågor 5 Antal sidor (inklusive

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

OOP Tenta

OOP Tenta Stockholms universitet sid 1 OOP OOP Tenta 2012-01-14 10.00 15.00 Avser kurserna DSK1:OOP och GES:OOP Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt

Läs mer

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal Tentamen Datorteknik och realtidssystem, TSEA81 Datum 2018-04-0 Lokal G6 Tid 14-18 Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal uppgifter 5 Antal sidor 16 (inklusive

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng

Läs mer

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning 1 Datastrukturer (DAT037) Föreläsning 1 Datastrukturer (DAT037) Fredrik Lindblad 1 30 oktober 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Vad gör vi här? Programmeringsteknik fördjupningskurs (EDAA01; 7,5hp) Valfri för F, N & BME (kan läsas från åk 2 eller i sommar!) Avancerad

Läs mer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna

Läs mer

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private. Tentamen Programmeringsteknik I 2013-06-14 med lösningar 1. Svara kortfattat på följande: a) Vad är en instansvariabel? Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och

Läs mer

Tentamen i Programmering

Tentamen i Programmering LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen i Programmering EDAA65/EDA501/EDAA20 M MD W BK L 2018 05 30, 8.00 13.00 Preliminärt ger uppgifterna 7 + 14 + 6 + 9 + 4 = 40 poäng.

Läs mer

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13 LUNDS TEKNISKA HÖGSKOLA Datavetenskap Nätverksprogrammering 2006 LÖSNINGAR Tentamensskrivning Nätverksprogrammering (EDA095) 2004-05-27, kl 8-13 DEL 1 - Frågor av teoretisk, principiell eller utredande

Läs mer

Fö 5+6 TSEA81. Reflektion av Lab 2. clock.c (module) Real-time kernel + Real-time OS

Fö 5+6 TSEA81. Reflektion av Lab 2. clock.c (module) Real-time kernel + Real-time OS Fö 5+6 TSEA81 Real-time kernel + Real-time OS Reflektion av Lab 2 main.c void * clock_task(void *unused) int hours, minutes, seconds; while(1) clock_get_time(&hours,&minutes,&seconds); display_time(hours,minutes,seconds);

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2018 04 11, 8.00 13.00 Del 1 1. a) IP-numret identifierar en enskild dator på internet. b) Port-numret

Läs mer

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2011 10 19, 8.00 13.00 Anvisningar: Denna tentamen består av fem uppgifter. Preliminärt ger uppgifterna

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

Chapter 4: Writing Classes/ Att skriva egna klasser.

Chapter 4: Writing Classes/ Att skriva egna klasser. Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad

Läs mer

Föreläsning 12. Länkade listor

Föreläsning 12. Länkade listor Föreläsning 12 Länkade listor Jämför en array med en länkad lista m in n e t Array (med 5 element): + effektiv vid hämtning - ineffektiv vid insättning och borttagning Länkad lista (med 5 element): + effektiv

Läs mer

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt

Läs mer

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap. Institutionen för Datavetenskap Göteborgs universitet HT2008 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 4 Exempel på listor (klassen ArrayList). Ett exempel med fält.

Läs mer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer