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 krävs för betyget 3, 30 poäng för betyget 4 och 35 poäng för betyget 5. Övrigt: Använd ett nytt blad för varje uppgift, och lämna gärna lite plats i marginalen. Motivera alltid dina svar. Om du tycker att någonting är oklart, så gör själv nödvändiga antaganden. Redovisa alltid dessa antaganden. Lycka till! 1
2
Uppgift 1 (6 poäng) Förklara följande begrepp och vad som krävs för att kunna implementera dem. a) Ej föregripande schemaläggning (non-preemtive scheduling) b) Föregripande schemaläggning (preemptive scheduling) c) Tidsdelning (round-robin) d) Vad är nackdelarna respektive fördelarna med tidsdelning. Uppgift 2 (6 poäng) Förklara följande begrepp och vad finns det för problem/begränsningar med dem. a) Semaforer b) Monitorer c) Meddelandeköer d) Remote-Procedure-Call (RPC) 3
Uppgift 3 (12 poäng) Antag att vi har ett system som innehåller de tre processerna P1, P2 och P3 som utför ett jobb periodiskt och gör en utskrift på skärmen när de är klara. P1 och P2 körs var 10'e millisekund och P3 körs var 8'e millisekund. Alla processerna tar 1 millisekund för varje jobb. Utskrifterna på skärmen tar 1ms och kan inte göras av två processer samtidigt utan att bli fel. Visa hur det här systemet kan implementeras på ett säkert sätt. Ni kan använda funktionerna nedan: void jobba(int i); // Utför jobbet för process i void print(int i); // Gör utskriften för i void sleepto(double time); // Sover ända till den givna tidpunkten. void taskcreate(int prio,fn funktion,... args...) // Skapar en ny process MSG_Q createq(); // Skapar en meddelandekö SEM createsem(); // Skapar en semafor void send(msg_q,void *msg,int len); // Skickar ett meddelande void receive(msg_q,void *buf,int len); // Läser ett meddelande void take(sem S); // Tar en semafor void give(sem S); // Ger en semafor a) Visa hur uppgiften ovan kan lösas genom att använda en separat process för att hantera alla utskrifter. Beskriv samtliga funktioner som behövs, inklusive en funktion för att starta systemet och alla processerna. b) Visa hur den här uppgiften kan lösas genom att istället implementera en monitor. Beskriv samtliga funktioner som behövs, inklusive en funktion för att starta systemet och alla processerna. 4
Uppgift 4 (10 poäng) I en industri finns en styrdator som kommunicerar över ett nätverk och kontrollerar ett antal maskiner. På den här datorn finns tre kontrollprocesser P1, P2 och P3 som samsas om tre kritiska resurser, minne, bandbredd och strömförbrukning, då de styr maskinerna. Ursprungligen har datorn 8MB minne, 6 kbit/s bandbredd och tillgång till 100mA ström. En bit in i körningen av datorn ser situationen ut som i den övre tabellen till höger. Available visar hur många resurser som just nu finns lediga, Allocation hur många resurser som just nu finns tilldelade varje process och Need hur mycket mer resurser som processerna kan behöva innan de blir färdiga. Available 4 4 50 Allocation P1 1 1 10 P2 1 0 40 P3 2 1 0 Need P1 4 2 0 P2 2 6 10 P3 5 0 50 a) Vid det här tillfället begär process P3 att få starta upp en till maskin som drar 10mA ström och förbrukar 2kbit/s i bandbredd. Kan detta beviljas utan att systemet går i dödlåsning? b) Antag att P2 istället begär att få allokera 10mA ström ifrån det här läget. Kan detta beviljas utan risk för dödlåsning? c) Antag att vi endast är intresserade av att detektera dödlåsning och att processerna begär resurserna enligt den nedre tabellen till höger. Är systemet i dödlåsning just nu? Available: samma som ovan Allocation: samma som ovan Request P1 4 0 0 P2 1 4 10 P3 3 0 60 5
Uppgift 5 (6 poäng) a) Vilka två varianter av petrinät med tid finns det och hur fungerar dem? Vad är skillnaden mellan dem? b) Rita tillståndsgrafen för petrinätet till höger med tid. c) Vilken avfyrningsfrekvens har petrinätet till höger och vad innebär avfyrningsfrekvens? 6