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

Storlek: px
Starta visningen från sidan:

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

Transkript

1 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 EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja) 1

2 Innehåll Dödläge Hold-wait Resource allocation graphs (Resursallokeringsgrafer) 2

3 Deadlock - dödläge För att få en anställning behövs ett personnummer För att få ett personnummer behövs ett uppehållstillstånd För att få uppehållstillstånd behövs en anställning 3

4 Deadlock - dödläge 4

5 Deadlock - dödläge Om det blir en cirkel i villkoren, eller snarare väntandet på att villkoren uppfylls, hamnar systemet i ett dödläge (deadlock) Om det är teoretiskt möjligt att aktörer (trådar, bilar, personer) måste vänta på varandra i en cirkel, finns det en risk för dödläge (deadlock risk) 4

6 Dödläge - definition och bakgrund 5

7 Dödläge - definition och bakgrund Ömsesidig uteslutning betyder att en tråd kan vara försenad (blockerad) pga 5

8 Dödläge - definition och bakgrund Ömsesidig uteslutning betyder att en tråd kan vara försenad (blockerad) pga En tråd får inte komma in i en kritisk sekvens (av en delad resurs) om den är upptagen av en annan tråd 5

9 Dödläge - definition och bakgrund Ömsesidig uteslutning betyder att en tråd kan vara försenad (blockerad) pga En tråd får inte komma in i en kritisk sekvens (av en delad resurs) om den är upptagen av en annan tråd För att systemet ( och all data) ska vara konsistent, för att beräkningar och resultat ska vara förutsägbara och för effektivitetens skull, kan tillgång till en sådan resurs inte bli avbruten, eller utsättas för en sk roll-back ( bakåt-behandling ) 5

10 Dödläge - definition och bakgrund Ömsesidig uteslutning betyder att en tråd kan vara försenad (blockerad) pga En tråd får inte komma in i en kritisk sekvens (av en delad resurs) om den är upptagen av en annan tråd För att systemet ( och all data) ska vara konsistent, för att beräkningar och resultat ska vara förutsägbara och för effektivitetens skull, kan tillgång till en sådan resurs inte bli avbruten, eller utsättas för en sk roll-back ( bakåt-behandling ) Vi har alltså ingen resource preemption (inget lov för avbrott på resurser annat än -OBS skillnaden! - beräkningstid, dvs processorn, som hanteras med preemptive scheduling - avbrytbar schemaläggning.) 5

11 Dödläge - definition och bakgrund Ömsesidig uteslutning betyder att en tråd kan vara försenad (blockerad) pga En tråd får inte komma in i en kritisk sekvens (av en delad resurs) om den är upptagen av en annan tråd För att systemet ( och all data) ska vara konsistent, för att beräkningar och resultat ska vara förutsägbara och för effektivitetens skull, kan tillgång till en sådan resurs inte bli avbruten, eller utsättas för en sk roll-back ( bakåt-behandling ) Vi har alltså ingen resource preemption (inget lov för avbrott på resurser annat än -OBS skillnaden! - beräkningstid, dvs processorn, som hanteras med preemptive scheduling - avbrytbar schemaläggning.) Om blockeringen inte tar slut, kan man konstatera ett dödläge (deadlock). 5

12 Dödläge - definition och bakgrund Ömsesidig uteslutning betyder att en tråd kan vara försenad (blockerad) pga En tråd får inte komma in i en kritisk sekvens (av en delad resurs) om den är upptagen av en annan tråd För att systemet ( och all data) ska vara konsistent, för att beräkningar och resultat ska vara förutsägbara och för effektivitetens skull, kan tillgång till en sådan resurs inte bli avbruten, eller utsättas för en sk roll-back ( bakåt-behandling ) Vi har alltså ingen resource preemption (inget lov för avbrott på resurser annat än -OBS skillnaden! - beräkningstid, dvs processorn, som hanteras med preemptive scheduling - avbrytbar schemaläggning.) Om blockeringen inte tar slut, kan man konstatera ett dödläge (deadlock). Wikipedia säger: Deadlock refers to a specific condition when two or more processes are each waiting for the other to release a resource, or more than two processes are waiting in a circular chain. 5

