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

Storlek: px
Starta visningen från sidan:

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

Transkript

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 baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja) 1

2 Om kursen Upplägg: 7 föreläsningar 4 övningar / frågestunder uppgifter, både teoretiska och praktiska, delvis från gamla tentor, bearbetas i övningssalen; kursledare är på plats och besvarar frågor, det förutsätts att man kommer med eget arbetsmaterial (övningshäfte) för att kunna följa eventuella allmänna förklaringar och diskussioner! laborationsuppgifterna kan tas upp och börjar bearbetas (design) 3 obligatoriska laborationer laborationsförberedande övningar ska avslutas med redovisning av skriftlig designförslag, godkänt design behövs inför praktisk redovisning! FÖRBEREDELSE: grupp 1 kl 10-12, grupp 2 kl (med undantag lv 6) REDOVISNING: grupp 1 kl 13-15, grupp 2 kl den schemalagda tiden räcker INTE, kom med förberedda lösningar 2

3 Om kursen (2) ALL information på Allmän information, laborationsanvisningar, Eclipse-workspace Ex-tentor Föreläsningsbilder Nyheter (kolla regelbundet) Obligatoriskt Kursmaterial E-bok: I.C. Bertolotti & G. Manduchi, Real-time Embedded Systems (CRC Press, 2012) Övningshäfte (+ lösningar) Multithreaded programming in Java (Klas Nilsson / Elin A. Topp (ed) 08/2017) Extra material Kurskompendium Java based Real-time programming (Klas Nilsson, ) Länksamling på kurshemsidan 3

4 Kursöversikt Realtidssystem - jämlöpande processer under tidsgarantikrav (Föreläsning 1) Jämlöpande exekvering, trådhantering, hantering av delade resurser ömsesidig uteslutning, signalering, datahantering, trådkommunikation semafor: föreläsning (1), 2 övning 1, 2 laboration 1 monitor: föreläsning 3 övning 3, 4 laboration 2 mailbox: föreläsning 4 övning 5, 6 laboration 3 Tidskrav, systemhantering, schemaläggning resursallokering, schemaläggning, prioritetshantering, schemaläggningsanalys dödläge: föreläsning 5 övning 5 schemaläggning + analys föreläsning 6, 7 övning 7 4

5 Innehåll Introduktion till Jämlöpande exekvering Sekventiell bearbetning i en parallel värld Hantera olika uppgifter samtidigt - jämlöpande exekvering Trådar, processer, parallellitet och Java Pre-emption, kontextbyte Trådar i Java Hantera gemensamma resurser, kapplöpning, ömsesidig uteslutning 5

6 Innehåll Introduktion till Jämlöpande exekvering Sekventiell bearbetning i en parallel värld Hantera olika uppgifter samtidigt - jämlöpande exekvering Trådar, processer, parallellitet och Java Pre-emption, kontextbyte Trådar i Java Hantera gemensamma resurser, kapplöpning, ömsesidig uteslutning 6

7 Den parallella världen Flera processorer : Laga mat medan en annan dukar En kör, en läser kartan En processor : Stryka skjortor och lyssna på musik Läsa kartan och gå mot målet 7

8 Jämlöpande aktiviteter 8

9 Jämlöpande aktiviteter Laga mat medan en annan dukar? 8

10 Jämlöpande aktiviteter Laga mat medan en annan dukar? En kör, en läser kartan? 8

11 Jämlöpande aktiviteter Laga mat medan en annan dukar? En kör, en läser kartan? Stryka skjortor och lyssna på musik? 8

12 Jämlöpande aktiviteter Laga mat medan en annan dukar? En kör, en läser kartan? Stryka skjortor och lyssna på musik? Läsa kartan och gå mot målet? 8

13 Jämlöpande aktiviteter Laga mat medan en annan dukar? En kör, en läser kartan? Stryka skjortor och lyssna på musik? Läsa kartan och gå mot målet? 8

14 Sekventiell bearbetning Situation 1: Utbetalning först A: Läs 5000 A: Belopp = A: Skriv 4000 B: Läs 4000 B: Belopp = B: Skriv Situation 2: Inbetalning först B: Läs 5000 B: Belopp = B: Skriv A: Läs A: Belopp = A: Skriv Två aktiviteter (program, trådar (threads), processer) utförs oberoende och ej samtidigt. I båda situationer blir resultatet korrekt. 9

