Realtidssystem Z Lösningar tentamen 16/12 2004 UPPGIFT 1 a) Sant: Genom att låta realtidskärnan vara den som väljer minnesplats för processers kod och data kan primärminnet utnyttjas väldigt effektivt. Man erhåller dessutom ett skydd mellan processer genom att använda virtuella adresser. b) Falskt:Användandet av parallellt exekverade processer ger snarare en fördel vad avser schemaläggningsbarhet genom att använda avbrytbar exekvering och lämplig prioritetstilldelning. c) Sant: Om vi vet att processerna inte är schemaläggningsbara så måste ett tillräckligt test ge utfallet falskt. För sådana tester innebär ju nämligen utfallet sant alltid att processerna är garanterat schemaläggningsbara. d) Falskt: Okontrollerad typkonvertering kan bara ske om de inblandade datatyperna har samma storlek. e) Sant: Realtidsklockan aktiverar en avbrottsrutin där det är möjligt att ta ett nytt beslut angående vilken process som skall köra härnäst. f) Falskt: Genom att följa vissa rekommenderade designregler kan ett programvarusystem göras fritt från deadlock. UPPGIFT 2 a) Statiska processprioriteter finns som standard i Ada 95 (ARM 13.7). Den statisk bas-prioriteten för en process anges i specifikationen av processen med hjälp av pragmat Priority. Dynamiska prioriteter erbjuds som option (ARM Annex D: Real-Time Systems). Prioriteten för en process kan avläsas och modifieras med rutinerna Get Priority och Set Priority som finns definierade i paketet Ada.Dynamic Priorities. b) Det absolut vanligaste fallet är när man i använder ett takprioritetsprotokoll (exempelvis ICPP). Då kan en process tillfälligt ärva takprioriteten hos ett skyddat objekt. UPPGIFT 3 a) Shaws metod (timing schema) baseras på att man kan betrakta högnivåkonstruktioner som oberoende operander i en enkel aritmetik där WCET för sekventiella satser adderas, WCET för if-satser fås med max-funktionen etc. b) Eftersom Shaws metod enbart betraktar högnivåkonstruktioner måste man finna WCET för varje sådan konstruktion separat. Med den aritmetik som används kommer den totala WCET därför att vara garanterat pessimistisk. Den största nackdelen med Shaws metod är dock att den inte använder detaljerad information om maskininstruktioner och processormekanismer som cache och pipeline. Detta gör att noggrannheten hos metoden blir dålig om moderna RISC-processorer används. För äldre typer av mikrokontrollers blir noggrannheten dock bättre.
c) Falska vägar i ett program är kodsekvenser som på grund av t ex logiska tester aldrig kan exekveras. Ett exempel på en falsk väg är alternativ A följt av C i följande kod. if (X > 10) then Y := 1; while X > 0 loop Y := Y * X; X := X - 1; else Y := -1; end if; if (Y < 0) then Z := 0; while X > 1 loop Z := Z * X; X := X / 2; else Z := 0; end if; (A) (B) (C) (D) Eftersom variabel Y alltid blir större än 0 vid exekvering av alternativ A så kan bara alternativ C exekveras via alternativ B. Det är uppenbart att man vid beräkning av WCET för ovanstående programkod får ett bättre noggrannhet om det är känt att denna falska väg existerar. I annat fall kommer man att ta med beräkningstiden för en loopkonstruktion som aldrig kommer att utföras. UPPGIFT 4 a) Beteckna prioriteterna för P 1,P 2 och P 3 med H, M respektive L. Det innebär att takprioriteterna för S a,s b och S c blir H, H respektive M. b) Händelseförloppet blir som följer: Time Running Ready S a S b S c Kommentar 0 P 3 - - 1-1 - 1 P 3 ankommer med prioritet L och börjar exekvera 1 P 3 - - 1-0 - 1 P 3 låser S b och får prioritet H 3 P 3 - - 1-0 - 0 P 3 låser S c (och bibehåller prioritet H) 4 P 3 P 2-1 - 0-0 P 2 ankommer med prioritet M 6 P 3 P 1,P 2-1 - 0-0 P 1 ankommer med prioritet H 7 P 3 P 1,P 2-1 - 0-1 P 3 släpper S c (men bibehåller prioritet H) 9 P 1 P 2,P 3-1 - 1-1 P 3 släpper S b (och återfår prioritet L); P 1 börjar exekvera 11 P 1 P 2,P 3-0 - 1-1 P 1 låser S a 13 P 1 P 2,P 3-1 - 1-1 P 1 släpper S a 15 P 1 P 2,P 3-1 - 0-1 P 1 låser S b 17 P 2 P 3-1 - 1-1 P 1 släpper S b och avslutar sin exekvering; P 2 börjar exekvera 18 P 2 P 3-1 - 1-0 P 2 låser S c (och bibehåller prioritet M) 20 P 2 P 3-1 - 1-1 P 2 släpper S c 21 P 3 - - 1-1 - 1 P 2 avslutar sin exekvering; P 3 fortsätter sin exekvering 22 - - - 1-1 - 1 P 3 avslutar sin exekvering
UPPGIFT 5 a) Utnyttjandegraden i systemet är: U = i C i /T i =2/6+2/15 + 4/16 + 2/10 + 1/15 = 59/60 Eftersom U =59/60 1ochD i = T i för alla processer så är processerna schemaläggningsbara med avseende på EDF. b) En simulering av processerna med EDF schemaläggning ger följande tidsdiagram. P 1 P 1 1 P 2 1 P 3 1 P 4 1 P 5 1 P 6 1 P 2 P 1 2 P 2 2 P 2 2 P 3 P 1 3 P 2 3 P 4 P 1 4 P 2 4 P 3 4 P 5 P 1 5 P 2 5 0 10 20 30 t c) En simulering av processerna med RM schemaläggning ger följande tidsdiagram. P 1 P 1 1 P 2 1 P 3 1 P 4 1 P 5 1 P 6 1 P 2 P 1 2 P 2 2 P 3 P 1 3 P 1 3 P 1 3 P 2 3 P 4 P 1 4 P 2 4 P 3 4 P 5 P 1 5 P 2 5 0 10 20 30 t Som synes missar första instansen av process P 3 sin deadline. Processerna är alltså inte schemaläggningsbara med RM.
UPPGIFT 6 a) Tidskraven för vridning av ett rotorblad inför passage av vindkraftverkets torn är inte konstanta utan beror på rotorvarvtalet enligt följande resonemang. Då det är möjligt att få veta tidpunkten när bladet passerar tornet utnyttjar vi det som vår referens. Kalla tiden vid passage för t. Givet det aktuella rotorvarvtalet r (i rpm = varv per minut) tar det tiden t r =60/r (sekunder) för rotorn att snurra ett helt varv (360 grader) och det aktuella bladet att åter passera tornet. Då kan vi också härleda den tid t r18 som det tar för rotorn att snurra 18 grader: t r18 =18t r /360 = 0.05t r =3/r. Sedan vet vi att det kan ta upp till 100 ms att ställa om pitchvinkeln räknat från när kommando ges av datorn till pitchsystemet. Detta ger oss deadline D zero,räknat från passage av tornet vid tidpunkt t, för att påbörja vridningen till 0 graders pitchvinkel inför nästa passage av tornet vid tidpunkt t + t r : D zero = t r t r18 0.1 =60/r 3/r 0.1 =57/r 0.1. Vi kan också härleda den deadline D restore som gäller för att påbörja återställandet av ursprunglig pitchvinkel efter passage av tornet: D restore = t r18 =3/r b) Vi visar en lösning där vart och ett av rotorbladen får en dedikerad process som reglerar bladets pitchvinkel. Vi visar nedan enbart koden för process Blade 1. Vi har dessutom en separat process Update Pitch som ansvarar för att var 5:e sekund räkna ut lämplig pitchvinkel för bladen. normal_pitch : pitch_t := 10; task Update_Pitch is next_update : Time := Clock + 5.0; begin loop normal_pitch := wsp_to_pitch(get_wsp); delay until next_update; next_update := next_update + 5.0; end; task Blade_1 is rpm : rpm_t; current_time : Time; begin... -- diverse initieringar loop wait_blade(b1); -- invänta att bladet passerar tornet -- läs av aktuellt varvtal och klockslag current_time := Clock; rpm := get_rpm; -- invänta läge för återställning av normal pitchvinkel delay until current_time + 3.0 / rpm; set_pitch(b1, normal_pitch); -- invänta läge för att sätta pitchvinkel 0 delay until current_time + 57.0 / rpm - 0.1; set_pitch(b1, 0); end Blade_1; task Blade_2 is... -- samma kod som Blade_1 men med referens till B2 task Blade_3 is... -- samma kod som Blade_1 men med referens till B3
UPPGIFT 7 a) På grund av exekveringsmönstret måste de två processerna ha olika perioder. Och eftersom RM används så måste samma process dessutom hela tiden ha högst prioritet och därmed alltid exekvera oavbrutet vid varje ankomst. Man ser i diagrammet att denna process måste vara P 1 och kan dåocksåfå fram att C 1 =4ochT 1 = 10. Perioden på P 2 måste då varalängre än 5 för att prioritetstilldelningen skall stämma. Med hjälp av luckan i exekveringen mellan tidpunkterna 24 och 28 inser man att T 2 = 14. Det framgår också tydligt att C 2 =6. b) Utnyttjandegraden U = C 1 /T 1 + C 2 /T 2 =4/10 + 6/14 = 0.83. Observera att de två processerna fullt utnyttjar processorn trots att U är betydligt mindre än 1. Detta är ett typiskt karaktärsdrag hos RM. c) För C 1 =0är det trivialt att ta fram C 2 = 14: P2 1 P2 2 P2 3 För C 1 = 2 ser vi att C 2 = 10 om processerna skall fullt utnyttja processorn: P1 1 P2 1 P1 2 P2 1 P2 2 P1 3 P2 2 P2 3 P1 4 P2 3 För C 1 = 8 ser vi att C 2 = 2 om processerna skall fullt utnyttja processorn: P1 1 P2 1 P1 2 P2 2 P1 3 P2 3 P1 4 d) Utnyttjandegraden blir i de olika punkterna: C 1 =0,C 2 = 14: U =1.0 C 1 =2,C 2 = 10: U =0.91 C 1 =4,C 2 =6:U =0.83 C 1 =8,C 2 =2:U =0.94 Vad vi ser nu är att utnyttjandegraden har ett minimum för C 1 = 4,C 2 = 6, och att detta minimum är U =0.83. Om man nu betänker att vi använder RM och har två processer i systemet så är det mycket intressant att konstatera att värdet på Liu & Laylands schemaläggningsgräns för RM och två processer är just 2(2 1/2 1) = 0.83. Vad vi har gjort i denna uppgift är alltså att bevisa Liu & Laylands schemaläggningstest för specialfallet två processer. Det ursprungliga beviset använder i och för sig en striktare matematisk notation och beaktar samtliga kombinationer av processparametrar, men principen är exakt densamma.