13 Dödläge med semaforer Två trådar vill komma åt två resurser och hamnar i ett speciellt läge (som kan bli dödläge), nämligen i ett hold - wait state T1 res 1 res 2 T2 take take take take

14 Dödläge med semaforer, kod-exempel T1 T2 T1 T2... S2.take(); S1.take();... S1.give(); S2.give();... S1.take(); S2.take();... S2.give(); S1.give(); S2.take(); S1.take(); S1.take(); S2.take(); blocked blocked 7

15 Dödläge med semaforer, kod-exempel T1 T2 T1 T2... S2.take(); S1.take();... S1.give(); S2.give();... S1.take(); S2.take();... S2.give(); S1.give(); S2.take(); S1.take(); S1.take(); S2.take(); blocked blocked Ett dödläge kan uppstå om en tråd utför take och blir sen avbruten av schemaläggaren (context switch, kontextbyte, trådbyte). 7

16 Dödläge med monitor, kod-exempel T1 T2 M1... M1 m1; m1.op1(); M2 m2; m2.op1();... T1 M2 T2 class M1 { M2 m2; synchronized void op1() { m2.op2(); } class M2 { M1 m1; synchronized void op1() { m1.op2(); } } synchronized void op2() { wait(); } } synchronized void op2() { wait(); } 8

17 Färdiga lösningar (?) 9

18 Färdiga lösningar (?) Som så ofta finns det programmeringsspråk eller -verktyg som tvingar programmeraren att bygga säkra system 9

19 Färdiga lösningar (?) Som så ofta finns det programmeringsspråk eller -verktyg som tvingar programmeraren att bygga säkra system Concurrent Pascal (Hansen, 1979) är ett sådant språk som använder enbart monitorer för ömsesidig uteslutning och tillåter inga referenser framåt, från monitor till monitor. 9

20 Färdiga lösningar (?) Som så ofta finns det programmeringsspråk eller -verktyg som tvingar programmeraren att bygga säkra system Concurrent Pascal (Hansen, 1979) är ett sådant språk som använder enbart monitorer för ömsesidig uteslutning och tillåter inga referenser framåt, från monitor till monitor. Fördelen är såklart att man undviker problem, Concurrent Pascal påstås göra dödläge omöjligt... 9

21 Färdiga lösningar (?) Som så ofta finns det programmeringsspråk eller -verktyg som tvingar programmeraren att bygga säkra system Concurrent Pascal (Hansen, 1979) är ett sådant språk som använder enbart monitorer för ömsesidig uteslutning och tillåter inga referenser framåt, från monitor till monitor. Fördelen är såklart att man undviker problem, Concurrent Pascal påstås göra dödläge omöjligt nackdelen är dock att man förlorar flexibilitet och att det kan kosta mycket (resurser, beräkningstid, etc). 9

22 Färdiga lösningar (?) Som så ofta finns det programmeringsspråk eller -verktyg som tvingar programmeraren att bygga säkra system Concurrent Pascal (Hansen, 1979) är ett sådant språk som använder enbart monitorer för ömsesidig uteslutning och tillåter inga referenser framåt, från monitor till monitor. Fördelen är såklart att man undviker problem, Concurrent Pascal påstås göra dödläge omöjligt nackdelen är dock att man förlorar flexibilitet och att det kan kosta mycket (resurser, beräkningstid, etc). Dessutom kan man faktiskt fortfarande bygga ett dödläge med en egen enkel resurshantering med monitorer utan framåt-referenser: 9