15 Maskinen som gjuter LEGO-klossar Styra temperaturen i plastmassan (period) och pistongen (evenemang) samtidigt, utan att det blir fel i en av styrningarna. doheat temp ~ dopush dopull isempty isin isout 10

16 Maskinen som gjuter LEGO-klossar I ett program: // börja med pistongen bak while( true) { while(!isempty){ tempcontrol(); sleep( tsamp); on( dopush); while(!isout) { tempcontrol(); sleep( tsamp); off( dopush); on( dopull); while(!isin) { tempcontrol(); sleep( tsamp); off( dopull); doheat ~ dopush dopull isin isout Vad kan gå fel här? temp isempty 11

17 Maskinen som gjuter LEGO-klossar Mera naturligt: I två program... // Aktivitet 1: Temperatur while( true) { if( temp > max) off( doheat); else if( temp < min) on( doheat); sleep( tsamp); doheat ~ temp // Aktivitet 2: Pistong while( true){ await( isempty); on( dopush); await( isout); off( dopush); on( dopull); await( isin); off( dopull); dopush dopull isin isout isempty 12

18 Real-world objekt och aktioner Sekventiell: Aktioner av en enstaka aktör Mjukvaru-exekvering Parallellt (jämlöpande): Fysiska processer. Elektronisk hårdvara. Inbyggda datorer och deras styrning (mjukvara): Sekventiella program som körs jämlöpande (och i realtid) för att styra en parallell omgivning Vi måste tänka både sekventiellt och parallellt när vi bygger system 13

19 Realtidskrav Ett realtidssystem måste utföra alla beräkningar logiskt korrekt reagera på inmatningar jämlöpande alltid ha konsistent data att arbeta med producera alla (del-)resultat i tid För att uppnå realtids-korrekthet (real-time correctness) måste mjukvaran säkerställa, att det jämlöpande-korrekta (concurrency-correctness) resultatet produceras pålitligt i tid. 14

20 Process eller tråd (thread) Trådar i OS-process semaforer monitorer meddelanden i kö (mailbox / event queue) OS-processer OS-Semafor resurs fil, fil-lås pipe, socket Inbyggda trådar Semafor eller hårdvara Inbyggd minne nätverk, fieldbus sub-millisekund millisekund microsekunder vårdad av OS-process stöd av programmeringsspråk class Thread vårdad av OS / dator stöd av OS / API classes System, Runtime, Process vårdad av hårdvaran stöd av programmeringsspråk class Thread EDAF85 15

21 Innehåll Introduktion till Jämlöpande exekvering Sekventiell bearbetning i en parallel värld Hantera olika uppgifter samtidigt - jämlöpande exekvering Trådar, processer, parallellitet och Java Pre-emption, kontextbyte Trådar i Java Hantera gemensamma resurser, kapplöpning, ömsesidig uteslutning 16

22 Jämlöpande exekvering av sekventiella processer En processor måste delas av flera aktiviteter - genom att dela över tid i väldigt små enheter, får man något som ser samtidigt ut. 17

23 Jämlöpande exekvering av sekventiella processer En processor måste delas av flera aktiviteter - genom att dela över tid i väldigt små enheter, får man något som ser samtidigt ut. 17

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

25 Kontextbyte (Context switch) 19

26 Kontextbyte (Context switch) Kontexten av ett program / en tråd är all specifik data som tråden behöver ha med sig 19

27 Kontextbyte (Context switch) Kontexten av ett program / en tråd är all specifik data som tråden behöver ha med sig När systemet byter från en löpande tråd till den nästa händer det alltså ett kontextbyte (context switch), dvs all information som gäller den gamla löpande tråden sparas undan för senare vidarebearbetning, och all data tillhörande den nya löpande tråden plockas fram. 19

28 Kontextbyte (Context switch) Kontexten av ett program / en tråd är all specifik data som tråden behöver ha med sig När systemet byter från en löpande tråd till den nästa händer det alltså ett kontextbyte (context switch), dvs all information som gäller den gamla löpande tråden sparas undan för senare vidarebearbetning, och all data tillhörande den nya löpande tråden plockas fram. I en typisk s.k. pre-emptive ( avbrytbar ) OS-kärna kan det se ut så här: Turn off interrupts Push PC, then CPU registers on stack Save stack pointer in process record Get new process record and restore stack pointer from it Pop CPU registers, then PC from stack Turn on interrupts Save Switch Restore 19

