Tentamen i Realtidsprogrammering Omtentamen Datum: 2007-08-31 Tid: 08:00 11:00 Ansvarig lärare: Telefon: ej tillgänglig 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 (5 poäng) Förklara följande begrepp: a) Dödlåsning b) Semaforer c) Monitorer (ej bildskärmar!) d) Prioritetsinvertering e) Prioritetsärvning Uppgift 2 (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. 3
Uppgift 3 (9 poäng) Följande kod beskriver ett enkelt system som antingen läser eller tar emot ett antal kommandon från en operatör och skriver dom i en kö eller läser meddelanden ifrån kön och arbetar med dom. for(;;) { if(kommando_färdigt()) { kommando = nästa_kommando(); skriv(kö, kommando); } else { kommando = läs(kö); jobba(kommando); } } För att avgöra om systemet kommer att fungera som förväntat har petrinätet till höger skapats som en modell av den. I det här exemplet antar vi att vi startar med ett tecken i kön. a) Konstruera nåbarhetsgrafen för petrinätet. b) Vad innebär begreppet levande och är petrinätet levande? c) Vad innebär (global) rättvisa och är petrinätet rättvist? d) Vad innebär det att ett petrinät är begränsat? Är nätet ovan begränsat? 4
Uppgift 4 (8 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 16MB minne, 10 Mbit/s bandbredd och tillgång till 30A 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. a) Vid det här tillfället begär process P2 att få starta upp en till maskin som drar 10A ström och förbrukar 2 Mbit/s i bandbredd. P3 6 2 5 Kan detta beviljas utan att systemet går i dödlåsning? b) Antag att P2 istället begär att få allokera 4MB minne ifrån det här läget. Kan detta beviljas utan risk för dödlåsning? Uppgift 5 (6 poäng) Antag att vi har det färgade petrinätet till höger. a) Rita upp nåbarhetsgrafen för petrinätet om möjligt. b) Är petrinätet begränsat? c) Är petrinätet levande? Available Allocation 8 6 15 P1 2 2 10 P2 2 0 0 P3 4 2 5 Need P1 2 6 10 P2 12 5 10 5