23 Färdiga lösningar (?) Som så ofta finns det programmeringsspråk eller -verktyg som tvingar programmeraren att bygga säkra system Concurrent Pascal (Hansen, 1979) är ett sådant språk som använder enbart monitorer för ömsesidig uteslutning och tillåter inga referenser framåt, från monitor till monitor. Fördelen är såklart att man undviker problem, Concurrent Pascal påstås göra dödläge omöjligt nackdelen är dock att man förlorar flexibilitet och att det kan kosta mycket (resurser, beräkningstid, etc). Dessutom kan man faktiskt fortfarande bygga ett dödläge med en egen enkel resurshantering med monitorer utan framåt-referenser: class R { boolean occupied = false; } synchronized void request() { while( occupied) wait(); occupied = true; } synchronized void release() { occupied = false; notify(); } R R1, R2; class P1 extends Thread {... R1.request(); R2.request();... } class P2 extends Thread {... R2.request(); R1.request();... } 9

24 Krav för dödläge (Peterson / Silberschatz) 10

25 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 10

26 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 10

27 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan reservera (ta) en resurs och vänta sedan på en annan 10

28 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan reservera (ta) en resurs och vänta sedan på en annan 3. Ingen resource-preemption (avbrott under resursnyttjande) - en tråd kan inte tvingas att lämna en resurs när den väl har kommit in 10

29 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan reservera (ta) en resurs och vänta sedan på en annan 3. Ingen resource-preemption (avbrott under resursnyttjande) - en tråd kan inte tvingas att lämna en resurs när den väl har kommit in 4. Cirkulärt vänteläge - när det finns en cirkel i tråd-resurs-beroenden 10

30 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan reservera (ta) en resurs och vänta sedan på en annan 3. Ingen resource-preemption (avbrott under resursnyttjande) - en tråd kan inte tvingas att lämna en resurs när den väl har kommit in 4. Cirkulärt vänteläge - när det finns en cirkel i tråd-resurs-beroenden För Java - monitorer gäller följande: 10

31 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan reservera (ta) en resurs och vänta sedan på en annan 3. Ingen resource-preemption (avbrott under resursnyttjande) - en tråd kan inte tvingas att lämna en resurs när den väl har kommit in 4. Cirkulärt vänteläge - när det finns en cirkel i tråd-resurs-beroenden För Java - monitorer gäller följande: 1. Monitor - enbart en tråd kan komma in, ömsesidig uteslutning är uppfylld 10

32 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan reservera (ta) en resurs och vänta sedan på en annan 3. Ingen resource-preemption (avbrott under resursnyttjande) - en tråd kan inte tvingas att lämna en resurs när den väl har kommit in 4. Cirkulärt vänteläge - när det finns en cirkel i tråd-resurs-beroenden För Java - monitorer gäller följande: 1. Monitor - enbart en tråd kan komma in, ömsesidig uteslutning är uppfylld 2. Anrop av en metod i en annan monitor inifrån en monitor-metod är möjligt 10

33 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan reservera (ta) en resurs och vänta sedan på en annan 3. Ingen resource-preemption (avbrott under resursnyttjande) - en tråd kan inte tvingas att lämna en resurs när den väl har kommit in 4. Cirkulärt vänteläge - när det finns en cirkel i tråd-resurs-beroenden För Java - monitorer gäller följande: 1. Monitor - enbart en tråd kan komma in, ömsesidig uteslutning är uppfylld 2. Anrop av en metod i en annan monitor inifrån en monitor-metod är möjligt 3. En monitor friges enbart om en tråd lämnar den tillfälligt (wait()) eller lämnar efter avslutad jobb, ingen resource-preemption, därmed kan det bli dödläge 10