29 Kontextbyte (Context switch) Kontexten av ett program / en tråd är all specifik data som tråden behöver ha med sig När systemet byter från en löpande tråd till den nästa händer det alltså ett kontextbyte (context switch), dvs all information som gäller den gamla löpande tråden sparas undan för senare vidarebearbetning, och all data tillhörande den nya löpande tråden plockas fram. I en typisk s.k. pre-emptive ( avbrytbar ) OS-kärna kan det se ut så här: Turn off interrupts Push PC, then CPU registers on stack Save stack pointer in process record Get new process record and restore stack pointer from it Pop CPU registers, then PC from stack Turn on interrupts Save Switch Restore 19

30 Pre-emption 20

31 Pre-emption Det finns olika strategier för tillåtelse av kontextbyten: 20

32 Pre-emption Det finns olika strategier för tillåtelse av kontextbyten: Non-pre-emptive scheduling ( icke-avbrytbar schemaläggning): Tråden som kör kan inte avbrytas tills den släpper CPUn frivilligt explicit genom att anropa yield() eller implicit genom (synchronized) operationer som kan blockera. 20

33 Pre-emption Det finns olika strategier för tillåtelse av kontextbyten: Non-pre-emptive scheduling ( icke-avbrytbar schemaläggning): Tråden som kör kan inte avbrytas tills den släpper CPUn frivilligt explicit genom att anropa yield() eller implicit genom (synchronized) operationer som kan blockera. Pre-emption point based scheduling ( avbrytningspunktbaserad schemaläggning): Tråden som kör kan avbrytas vid vissa punkter i programmet (definierad genom språket eller run-time systemet) 20

34 Pre-emption Det finns olika strategier för tillåtelse av kontextbyten: Non-pre-emptive scheduling ( icke-avbrytbar schemaläggning): Tråden som kör kan inte avbrytas tills den släpper CPUn frivilligt explicit genom att anropa yield() eller implicit genom (synchronized) operationer som kan blockera. Pre-emption point based scheduling ( avbrytningspunktbaserad schemaläggning): Tråden som kör kan avbrytas vid vissa punkter i programmet (definierad genom språket eller run-time systemet) Pre-emptive scheduling ( avbrytbar schemaläggning): Tråden som kör kan avbrytas när som helst av schemaläggaren (som styrs av hårdvaru-interrupts). 20

35 Pre-emption Det finns olika strategier för tillåtelse av kontextbyten: Non-pre-emptive scheduling ( icke-avbrytbar schemaläggning): Tråden som kör kan inte avbrytas tills den släpper CPUn frivilligt explicit genom att anropa yield() eller implicit genom (synchronized) operationer som kan blockera. Pre-emption point based scheduling ( avbrytningspunktbaserad schemaläggning): Tråden som kör kan avbrytas vid vissa punkter i programmet (definierad genom språket eller run-time systemet) Pre-emptive scheduling ( avbrytbar schemaläggning): Tråden som kör kan avbrytas när som helst av schemaläggaren (som styrs av hårdvaru-interrupts). För att det ska bli rätt med schemaläggningen och väntetiderna, antar våra program att kärnan är pre-emptive, dvs. trådar kan avbrytas vid behov och då hanterar systemet kontextbytet på ett korrekt sätt. 20

36 Java? Java! 21

37 Java? Java! Java erbjuder abstraktionerna och den flexibiliteten och säkerheten som behövs för att kunna bygga flexibla, komplexa system. 21

38 Java? Java! Java erbjuder abstraktionerna och den flexibiliteten och säkerheten som behövs för att kunna bygga flexibla, komplexa system. Med de passande tillägg gjorda på går det bra ändå att hantera jämlöpande trådar med gemensam resurshantering och realtidskrav - det går också på annat sätt, men under kursen använder vi oss av paketet: 21

39 Java? Java! Java erbjuder abstraktionerna och den flexibiliteten och säkerheten som behövs för att kunna bygga flexibla, komplexa system. Med de passande tillägg gjorda på går det bra ändå att hantera jämlöpande trådar med gemensam resurshantering och realtidskrav - det går också på annat sätt, men under kursen använder vi oss av paketet: se.lth.cs.realtime.* 21

40 class Thread 22

41 class Thread java.lang.thread 22

42 class Thread java.lang.thread 22

