Tentamen EDA698 Realtidssystem (Helsingborg)

Relevanta dokument
Tentamen EDA698 Realtidssystem (Helsingborg)

Tentamen Lösningar EDA698 Realtidssystem

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

Exam Concurrent and Real-Time Programming

trafiksimulering Intro OU5 trafiksimulering

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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

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

Tentamen OOP

Tentamen EDA698 Realtidssystem (Helsingborg)

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen, EDA501 Programmering M L TM W K V

Grundläggande programmering med C# 7,5 högskolepoäng

Tentamen SSY 065, lördag 14/4, 08:30-12:30, M. Examinator: Martin Fabian, (772) 3716 Tider för lärarens närvaro: 09:30, 11:30

Tentamen, EDAA20/EDA501 Programmering

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Knutstorps Trafikövningsplats

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

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

Tentamen i Objektorienterad programmering

Trådar. Aktiva objekt

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

OOP Objekt-orienterad programmering

Programmering för språkteknologer II, HT2014. Rum

SMD 134 Objektorienterad programmering

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen i Objektorienterad modellering och design Helsingborg

Realtidsprogrammering Ordinarie tentamen

TENTAMEN I REALTIDSPROCESSER OCH REGLERING TTIT62

Programmering A. Johan Eliasson

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Tentamen i Objektorienterad modellering och design

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Press Information. Pedestrian Detection i mörker. Animal Detection

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Klasshierarkier - repetition

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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

Objektorienterad programmering

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

DELPROV 1 I DATAVETENSKAP

Tentamen Nätverksprogrammering Lösningsförslag

OOP Omtenta

Föreläsning 1 & 2 INTRODUKTION

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen i Objektorienterad modellering och design Helsingborg

Lösningsförslag, tentamen FYTA11 Javaprogrammering

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

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

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

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

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Tentamen Nätverksprogrammering Lösningsförslag

Moped klass II Kunskapsprov 2

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

Redovisning av inlämningsuppgifter

Föreläsning 10. ADT:er och datastrukturer

Cykelpassager och Cykelöverfarter

Objektorienterad programmering i Java

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

tentaplugg.nu av studenter för studenter

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Introduktion till arv

Övningar Dag 2 En första klass

OOP Objekt-orienterad programmering

OOP Omtenta

PROGRAMMERINGSTEKNIK TIN212

Objektsamlingar i Java

e-sense move dali Manual

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

Transportstyrelsens föreskrifter och allmänna råd om trafiksignaler;

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Tentamen. Lösningsförslag

Objektorienterad programmering D2

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

Tentamen, Algoritmer och datastrukturer

Realtid. eda040project2010 MANUAL. - Christoffer Olsson. - Daniel Lehtonen

Information till dig som är intresserad av att ställa ut blomlådor på din gata för att minska bilarnas hastighet.

Presentation av obligatoriska uppgiften trafiksimulering. Ett större program med flera klasser

TENTAMEN OOP

SÄTT DIG NER, 1. KOLLA PLANERINGEN 2. TITTA I DITT SKRIVHÄFTE.

TENTAMEN I DATAVETENSKAP