34 Krav för dödläge (Peterson / Silberschatz) Följande punkter måste vara uppfyllda för att det ska bli dödläge: 1. Ömsesidig uteslutning - enbart en tråd åt gången kan komma åt en resurs. 2. Hold and Wait (hålla och vänta) - en tråd kan reservera (ta) en resurs och vänta sedan på en annan 3. Ingen resource-preemption (avbrott under resursnyttjande) - en tråd kan inte tvingas att lämna en resurs när den väl har kommit in 4. Cirkulärt vänteläge - när det finns en cirkel i tråd-resurs-beroenden För Java - monitorer gäller följande: 1. Monitor - enbart en tråd kan komma in, ömsesidig uteslutning är uppfylld 2. Anrop av en metod i en annan monitor inifrån en monitor-metod är möjligt 3. En monitor friges enbart om en tråd lämnar den tillfälligt (wait()) eller lämnar efter avslutad jobb, ingen resource-preemption, därmed kan det bli dödläge 4. Cirkulärt vänteläge är det som man måste åtgärda själv, allt annat KAN man inte ändra 10

35 Dining philosophers - en klassiker... Philosopher while( true) { think(); preproto(); eat(); postproto(); } preproto() = take fork(s) postproto() = give fork(s) 11

36 Resursallokeringsgrafer 12

37 Resursallokeringsgrafer Ett verktyg för att upptäcka cirkulära hold-wait situationer, och för att förstå, vilka trådar och resurser kan inblandas i ett dödläge, 12

38 Resursallokeringsgrafer Ett verktyg för att upptäcka cirkulära hold-wait situationer, och för att förstå, vilka trådar och resurser kan inblandas i ett dödläge, 1. Rita resurserna (monitorer, semaforer...) 12

39 Resursallokeringsgrafer Ett verktyg för att upptäcka cirkulära hold-wait situationer, och för att förstå, vilka trådar och resurser kan inblandas i ett dödläge, 1. Rita resurserna (monitorer, semaforer...) 2. Rita alla hold-wait situationer. Pil från en upptagen resurs till en markör för tråden som håller i resursen (kan bli flera markörer för en tråd, en för varje hold-wait) och pil från trådmarkör till resursen den väntar på. 12

40 Resursallokeringsgrafer Ett verktyg för att upptäcka cirkulära hold-wait situationer, och för att förstå, vilka trådar och resurser kan inblandas i ett dödläge, 1. Rita resurserna (monitorer, semaforer...) 2. Rita alla hold-wait situationer. Pil från en upptagen resurs till en markör för tråden som håller i resursen (kan bli flera markörer för en tråd, en för varje hold-wait) och pil från trådmarkör till resursen den väntar på. 3. Cirkel i ritningen? Då är det risk för dödläge. Hold-wait förbindelserna i cirkeln visar hur många och vilka trådar kan orsaka ett dödläge. 12

41 Resursallokeringsgrafer Ett verktyg för att upptäcka cirkulära hold-wait situationer, och för att förstå, vilka trådar och resurser kan inblandas i ett dödläge, 1. Rita resurserna (monitorer, semaforer...) 2. Rita alla hold-wait situationer. Pil från en upptagen resurs till en markör för tråden som håller i resursen (kan bli flera markörer för en tråd, en för varje hold-wait) och pil från trådmarkör till resursen den väntar på. 3. Cirkel i ritningen? Då är det risk för dödläge. Hold-wait förbindelserna i cirkeln visar hur många och vilka trådar kan orsaka ett dödläge. 12

42 Resursallokeringsgrafer, exempel T1... A.take(); B.take(); C.take();... C.give(); B.give(); A.give(); T2... D.take(); C.take(); B.take();... B.give(); C.give(); D.give(); 13

43 Resursallokeringsgrafer, exempel T1... A.take(); B.take(); C.take();... C.give(); B.give(); A.give(); T2... D.take(); C.take(); B.take();... B.give(); C.give(); D.give(); Ett dödläge kan uppstå om T1 lyckas komma till B.take() och blir sen avbruten av T2, som då lyckas komma till C.take() och börjar vänta på B (som är upptagen av T1). När då T1 får exekvera igen, väntar den i sin tur på C (som är upptagen av T2). 13

44 Dödläge i cirkel - tåg på räls E F D A C B 14

45 Dödläge i cirkel - tåg på räls E F D A C B Även i system där ordningen av semafor.take()-anropen är samma för alla trådar, kan det bli problem (se programmet!) 14

