MUP1+Øvelse+13

1 = Waiting
=Exercise 1-2:=

=Exercise 2-1:=

=Exercise 2-2:=

=Exercise 3-1:= U1 = 10/60 = 0,16667 U2 = 15/80 = 0,1875 U3 = 50/150 = 0,33333 U4 = 10/250 = 0,04 U5 = 6/500 = 0,012

Un = 5*((2^(1/5))-1 = 0,74349

Det er skedulerbart hvis SUM af U < Un => (U1+U2+U3+U4+U5) < Un => 0,7395 < 0,74349

kan os forklares ud fra Un - SUM hvis dette tal er positivt er systemet skalerbart hvis 0 eller negativt er det kun måske eller slet ikke.

Un - SUM = 0,74349 - 0,7395 = 0,00399

Som det ses ovenover er dette system skalerbart.

=Exercise 3-2:= U1 = 10/60 = 0,16667 U2 = 15/80 = 0,1875 U3 = 50/150 = 0,33333 U4 = 10/250 = 0,04 U5 = 8/500 = 0,016

Un = 5*((2^(1/5))-1 = 0,74349

Det er skedulerbart hvis SUM af U < Un => (U1+U2+U3+U4+U5) < Un => 0,7435 < 0,74349

kan os forklares ud fra Un - SUM hvis dette tal er positivt er systemet skalerbart hvis 0 eller negativt er det kun måske eller slet ikke.

Un - SUM = 0,74349 - 0,7435 = -0.00001

Som det ses ovenover er dette system ikke skalerbart da det giver et minus tal.

=Exercise 3-3:= U1 = 10/80 = 0,125 U2 = 25/180 = 0,138889 U3 = 40/250 = 0,16

SUM = U1 + U2 + U3 = 0,423889

B1 = 8, B2 = 0, B3 = 0

Bmax = ((25+6)/80) = 0,3875

SUM + Bmax = 0,811389

Un = 3*((2^(1/3))-1 = 0,779763

Un > SUM + Bmax => 0,7797 > 0,8113 er ikke sandt, altså er dette system ikke skedulerbart

=Exercise 3-4:= U1 = 10/80 = 0,125 U2 = 23/180 = 0,127778 U3 = 40/250 = 0,16

SUM = U1 + U2 + U3 = 0,412778

B1 = 8, B2 = 0, B3 = 0

Bmax = ((23+6)/80) = 0,3625

SUM + Bmax = 0,775278

Un = 3*((2^(1/3))-1 = 0,779763

Un > SUM + Bmax => 0,7797 > 0,7752 er sandt, altså er dette system skedulerbart

=Exercise 4:=

delopgave A
Systemet er non-blocking ved data-sharing:

periodetiden T til de fire komponenter er:

SensorReader = 1/500hz = 2 ms Calculator = 1/250hz = 4 ms GUIUpdater = 1/75 = 3,3333 ms Watchdog = 1/10hz = 100ms

Servicetiden C:

med en12 MIPS Uprocessor, er en instr 1/12M = 0.000083 ms SensorReader = (2200 instr + 25 til Writing) = (2225*0.000083 ms) = 0.185417 ms.

Calculator kører 1/2 hastighed af SensorReader, Det vil sige 2 værdier hvergang: (26.000 instr + (2*25)) = (26050 * 0.000083 ms) = 2.16215 ms.

GUIUpdater 1/3 hastighed af Calculator = 3 readings (16.000 instr + (3*25)) = (16075 * 0.000083 ms) = 1.33423 ms.

watchdog: (200 instr * 0.000083) = 0.0166 ms.

U for hver opgave = C/T:

Opgaver:
SensorReader = 0,185417 /2 = 0,09279 Calculator = 2,16215 / 4 = 0,540538 GUIUpdater = 1,33423 / 3,3333 = 0,10007 Watchdog = 0,0166 / 100 = 0,000166

Summen af U : sum(U) = 0.733483

U(n) = U(4) = 4*((2^(1/4))-1) = 0.756828.

SUM U < U(4) derfor er systemet skedulérbart.

delopgave B
Der skal nu regnes med at der er blokerende data deling:

Den korteste Periodetid har den højeste prioritet udfra det kan vi udregne Block tiden (B)

SensorReader har mulighed for at blokere for Calculator i 25 ms => B = 25 * 0.000083 ms = 0.002075 ms. Calculator har mulighed for at blokere for SensorReader i 50 ms => B = 50 * 0.000083 ms = 0.00415 ms. GUIUpdater er lavest prioriteret og deler resourcer, derfor er B = 0 ms. Watchdog deler ikke resourcer med nogen, derfor er B = 0 ms.

Vi beregner nu Blocking (B/T): listet efter mindste prioritet først ->

WatchDog = B/T = 0 / 101 = 0 GUIUpdater = B/T = 0 / 13.3333 = 0 Calculator = B/T = 0,00415/8 = 0.000519 SensorReader = B/T = 0,002075/6 = 0.000346

U+Bmax(B/T) skulle så gerne stadig være mindre in Un hvis systemet skal være skedulerbart

U+Bmax(B/T) = 0,733483 + 0,000519 = 0,734002

Her kan vi så se at 0,734002 < 7,56828 og derfor er systemet stadig skedulerbart.