Transkript:

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. Det går bra att använda både engelska och svenska uttryck för svaren. Den här tentamen består av två delar: teori, frågor 1-6 (18 poäng), och programmering & design, fråga 7 och 8 (12 poäng). För godkänd (betyg 3) krävs sammanlagt ca hälften av alla 30 möjliga poäng samt att det krävs ca en tredjedel av poängen i varje del för sig. 1. a) Vad menas med jämlöpande processer, och vad krävs för att ett program med sådana skall anses vara korrekt? (1p) b) Vad menas med en kritisk region? Illustrera med ett exempel. (1p) c) Vad innebär begreppet kapplöpning? Förklara med ett kort exempel. (1p) d) Vad innebär live-lock? Förklara med ett exempel. (1p) 2. a) Vad är prioritetsinversion? Illustrera med ett exempel. (1p) b) Vad är ett prioritetsärvningsprotokoll och hur kan det användas för att undvika prioritetsinversion? (1p) 3. I ett realtidssystem finns tre stycken trådar, T1, T2 och T3. Deras run-metoder innehåller nedanstående kodsekvenser. S1, S2, S3, S4 och S5 är alla mutex-semaforer. T1.run() T2.run() T3.run() S5.take(); uses5(); S5.give(); S5.take(); uses2s5(); uses5(); S5.give(); S1.take(); uses1s2(); S1.give(); S4.take(); uses4(); S5.take(); S1.take(); uses1s4s5(); S1.give(); S5.give(); S4.give(); S3.take(); uses2s3(); S3.give(); S1.take(); uses1(); S1.give(); S3.take(); uses2s3(); S4.take(); uses2s3s4(); S4.give(); S3.give(); a) Rita en resursallokeringsgraf för systemet. (2p) b) Finns det risk för dödläge i systemet? Motivera ditt svar. (1p)

2(6) 4. Betrakta ett system bestående av tre oberoende periodiskt exekverande trådar med nedanstående karaktäristika (C = värstafallsexekveringstid, D = deadline, T = period). Tråd C (ms) D (ms) T (ms) A 2 6 10 B 9 25 25 C 3 7 7 a) Vad blir de maximala svarstiderna för de tre olika trådarna om man tillämpar Rate Monotonic Scheduling (RMS)? (2p) b) Är systemet schemaläggningsbart, dvs klarar systemet alltid av alla sina deadlines? Motivera ditt svar! (1p) Tips: R i = C i + Ri T C j j j hp(i) 5. Ett realtidssystem (med dynamisk prioritetsbaserad schemaläggning och prioritetsarv) innehåller tre trådar (T1, T2 och T3) som kommunicerar med varandra genom att anropa monitoroperationerna a, b, c, d, e och f i monitorerna M1, M2 och M3 och med maximala exekveringstider (i millisekunder) enligt figur. Trådarna anropar en monitoroperation i taget. T1 har högst prioritet och T3 har lägst prioritet. Ange för varje tråd (T1, T2 och T3) hur lång tid tråden i värsta fall kan bli blockerad av lägre prioriterade trådar under en och samma körning. Motivera ditt svar. (2p) 6. a) Nämn två fördelar med statisk schemaläggning jämfört med dynamisk schemaläggning. (2p) b) Nämn två nackdelar med statisk schemaläggning jämfört med dynamisk schemaläggning.(2p)