46 Dödläge - svält - livelock 15

47 Deadlock (dödläge) Dödläge - svält - livelock 15

48 Deadlock (dödläge) Dödläge - svält - livelock 1. När flera trådar försöker komma åt samma resurs måste en av de lyckas någon gång - annars har vi ett dödläge. 15

49 Deadlock (dödläge) Dödläge - svält - livelock 1. När flera trådar försöker komma åt samma resurs måste en av de lyckas någon gång - annars har vi ett dödläge. 2. Ifall att ordningen av resursallokering är olyckligt gjort, eller antalet trådar går över en gräns, kan det bli dödläge, dvs ingen tråd lyckas exekvera eller få tillgång till resurserna den behöver. 15

50 Deadlock (dödläge) Dödläge - svält - livelock 1. När flera trådar försöker komma åt samma resurs måste en av de lyckas någon gång - annars har vi ett dödläge. 2. Ifall att ordningen av resursallokering är olyckligt gjort, eller antalet trådar går över en gräns, kan det bli dödläge, dvs ingen tråd lyckas exekvera eller få tillgång till resurserna den behöver. Starvation (svält) 15

51 Deadlock (dödläge) Dödläge - svält - livelock 1. När flera trådar försöker komma åt samma resurs måste en av de lyckas någon gång - annars har vi ett dödläge. 2. Ifall att ordningen av resursallokering är olyckligt gjort, eller antalet trådar går över en gräns, kan det bli dödläge, dvs ingen tråd lyckas exekvera eller få tillgång till resurserna den behöver. Starvation (svält) 1. Om en tråd vill ha en resurs så måste den lyckas någon gång för att inte hamna i svält-läge 15

52 Deadlock (dödläge) Dödläge - svält - livelock 1. När flera trådar försöker komma åt samma resurs måste en av de lyckas någon gång - annars har vi ett dödläge. 2. Ifall att ordningen av resursallokering är olyckligt gjort, eller antalet trådar går över en gräns, kan det bli dödläge, dvs ingen tråd lyckas exekvera eller få tillgång till resurserna den behöver. Starvation (svält) 1. Om en tråd vill ha en resurs så måste den lyckas någon gång för att inte hamna i svält-läge 2. Vi accepterar att det kan bli svält för mindre prioriterade aktiviteter, så att det som är viktigt kan utföras (jfr buffer-exemplet, föreläsning 3). 15

53 Deadlock (dödläge) Dödläge - svält - livelock 1. När flera trådar försöker komma åt samma resurs måste en av de lyckas någon gång - annars har vi ett dödläge. 2. Ifall att ordningen av resursallokering är olyckligt gjort, eller antalet trådar går över en gräns, kan det bli dödläge, dvs ingen tråd lyckas exekvera eller få tillgång till resurserna den behöver. Starvation (svält) 1. Om en tråd vill ha en resurs så måste den lyckas någon gång för att inte hamna i svält-läge 2. Vi accepterar att det kan bli svält för mindre prioriterade aktiviteter, så att det som är viktigt kan utföras (jfr buffer-exemplet, föreläsning 3). Livelock (levande låsning) 15

54 Deadlock (dödläge) Dödläge - svält - livelock 1. När flera trådar försöker komma åt samma resurs måste en av de lyckas någon gång - annars har vi ett dödläge. 2. Ifall att ordningen av resursallokering är olyckligt gjort, eller antalet trådar går över en gräns, kan det bli dödläge, dvs ingen tråd lyckas exekvera eller få tillgång till resurserna den behöver. Starvation (svält) 1. Om en tråd vill ha en resurs så måste den lyckas någon gång för att inte hamna i svält-läge 2. Vi accepterar att det kan bli svält för mindre prioriterade aktiviteter, så att det som är viktigt kan utföras (jfr buffer-exemplet, föreläsning 3). Livelock (levande låsning) 1. Om flera trådar försöker komma åt samma resurs(er) men träda tillbaka hela tiden innan de lyckas få tillgång till allt de behöver, hamnar man i ett slags zombie -läge; trådarna är vid liv, men gör ingen nytta. 15