43 class Thread java.lang.thread En tråd är ett aktivt objekt, medan ett vanligt objekt med metoder som anropas inom en sekvens kallas för passivt objekt. 22

44 class Thread java.lang.thread En tråd är ett aktivt objekt, medan ett vanligt objekt med metoder som anropas inom en sekvens kallas för passivt objekt. Metoden run() utför trådens uppgifter (som i ett passivt objekt), men bara metoden start() som anropar run() ger tråden sitt eget liv. 22

45 class Thread java.lang.thread En tråd är ett aktivt objekt, medan ett vanligt objekt med metoder som anropas inom en sekvens kallas för passivt objekt. Metoden run() utför trådens uppgifter (som i ett passivt objekt), men bara metoden start() som anropar run() ger tråden sitt eget liv. Två vägar att implementera en tråd, dvs implementera metoden run(): 22

46 class Thread java.lang.thread En tråd är ett aktivt objekt, medan ett vanligt objekt med metoder som anropas inom en sekvens kallas för passivt objekt. Metoden run() utför trådens uppgifter (som i ett passivt objekt), men bara metoden start() som anropar run() ger tråden sitt eget liv. Två vägar att implementera en tråd, dvs implementera metoden run(): implementera interfacet Runnable eller ärva från class Thread 22

47 Använda Runnable public interface Runnable { void run();... class MyRunnableObject implements Runnable { void run() { /* Do loads of stuff the thread is supposed to do */ /* implement other stuff that is needed by the thread */... MyRunnableObject myr(...); Thread athread( myr); athread.start(); 23

48 Använda class Thread class MyActivity extends Thread {... public MyActivity() { // init here, done before `start is called public void run() { while( true) { // do whatever the thread should do, once it is set alive by calling // start (which calls run, effectively) public static void main( String[] args) { // do / declare some stuff MyActivity myact1(); //... do some stuff... myact1.start(); //... do some more stuff... myact1.join(); 24

49 Använda class Thread class MyActivity extends Thread {... public MyActivity() { // init here, done before `start is called public void run() { while( true) { // do whatever the thread should do, once it is set alive by calling // start (which calls run, effectively) public static void main( String[] args) { // do / declare some stuff MyActivity myact1(); //... do some stuff... myact1.start(); // Vad händer här om man bara kör run()? //... do some more stuff... myact1.join(); 24

50 class Thread public class Thread implements Runnable { static int MAX_PRIORITY; static int MIN_PRIORITY; static int NORM_PRIORITY; Thread(); Thread( Runnable target); void start(); void run(); static Thread currentthread(); void setpriority( int pri); int getpriority(); static void sleep( long t); static void yield(); void interrupt(); boolean isinterrupted(); static boolean interrupted(); boolean isalive(); void join(); void join( long t); // Highest possible priority // Lowest possible priority // Default priority // Use run in subclass // Use run in `target // Create thread which calls `run // Work to be defined by subclass // Get currently executing thread // Change the priority to `pri // Returns this thread s priority // Suspend execution at least `t ms // Reschedule to let others run // Set interrupt request flag // Check interrupt flag of this thread // Check if interrupted for currently // running thread // true if started and not dead // Waits for this thread to die // Try to join, but only for `t ms 25

51 Jämlöpande exekvering av sekventiella processer Varje aktivitet (tråd) måste utföras som ett logiskt korrekt, sekventiellt program. Samtliga parallella aktiviteter tillsammans måste leverera korrekt beteende jämnt och under alla omständigheter (inmatningar, händelser...). Att testa / verifiera detta är i det närmaste omöjligt, för att pyttesmå ändringar i hur sekvenserna flätas samman kan påverka mycket, och det är i princip omöjligt att få till exakt samma flätning två gånger. 26

52 Kapplöpning (och run vs start ) 27

53 Kapplöpning (och run vs start ) class HelloWorld extends Thread { public static void main( String[] arg) { System.out.print( Hello ); new HelloWorld().run(); System.out.println( World! ); public void run() { System.out.print( and goodbye ); 27

54 Kapplöpning (och run vs start ) class HelloWorld extends Thread { public static void main( String[] arg) { System.out.print( Hello ); new HelloWorld().run(); class HelloWorld extends Thread { public static void main( String[] arg) { System.out.print( Hello ); new HelloWorld().start(); System.out.println( World! ); System.out.println( World! ); public void run() { System.out.print( and goodbye ); public void run() { System.out.print( and goodbye ); 27

55 Kapplöpning (och run vs start ) class HelloWorld extends Thread { public static void main( String[] arg) { System.out.print( Hello ); new HelloWorld().run(); class HelloWorld extends Thread { public static void main( String[] arg) { System.out.print( Hello ); new HelloWorld().start(); System.out.println( World! ); System.out.println( World! ); public void run() { System.out.print( and goodbye ); public void run() { System.out.print( and goodbye ); Det behövs alltså fler egenskaper och mekanismer, samt regler för programmering av multitrådade program, än bara möjligheten att skapa trådar och låta dem köra samtidigt. 27

56 Bankkontot igen Situation 1: A: Läs 5000 B: Läs 5000 A: Belopp = B: Belopp = A: Skriv 4000 B: Skriv A: Läs 5000 Situation 2: B: Läs 5000 B: Belopp = B: Skriv A: Belopp = A: Skriv 4000 Två aktiviteter (program, trådar (threads), processer) utförs samtidigt, då de hanterar samma resurser. I båda situationer blir resultatet fel. Här behövs det alltså någon mekanism för ömsesidig uteslutning (mutual exclusion) för att hantera kritiska sekvenser (critical sections) och odelbara aktioner (atomic actions). 28

57 Kritiska sekvenser (Critical sections) Delar av ett program (en sekvens) som behöver tillgång till en delad resurs. Får inte bli avbruten av en annan programsekvens, eller av en ny upprop till sig själv. Kraven kan uppfyllas med hjälp av Semaforer, Monitorer eller Postlådor (Mailboxes) På låg nivå (native code) kan man också slå av interrupts (avbrott). 29

58 Begrepp / abstraktioner för jämlöpande exekvering 30

59 Begrepp / abstraktioner för jämlöpande exekvering Vad är det som ett programmeringsspråk måste stödja för att kunna erbjuda jämlöpande exekvering? 30

60 Begrepp / abstraktioner för jämlöpande exekvering Vad är det som ett programmeringsspråk måste stödja för att kunna erbjuda jämlöpande exekvering? Tråd - en aktivitet, programsekvens 30

61 Begrepp / abstraktioner för jämlöpande exekvering Vad är det som ett programmeringsspråk måste stödja för att kunna erbjuda jämlöpande exekvering? Tråd - en aktivitet, programsekvens Exekveringsstatus - aktiv / inaktiv, använd av en tråd eller ej; kontext + aktivitetsstatus 30

62 Begrepp / abstraktioner för jämlöpande exekvering Vad är det som ett programmeringsspråk måste stödja för att kunna erbjuda jämlöpande exekvering? Tråd - en aktivitet, programsekvens Exekveringsstatus - aktiv / inaktiv, använd av en tråd eller ej; kontext + aktivitetsstatus Synkronisering - hantering av gemensamma resurser 30

63 Sammanfattning Infört begreppen jämlöpande exekvering, tråd, schemaläggning, pre-emption (avbrytbarhet), kontext / kontextbyte, (lite) ömsesidig uteslutning Diskuterat fällor såsom fel vid gemensam resurshantering, kapplöpning Introducerat trådar i Java Man borde kunna skriva ett litet Java-program som skapar en extra tråd, tex för att svara på inmatningar i huvudtråden (-programmet) medan man räknar tiden och skriver ut den i den nya tråden. Lästips: e-bok: Kap 1 ( +2). kompendium: Kap 1 (Introduction) (Threads) 31

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

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

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

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

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

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

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

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

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

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

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

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

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

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

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition. Innehåll The Last Adventure Den sista lektionen Repetition Examination Slutar 14:45 (minnesstund) Många saker "flashar" förbi - hojta Objektorientering Språket Java Class Object Inheritance Polymorphism

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

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

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

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

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

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

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av

Läs mer

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson Fakulteten för ekonomi, kommunikation och IT Corba Datum: 2007-10-17 Namn: Kurs: Henrik Bäck Mathias Andersson DVGC02 Innehållsförteckning Implementation 3 IDL-fil 3 Server 3 Klient 3 Körning 3 Bilagor

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

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

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

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

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

9 Aktiva objekt och trådar

9 Aktiva objekt och trådar 9 Aktiva objekt och trådar Skansholm kap 13 arallella program, processer och trådar Aktiva Swing-komponenter Trådar i Java Synkronisering Trådar och Swing arallella program och processer De flesta operativsystem

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

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043, Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043, 2017-02-20 Aktiva objekt och trådar Multitasking, parallella program Vanliga datorer har kunna köra flera program skenbart samtidigt

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 2 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin, 2018 Outline Emacs Introduktion till Objektorienterad Programmering Introduktion till Java Variabler

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 2. Täcker material från lektion 1, 2, 3 och 4:

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack

Läs mer

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

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

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack

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

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

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

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

Laboration 13, Arrayer och objekt

Laboration 13, Arrayer och objekt Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift

Läs mer

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista Evaluate postfix expressions Läsanvisningar

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av

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

Operativsystem. Hierarkin för hårdvara läses nerifrån

Operativsystem. Hierarkin för hårdvara läses nerifrån Operativsystem DOS DiskOperatingSystem - ett jobb i taget. Dagens Operativsystem - prioriterar olika jobb. Om ett jobb pausas körs ett annat. Operativsystems viktigaste funktion är att bilda gränssnitt

Läs mer

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22 Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering

Läs mer

LULEÅ TEKNISKA UNIVERSITET

LULEÅ TEKNISKA UNIVERSITET LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, Andrey Kruglyak, 491000 Resultatet offentliggörs senast: 2010-04-09. Tillåtna

Läs mer

DAT043 Objektorienterad Programmering

DAT043 Objektorienterad Programmering DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är

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

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

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

DAT043 - föreläsning 8

DAT043 - föreläsning 8 DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns

Läs mer

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel:

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

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

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output Programmering hh.se/db2004 Föreläsning 5: Fält samt Input/Output Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Lite mer om Javas stöd för fält Hur många element har ett fält?

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag

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

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander F6 Objektorienterad design ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se långa ord AKTIVITETER I PROGRAMVARUUTVECKLING Iterativ utveckling Kravspecifikation Design Implementation Testning

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

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öreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter 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 Läsanvisningar och uppgifter ADT Kö Grundprinciper: En kö fungerar som en kö. Man

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

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON Datorteknik ERIK LARSSON Inledning Ken Thompson och Dennis M. Ritchie utvecklade C Turingpriset( Nobelpris i datavetenskap ), 1983 Alan Turing (1912-1954) För deras utveckling av generell OS teori och

Läs mer

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

Algoritmer. Två gränssnitt

Algoritmer. Två gränssnitt Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

Läs mer

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar. * * Lösningsförslag tentamen DIT950 * Datum 150317 * * -1 - För samtliga gäller,se föreläsningsanteckningar. * - 2 - (Diagram visas inte, kontakta mig för ev frågor) // a C c = new A(); // Compile! Sub

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

Lösningar till tentamen i EDAF25

Lösningar till tentamen i EDAF25 Lösningar till tentamen i EDAF25 1 juni 2017 Lösning 1 Se figur 1. Figure 1: Tillståndsdiagram espressomaskin Lösning 2 (a) Kompositmönstret (b) Se figur 2 (c) Se figur 3 : Square : Drawing : Group : Circle

Läs mer

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

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

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration 9 Avsikten med denna laboration är att du ska jobba vidare med klasser. Uppgifterna går ut på att skriva metoder och att skriva konstruktorer. Laborationen bygger vidare på laboration 8. Skapa

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

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

Laboration 10 - Eclipse

Laboration 10 - Eclipse Laboration 10 - Eclipse Avsikten med laborationen är att du ska träna på att använda paket, att du ska packa några klassfiler i en jar-fil och slutligen använda innehållet i en jar-fil från en annan klass

Läs mer

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn? Fö 7: Operativsystem Introduktion. Klassificering. Vad är ett operativsystem? Program som kontrollerar andra andra program. Gränssnitt mellan användare och hårdvaran. Kärnan. Historisk översikt. Typeset

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon

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

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

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,

Läs mer

INSTITUTIONEN FÖR DATA- OCH INFORMATIONSTEKNIK

INSTITUTIONEN FÖR DATA- OCH INFORMATIONSTEKNIK INSTITUTIONEN FÖR DATA- OCH INFORMATIONSTEKNIK DIT162 Realtidssystem, 7,5 högskolepoäng Real-Time Systems, 7.5 credits Fastställande Kursplanen är fastställd av Institutionen för data- och informationsteknik

Läs mer