3(6) TRAFIKLJUS MED KAMERA 7. Idag är det vanligt att använda sig av fartkameror för att övervaka och reglera bilhastighet på vägar. I kombination med datainsamling av fortkörningshändelser kan detta leda till oönskade effekter både vad gäller personlig integritet och juridisk hantering: Individers förehavanden kan kartläggas genom systemet (och på vägen) utan att de är medvetna om detta. Det har förekommit att lagligt körande bilförare har bötfällts pga tekniska fel i sensorerna. Då upprepade bötfällningar hanteras som brott i många länder kan felaktiga sensorer, dvs tekniska fel, leda till att rättssystemet urholkas. Situationen är speciellt svår i vissa länder, såsom Storbritannien, där man övervakar inte bara momentan hastighet vid fartkamerorna, utan också genomsnittlig hastighet mellan kameror. Men det finns länder som har utvecklat alternativ. I Portugal tillämpas straffande trafikljus vid infarter till byar. Detta är trafikljus integrerade med hastighetsmätare, ofta utan koppling till korsning eller övergångsställe. Trafikljuset slår om till rött när uppmätt hastighet ligger över den tillåtna. Fortköraren måste stanna för rödljuset och blir dessutom utpekad som orsaken till stoppet för bakomvarande bilister, ett inte obefintligt socialt tryck. Idén kan vidareutvecklas genom att även övervaka stopplinjen vid trafikljuset. Då kan man registrera förare som kör mot rött ljus, eller håller så pass hög hastighet att man inte lyckas stanna i tid, till exempel vid halt väglag. En stor fördel är att sensorosäkerhet inte leder till rättsosäkerhet. En bild av bilens registreringsplåt och trafikljus tagen av en kamera kan enkelt verifieras till skillnad från hastighetsmätningar, vilka är betydligt svårare att verifiera i efterhand. Straffet för fortkörningen tillämpas omedelbar (man förlorar tid) eller leder i värre fall till bötfällning för körning mot rött ljus. Trafikverket har bestämt sig för att utveckla och testa en prototyp. Du har blivit ombedd att implementera en del av systemet (monitorn), övriga delar är redan klara. Uppgift Du ska utveckla delar av styrsystemet till ett straffande trafikljus med passageövervakning. Gränssnitten till hårdvaran för att styra trafikljuset, detektera hastighet och passering, samt ta bilder (för att kunna rapportera överträdelser) är redan givna och beskrivna nedan. Hårdvarugränssnitt (givna) Gränssnitt mot trafikljuset. Innehåller en metod som ställer ut rött, gult, eller grönt ljus. Reagerar omedelbart och är icke-blockerande. class Signal { * Uppdatera trafikljussignalen. static synchronized void show(boolean red, boolean yellow, boolean green) { /*... Gränssnitt mot sensorsystemet. Två sensorsystem används: ett fartmätningssystem som är placerat en bit från trafikljuset och används via metoderna awaitspeed och freespeed; ett passagesystem som registrerar fordon som passerar trafikljusets stopplinje och används via metoderna awaitpassage och freepassage. class Detection { * Blockerar tills fordon detekteras. * @return hastighet hos detekterat fordon.

4(6) synchronized float awaitspeed() { /*... * Stang av hastighetskontroll. synchronized void freespeed() { /*... * Blockerar tills ett fordon har passerat trafikljuset eller tills freepassage anropas. * @return sant om ett fordon passerat, annars falskt. synchronized boolean awaitpassage() { /*... * Avsluta passagekontroll for fordon (anvands nar det inte langre ar rodljus) synchronized void freepassage() { /*... Gränssnitt mot kamera. Innehåller en metod som tar bild av en passerande bil och trafikljuset. Kameran är positionerad så att den tar bild av enbart den passerande bilen och inga andra bilar. public class Camera { public static void snapshot() {... Trådar och tillstånd (givna, ändringar får göras) Hastighetsmätaren (tråden SpeedObtainer) ansvarar för att registrera en inkommande bils hastighet i monitorn, se nedan. public class SpeedObtainer extends Thread { Detection sensing; Monitor mon; public SpeedObtainer(Detection sensing, Monitor mon) { this.sensing = sensing; this.mon = mon; public void run() { while (!isinterrupted()) { mon.registerspeed(sensing.awaitspeed()); Trafikljusstyrningen (tråden LightController) ansvarar för att ändra ljusets färg enligt sekvensen grönt-gult-rött-grönt (GYRG). Den är också ansvarig för att starta GYRG-sekvensen vid uppmätning av en för hög hastighet, och även starta upp passagemätning för att registrera en eventuell överträdelse (körning mot rött) och bildtagning. public class LightController extends Thread { Monitor mon; public LightController(Monitor mon) {this.mon = mon; public void run() { while (!isinterrupted()) {mon.color(); Straffrapporteraren (PenaltyReporter) ansvarar för att samla underlag för rapport i fall där det blev en överträdelse (körning mot rött), inkl bilden som då ska ha tagits. (Själva rapporteringen ingår inte i uppgiften.)

5(6) public class PenaltyReporter extends Thread { Monitor mon; Detection trigger; public PenaltyReporter(Monitor mon, Detection trigger) { this.mon = mon; this.trigger=trigger; public void run() { while (!isinterrupted()) { mon.awaitred(); if (trigger.awaitpassage()) { System.out.println("You are busted!"); Camera.snapshot(); else { System.out.println("Have a nice day!"); En uppräkningstyp listar de olika trafiksituationer som motsvarar monitorns (se nedan) tillstånd. enum STATE { EMPTY, TRAFFIC, SPEEDING, RED // Ingen trafik, dvs inga fordon har detekterats pa ett tag // Fordon med laglig hastighet passerar // Fordon som overtratt gallande hastighet har detekterats // Stoppa trafik efter SPEEDING, via gult ljus Monitor (att implementera) public class Monitor { Attribut, kan anvandas eller andras... private STATE state = STATE.EMPTY; // Trafik-tillstand private float maxspeed, overspeed; // [m/s] = [km/h]/3.6 private Detection trigger; // Hastighets- och passagedetektor private long recentlyany; // Tidpunkt da senaste fordon detekterats private long recentlyfast; private char c = ; Konstruktor public Monitor(float limit, Detection trigger) { maxspeed = limit; this.trigger = trigger; * Anropas da ett fordon narmar sig trafikljuset. * @param spd ar den uppmatta hastigheten hos fordonet. synchronized void registerspeed(float spd) {/*... // Tidpunkt for senaste hastighetsovertradelse // Trafikljus-tillstand // R = rott, Y = gult (yellow), G = gront * Anropas for att uppdatera trafikljus- och trafik-tillstand synchronized char color() {/*... * Blockera tills trafikljuset visar rott, dvs tills det finns en * hastighetsovertradelse.

6(6) synchronized void awaitred() {/*... a) Implementera metoden awaitred i monitorklassen. Metoden ska blockera tills trafikljuset blir rött. (2p) b) Implementera metoden registerspeed i monitorklassen. Metoden ska uppdatera trafik-tillstånd till antingen TRAFFIC eller SPEEDING och andra relevanta tillståndsattribut i monitorn (recentlyx). (3p) c) Implementera metoden color i monitorklassen. Metoden är ansvarig för att styra GYRG-sekvensen i trafikljuset. När det är grönt ljus ska en sådan sekvens startas ifall en överträdesle av hastighetsbegränsningen registrerats (SPEEDING). Gult ljus ska då visas under en tidsperiod (2 sekunder), varpå ljuset ändras till rött. Rött ljus ska visas i 15 sekunder. Registreras ytterligare en forkörning räknas tiden för rött ljus upp med 15 sekunder utifrån tiden då fortkörningen registrerades. (4p) Tips: Metoden wait(long t) ger möjlighet att vänta tills t ms har gått eller att den anropande tråden väckts på annat sätt. OBS: visa dina eventuella ändringar i existerande klasser TYDLIGT. Visa också tydligt eventuellt tillagda tillstånd (attribut) i monitorklassen. Ändringar och tillägg ska skrivas som kod med motiverande kommentar till varför tillägget gjorts. ALTERNATIV DESIGN AV STRAFFANDE TRAFIKLJUS 8. Ersätt den givna lösningen där trådarna delar information via en monitor med en lösning med meddelande-baserad kommunikation för synkronisering och utbyte av information. Hur skulle den struktureras? Svara med en figur som visar de involverade trådarna, meddelande-buffertarna och hur de kommunicerar. Motivera din ritade figur. (3p) A Kort, specifik Java-referens med eventuellt lämpliga metoder Tidshantering, trådhantering, väntelägen, etc klass Math och klass System: public static double Math.random(): ger ett slump-värde mellan 0 och 1. public static long System.currentTimeMillis(): aktuell systemtid i millisekunder klass Thread: public static void sleep( long t): försätta en tråd i viloläge under t ms public static void yield(): dra tråden tillbaka och sätt i kön för ny schemaläggning public void join(): vänta att tråden dör public void start(): starta upp tråden public void run(): trådens arbete klass Object: public final void wait(): försätta en tråd i vänteläge public final void wait( long t): försätta en tråd i vänteläge under max t ms. Kan dock väckas i förtid! public final void notify(): meddela nästa tråden i vänte-kön att ett tillstånd har ändrats public final void notifyall(): meddela alla trådar i vänteläge att ett tillstånd har ändrats