55 Deadlock (dödläge) Dödläge - svält - livelock 1. När flera trådar försöker komma åt samma resurs måste en av de lyckas någon gång - annars har vi ett dödläge. 2. Ifall att ordningen av resursallokering är olyckligt gjort, eller antalet trådar går över en gräns, kan det bli dödläge, dvs ingen tråd lyckas exekvera eller få tillgång till resurserna den behöver. Starvation (svält) 1. Om en tråd vill ha en resurs så måste den lyckas någon gång för att inte hamna i svält-läge 2. Vi accepterar att det kan bli svält för mindre prioriterade aktiviteter, så att det som är viktigt kan utföras (jfr buffer-exemplet, föreläsning 3). Livelock (levande låsning) 1. Om flera trådar försöker komma åt samma resurs(er) men träda tillbaka hela tiden innan de lyckas få tillgång till allt de behöver, hamnar man i ett slags zombie -läge; trådarna är vid liv, men gör ingen nytta. 2. Utifrån ser det ut som dödläge, men kollar man upp det, är trådarna aktiva, fast det händer ingenting 15

56 Övning 3 Resource allocation graphs, kort exempel Programmeringsuppgift på papper Kort introduktion laboration 3 (tvättmaskin) 16

57 Sammanfattning Dödläge Resource allocation graphs Man borde kunna rita RAGs och analysera ett system för att hitta risk för dödläge, både utifrån kod eller en systembeskrivning Man borde kunna skriva kod (sekvenser) när man har gjort ett system riskfritt med hjälp av en RAG. Lästips: e-bok: Kap 4, Deadlock (s ) Artikel Resource Allocation Graphs, Roger Henriksson (länk på kursens materialsida, rekommenderas!) 17

Deadlocks. detektera och undvik

Deadlocks. detektera och undvik Deadlocks detektera och undvik Enkla exempel Smal bro med en fil En fyrvägskorsning Fyra vägkorsningar Två lås P: Lock A, Lock B.. Rel. A, Rel. B Q: Lock B, Lock A.. Rel. B, Rel. A Vad motsvarar Resurser?

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. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2 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

Läs mer

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

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

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

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

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

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. - 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

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

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

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

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

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

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

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

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

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

Deadlock. Deadlock uppstår när två eller flera processer hamnar i ett cirkelberoende. Resurs 1. Processen vill ha resursen. Processen äger resursen

Deadlock. Deadlock uppstår när två eller flera processer hamnar i ett cirkelberoende. Resurs 1. Processen vill ha resursen. Processen äger resursen Deadlock uppstår när två eller flera processer hamnar i ett cirkelberoende Processen vill ha resursen Resurs 1 Process A Processen äger resursen Processen äger resursen Process B Resurs 2 Processen vill

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

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

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

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

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/4 2014 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack UML-översikt

Läs mer

Trådar och Multiprocessorer. Föreläsning 6

Trådar och Multiprocessorer. Föreläsning 6 Trådar och Multiprocessorer Föreläsning 6 Trådar och multiprocessorer Hur skriver man program som hanterar många saker samtidigt, t.ex. en web-server som hanterar många samtidiga begäran från olika klienter?

Läs mer

Tentamen EDA698 Realtidssystem (Helsingborg)

Tentamen EDA698 Realtidssystem (Helsingborg) LUNDS TEKNISKA HÖGSKOLA 1(10) Institutionen för datavetenskap Tentamen EDA698 Realtidssystem (Helsingborg) 2013 08 23, 08.00 13.00 Det är tillåtet att använda Java snabbreferens och miniräknare, samt ordbok.

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

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) 2004-05-25, kl 8-13

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

Läs mer

Realtidsprogrammering Ordinarie tentamen

Realtidsprogrammering Ordinarie tentamen Tentamen i Realtidsprogrammering Ordinarie tentamen Datum: 2006-10-20 Tid: 08:00 13:00 Ansvarig lärare: Telefon: 1438 (kontor) Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng fördelade på 7 uppgifter.

Läs mer

Tentamen i TDIU16 Process- och operativsystemprogrammering

Tentamen i TDIU16 Process- och operativsystemprogrammering Linköpings universitet Institutionen för datavetenskap 2017-06-03 Tentamen i TDIU16 Process- och operativsystemprogrammering Datum 2017-06-03 Tid 14-18 Institution IDA Kurskod TDIU16 Provkod TEN1 Examinator

Läs mer

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/3 2017 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack Klassen Object

Läs mer

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. (7) Objektinteraktion Objektorienterad programmering Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. Mål Efter övningen skall du kunna konstruera ett program med flera

Läs mer

a) Vad kallar vi den sorts fel som Hasse:s programvara är behäftad med? (1p)

a) Vad kallar vi den sorts fel som Hasse:s programvara är behäftad med? (1p) LUNDS TEKNISKA HÖGSKOLA Datavetenskap Realtidsprogrammering : EDA040 DAT040 Tentamensskrivning - Realtidsprogrammering 2005-06-01, kl 8.00-13.00 Anvisningar Tillåtna hjälpmedel: inga utöver Java snabbreferens.

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

Software Technology. Josef Svenningsson

Software Technology. Josef Svenningsson Software Technology Josef Svenningsson Software Technology Software Technology Området Software Technology handlar i mångt och mycket om följande frågeställning: Hur designar man programmeringsspråk för

Läs mer

Tentamen i Realtidsprogrammering

Tentamen i Realtidsprogrammering Tentamen i Realtidsprogrammering Omtentamen Datum: 2008-12-13 Tid: 14:00 17:00 Ansvarig lärare: Telefon: 301438 Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng fördelade på 5 uppgifter. 20 poäng

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University Datum för tentamen Date of exam Sal Room Tid Time Kurskod Course code Provkod LADOK code

Läs mer

Summering av fält. Synkronisering. Summering av fält. Bounded Buffer. Bounded Buffer (get) Bounded Buffer (put)

Summering av fält. Synkronisering. Summering av fält. Bounded Buffer. Bounded Buffer (get) Bounded Buffer (put) Summering av fält Synkronisering Ordning och reda function sum_low is begin for i in 0..999_999_999 sum += array[i] end sum_low function sum_high is begin for i in 1_000_000_000..1_999_999_999 sum += array[i]

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

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

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

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

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation. Vad är viktigast? Sammanfattning Processer och trådar Avbrottshantering Vad det är och hur det fungerar (på låg nivå) Vilka problem finns Schemaläggning Flerprocessorsystem Varianter, problem Interprocesskommunikation

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

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

1.1 Runnable och Thread

1.1 Runnable och Thread 1 Trådar 1.1 Runnable och Thread I övningen är ShoutThread hårdkodad att använda just ShoutRunnable. Det typiska förfarandet brukar annars vara att skicka över din Runnable i konstruktor-anropet till Thread:

Läs mer

Tentamen i ID2206, ID2200 samt IS1350 Operativsystem

Tentamen i ID2206, ID2200 samt IS1350 Operativsystem Tentamen i ID2206, ID2200 samt IS1350 Operativsystem Tisdagen 2014-03-18 kl 09:00-13:00 Examinator: ID2206, ID2200 Robert Rönngren, IS1350 Jim Dowling Hjälpmedel: Inga Tentamensfrågorna behöver inte återlämnas

Läs mer

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2016 03 18, kl. 14.00 17.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I

Läs mer

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Tentamen, EDA501/EDAA20 Programmering M MD W BK L LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDA501/EDAA20 Programmering M MD W BK L 2017 05 31, 8.00 13.00 Anvisningar: Preliminärt ger uppgifterna 9 + 12 + 10 + 9 = 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

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

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys Realtidssystem HT03 Vad är realtidssystem? Föreläsare: Wang Yi Rum: 1235, yi@it.uu.se, Tel: 471 3110 Assistent: Tobias Amnell Rum: 1216, tobiasa@it.uu.se, Tel: 4717122 Webbsida: www.it.uu.se/edu/course/homepage/realtid/h03

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

Program & programmering

Program & programmering Program & programmering Vad är program? Satser och instruktioner, toggla igenom exempel Program på olika nivåer, för olika maskiner, för olika saker Tolka program; kompilator, intepretator, binärbytekod,

Läs mer

Övning2. Variabler. Data typer

Övning2. Variabler. Data typer Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man

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

2D1339 Programkonstruktion för F1, ht 2003

2D1339 Programkonstruktion för F1, ht 2003 2D1339 Programkonstruktion för F1, ht 2003 Kontrollskrivning 1 Onsdag 19/11 2003 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

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

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

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

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

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng

Läs mer

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

Läs mer

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. (7) Objektinteraktion Objektorienterad programmering 2 Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt. Mål Efter övningen skall du kunna konstruera ett program med

Läs mer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

OOP Omtenta 2011-03-05 10.00 15.00

OOP Omtenta 2011-03-05 10.00 15.00 Stockholms universitet 1 (6) OOP OOP Omtenta 2011-03-05 10.00 15.00 Avser kurserna: DSK1:OOP GES:OOP ID1013 Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv

Läs mer

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl TDDIU81 Processer och trådar Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl Sammanfattning Den här rapporten innehåller en kort genomgång av allmän process och trådhantering

Läs mer

Laboration A Objektsamlingar

Laboration A Objektsamlingar Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se

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

Agenda (obs! halvdag)

Agenda (obs! halvdag) Objektorienterad programmering Föreläsning 3 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (obs! halvdag) Do-satsen Break-satsen Continue-satsen Goto-satsen Switch-satsen Villkorsoperatorn

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg 1. a) Figure 1 2015 06 04 GeometryApp GraphicalApp

Läs mer

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Tentamen, EDA501 Programmering M L TM W K V

Tentamen, EDA501 Programmering M L TM W K V LUNDS TEKNISKA HÖGSKOLA 1(0) Institutionen för datavetenskap Tentamen, EDA501 Programmering M L TM W K V 2010 05 31, 8.00 13.00 Anvisningar: Denna tentamen består av 4 uppgifter. Preliminärt ger uppgifterna

Läs mer

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning Översikt Uttryck i tilldelningssatser Typer och typomvandling Klasser Metoder Konstanter Eclipse-tips MERA JAVA OCH ECLIPSE Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 public class

Läs mer

Tentamen, EDAA10 Programmering i Java

Tentamen, EDAA10 Programmering i Java LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDAA10 Programmering i Java 2019 08 21, 08.00 13.00 Anvisningar: Preliminärt ger uppgifterna 25 + 15 + 5 = 45 poäng. För godkänt betyg

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

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

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

Läs mer

Tentamen i Introduktion till programmering

Tentamen i Introduktion till programmering Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:

Läs mer

Grundkurs i programmering - intro

Grundkurs i programmering - intro Grundkurs i programmering - intro Linda Mannila 4.9.2007 Dagens föreläsning Allmän kursinformation: mål, syfte, upplägg, examination, litteratur, etc. Hur arbetar en dator? Hur vi får datorn att förstå

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

Blockkedjor. en introduktion för datavetare. Rikard Hjort, 24 maj 2019

Blockkedjor. en introduktion för datavetare. Rikard Hjort, 24 maj 2019 Blockkedjor en introduktion för datavetare Vem är jag? Varför ska ni lära er om blockkedjor? Alla ska gå härifrån och kunna... förklara Bitcoin är uppbyggt bygga en egen blockkedja läsa på själva om blockkedjeprojekt

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

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?

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