Sunteți pe pagina 1din 43

prelucrare esantion cu esantion

prelucrare esantion
cu esantion
buffere comutate
buffere comutate
codec gsm codec gsm
4000
fir
fir
lift - c

lift - c
4000

4000
dtmf

DTMF
CONSULTATIE

consultatie
x,y
X,Y
graf

GRAF
compensator de
ecou compensator de ecou
lms lms
Lucrarea 2 - MC 10 decembrie 2019 (solutii propuse)

1.
Sa se realizeze din punct de vedere software blocul de comanda al unui lift cu 4 niveluri
(parter si 3 etaje) cu urmatoarele functii:

a. Inregistreaza comenzile pentru fiecare nivel (fiecare nivel are cite un


buton asociat)
b. Afiseaza aceste comenzi (pe cite un LED asociat fiecarui nivel)
c. Transmite comanda necesara de urcare, coborire sau oprire a liftului si
afiseaza modul de lucru al liftului (urcare, coborire, oprit)
d. Genereaza, la apasarea unui buton, pe o durata mai mare de 5 secunde, o
alarma care va fi semnlizata vizual
e. Resetarea alarmei se poate face la apasarea unui buton

Exista un senzor, pe 8 biti, care indica la ce etaj se afla liftul in orice moment de
timp. Nu se cer functiile necesare actionarii electromecanice a liftului (aceste
functii vor fi considerate ca fiind date).
Se cer:
- Graful procesului secvential care implementeza blocul de comanda
- Codul in limbaj C, asociat grafului
- Toate explicatile necesare pentru implementarea propusa

Graful propus:

Starile 1 si 2 realizeaza preluarea comenzii pentru nivelul 0 (parter), starile 3 si 4


realizeaza preluarea comenzii pentru nivelul 1, starile 5 si 6 realizeaza preluarea
comenzii pentru nivelul 2, iar starile 7 si 8 realizeaza preluarea comenzii pentru nivelul
3.
Comanda se inregistreaza in tabloul CDA : 1 – activ.
Butoanele pentru comenzile associate nivelurilor sint SW3, SW2, SW1 si SW0, iar
comanda e activata la apasarea si eliberarea butonului (buton apasat – 0 logic).
Starea 12 – afiseaza comenzile primite pe led-urile LED3, LED2, LED1 si LED0 (led
aprins – 0 logic).
Starea 0 este starea in care se comanda actionarea electromecanica a liftului si se
afiseaza modul de lucru (in urcare, in coborire, oprit) al liftului: daca exista comanda
activa, se citeste senzorul de etaj si se actioneaza in consecinta. Functiile UP , DOWN si
STOP realizeaza urcarea, coborirea sau oprirea liftului. In solutia propusa, aceste
functii efectueaza doar afisarile cerute (stop, urcare, coborire le LED7, LED6 si LED5).
Presupunem ca senzorul de etaj ia o valoare negativa (0xFF) intre etaje.
Starea 9 trateaza generarea alarmei, la apasarea butonului SW7. Se numara
intreruperile periodice intre apasarea lui SW7 si eliberarea lui, pentru a se determina
durata apasarii (valoarea NA = 5 sec / perioada intreruperilor periodice). Apasarea
SW6 conduce la resetarea alarmei.

Codul propus:

// se presupun date functiile portin si portout pentru citirea si


// scrierea intrarii si iesirii astfel:
// char portin(int adr); - intoarce ceea ce se citeste de la portul de
// intrare de adresa adr
// void portout(int adr, char val); - scrie valoarea val in portul de
// iesire de adresa adr

// adresele porturilor de intrare, senzor etaj si iesire

#define ADRIN 0x100


#define ADROUT 0x200
#define ADRSEN 0x300

// prototipurile functiilor utilizate


void STOP(void); // oprire lift
void UP(void); // urcare lift
void DOWN(void); // coborire lift
void afisare_CDA(void); // afisaree comenzi
void afisare_ALARMA(void); // afisare alarma
void reseteaza_ALARMA(void); // resetare alarma

char Q=0; // stare procesului secvential

char in; // intrarea (SW7...SW0)


char senet; // senzorul de etaj (0xFF intre etaje,
// 0, 1, 2 sau 3 – etajul la care s-a
// ajuns
char out; // iesirea (LED7 ... LED0)

char CDA[3]= {0,0,0,0}; // comenzile pentru etaje


char afis_CDA[3]={0xFE, 0xFD, 0xFB, 0xF7}; // afisarea comenzilor
char i =0; // index in CDA

// rutina de servire a intreruperii


void SCI(void)
{

in=portin(ADRIN); // citire intrare


senet=portin(ADRSEN); // citire senzor de etaj

switch (Q)
{
case 0:
{
// verificare daca s-a ajuns la un etaj (liftul nu se afla intre etaje)
// actionarea corespunzatoare a liftului in functie de comanda
// comenzile sint tratate la rind de la 0 la 3
if (senet>=0)
{
if (CDA[i]=1)
{
if ((i-senet) == 0) STOP();
if ((i-senet) > 0) UP();
if ((i-senet) < 0) DOWN();
CDA[i]=0;
out = (out | (~afis_CDA[i]); // CDA[i] in 1 logic
portout(ADROUT, out);
i=(i+1)%3;
}
}

// determinare comenzi noi

if ((in & 0x01) ==0 ) Q=1; // SW0


if ((in & 0x02) ==0 ) Q=3; // SW1
if ((in & 0x04) ==0 ) Q=5; // SW2
if ((in & 0x08) ==0 ) Q=7; // SW3

// determinare alarma

if ((in & 0x80) ==0 ) Q=9; // SW7


break;
}

// eliberare buton SW0


case 1:
{
if ((in & 0x01) !=0 ) Q=2;
break;
}

// inregistrare comanda 0
case 2:
{
CDA[0]=1;
Q=12;
break;
}
// eliberare buton SW1
case 3:
{
if ((in & 0x02) !=0 ) Q=4;
break;
}

// inregistrare comanda 1
case 4:
{
CDA[1]=1;
Q=12;
break;
}

// eliberare buton SW2


case 5:
{
if ((in & 0x04) !=0 ) Q=6;
break;
}

// inregistrare comanda 2
case 6:
{
CDA[2]=1;
Q=12;
break;
}

// eliberare buton SW3


case 7:
{
if ((in & 0x08) !=0 ) Q=8;
break;
}

// inregistrare comanda 3
case 8:
{
CDA[3]=1;
Q=12;
break;
}

// masurarea timp apasare buton alarma


case 9:
{
CNT_A++;
Q=10;
break;
}
// determinare eliberare buton alarma
// test durata apasare
case 10:
{
if ((in & 0x80) !=0 )
{
if (CNT_A>NA)
{
afiseaza_ALARMA();
Q=11;
}
else Q=0;
}
else Q=9;
break;
}

// test apasare SW6 si resetare alarma


case 11:
{
if ((in & 0x40) ==0 )
{
CNT_A=0;
reseteaza_ALARMA();
Q=0;
}
break;
}

// afisare CDA
case 12:
{
afiseaza_CDA();
Q=0;
break;
}

}
}

// Functile utilizate

// scrie 0 pe bitul 7 (STOP) al iesirii out


void STOP(void)
{
out = out & 0x7F;
out = out & (~0xBF); // UP stins
out = out & (~0xDF); // DOWN stins
portout(ADROUT, out);
}

// scrie 0 pe bitul 6 (UP) al iesirii out


void UP(void)
{
out = out & 0xBF;
out = out & (~0x7F); // STOP stins
out = out & (~0xDF); // DOWN stins
portout(ADROUT, out);
}

// scrie 0 pe bitul 5 (DOWN) al iesirii out


void DOWN(void)
{
out = out & 0xDF;
out = out & (~0xBF); // UP stins
out = out & (~0x7F); // STOP stins
portout(ADROUT, out);
}

// scrie in out CDA[i]


// afis_CDA - 0xFE, 0xFD, 0x FB, 0xF7 corespund bitilor 0, 1, 2 si 3
// in stare de 0 logic (aprindere led 0, 1 , 2 si 3)
void afisare_CDA(void)
{
char i, tmp;
for (i=0; i<3; i++)
{
if (CDA[i]==1) out = out & afis_CDA[i]; // led i in 0 logic
else out = (out | (~afis_CDA[i]); // led i in 1 logic
portout(ADROUT, out);
}
}

// scrie 0 pe bitul 4 (ALARMA) al iesirii out


void afisare_ALARMA(void)
{
out = out & 0xEF;
portout(ADROUT, out);
}

// scrie 1 pe bitul 4 (ALARMA) al iesirii out


void reseteaza_ALARMA(void)
{
out = (out & 0xEF) | 0x10;
portout(ADROUT, out);
}

2. Sa se scrie, in limbaj de asamblare ADSP2181, o secventa de cod care implementeaza


un generator de ecou sintetic dupa formula:

y (n)  x( n)  0.125.x( n  2400)0.0625.x( n  4000)

Daca ecoul devine sesizabil la o intirziere de peste 300ms, cit ar trebui sa fie frecventa de
esantionare?

Definirea constantelor:

// intirzierea maxima
#define N 4000

//0.125 in 1.15
#define a1 0x1000

//0.0625 in 1.15
#define a2 0x0800

// linia de intirziere circulara


.var/circ delay[N+1];

// portul de intrare si portul de iesire


.var input;
.var output;

Initializari

// linia de intirziere
i0=delay;
l0=N+1;

m0=1;
m1=1600; // 4000-2400
m2=-1600;

Secventa de prelucrare

// citeste x(n)
ay0=dm(input);

// actualizeaza linia de intirziere


dm(i0,m0)=ay0;

// I0 indica esantionul cel ai vechi x(n-4000), urmat de x(4000-1),


// x(4000-2) etc
// citeste x(n-4000)
mx0=dm(i0,m1);

// I0 va indica esantionul x(n-4000+1600) = x(n-2400)


// citeste x(n-2400)
mx1=dm(i0,m2);

// I0 va indica esantionul x(n-2400-1600)= x(n-4000)

my0=a2;
my1=a1;

// mx0 = x(n-4000), my0=a2= 0.0625 in 1.15


mr=mx0*my0 (ss);
// mr1=0.0625*x(n-4000)

// mx1 = x(n-2400), my1=a1= 0.125 in 1.15


mr=mr+mx1*my1 (ss);
// mr1=0.125*x(n-2400)+0.0625*x(n-4000)
ax0=mr1;
ar=ax0+ay0;
//ar = x(n)+0.125*x(n-2400)+0.0625*x(n-4000)

// scrie iesirea y(n)


dm(output)=ar;
x(n-N) repreezinta semnalul intirziat cu N esenatioane adica cu NTs= N/fs secunde.
(fs= 1/Ts – frecventa de esantionare).
Pentru o intirziere de minim 300 ms si N max 4000 rezulta N/fs=0.3 secunde adica
4000/fs=0.3.secunde , de unde fs= 4000/0.3 = 13.33 kHz
De exemplu pentru fs=13.3 KHz intirzierile din problema data sint 2400/13.33 kHz =
180 ms si 4000/13.33 kHz = 300 ms. Pentru frecventa uzuala de 8000 Hz aceste intirzieri
devin 2400/8000 = 300 ms si 4000/8000 = 500 ms.

3.
a) Precizati rolul predictorului de salt intr-un microprocessor cu pipe-line si evaluati
utilitatea acestui predictor daca adincimea pipe-line este 3 sau 20.
b) Explicati rolul paginarii intr-o schema de adresare cu segmente paginate. De ce nu se
utilizeaza doar segmentarea?

a) Predictorul de salt are rolul de a determina in avans daca saltul conditionat se va


efectua, astfel incit incarcarea instructiunilor in pipe-line sa se efectueze in
ordinea corecta. In cazul in care nu se cunoaste daca se va efectua sau nu saltul
conditionat structura pipe-line va astepta un numar de maxim k-1 tacte (k este
numarul de stagii sau adincimea pipe-line). Concluzia este ca pentru k mare
predictorul de salt este strict necesar. Pentru k mic timpul de asteptare este mic si
poate fi neglijat. Exemplu comparativ: pentru k=3 timpul maxim de asteptare este
2 tacte, dar pentru k=20 timpul maxim de asteptare este 19 tacte cu un ordin de
marime mai mare ca 2.
b) Segmentarea se foloseste pentru a asigura accesul protejat la memorie, iar
dimensiunea segmentului este stabilita de programe. Pentru a se evita incarcarea
intregului segment in memorie (de pe disc de exemplu), segmentul se imparte in
pagini si se incarca la nevoie doar un numar mic de pagini(doar paginile
necesare). Acest lucru este posibil datorita faptului ca programele utilizeaza, in
faza curenta de executie, doar o mica parte a memoriei in care isi stocheaza
variabilele. Avantajul este reducerea timpului necesar incarcarii de pe disc in
memorie si utilizarea mai eficienta a memoriei prin faptul ca mai multe programe
isi pot stoca pagini din segmentele proprii in memorie. Dezavantajul este
cresterea complexitatii mecanismului de segmentare paginare (trebuie citite 3
tabele (de descriptori de segment si director de pagini si de paginare) in loc de
una (de descriptori de segment), creste usor timpul de access la memorie.
Mecanismul de acces este implementat in hardware, prin urmare timpului de
acces este mic.
EXEMPLE DE PROBLEME

Problema 1

Fie un sistem cu două procesoare P1 şi P2, avînd memorii private şi interconectate


printr-un bus comun şi memorie comună (MC). În fiecare procesor rulează cu diviziune în
timp în fiecare ciclu T [ms], mai multe procese (în memoriile private) :

în P1 : procesele p1, p2, p3 în T[ms]


în P2 : procesele p4, p5 în T[ms]

Ciclurile de planificare ale celor două procesoare sînt sinfazice.


În memoria comună există o secţiune critică (SC) cu acces exclusiv protejată printr-
o variabilă flag (aflată tot în MC). Anumite procese au acces la SC din memoria comună.

Planificarea se face cu autosuspendare.


Numai procesele p1,p3 şi p4 au acces la memoria comună.
Procesele p1,p2,p3,p4,p5 sînt descrise prin maşini cu stări finite extinse (EFSM).
Fiecare proces execută la o activare o singură tranziţie pe graful său după care se
autosuspendă. Structura unei tranziţii în care se face acces la SC este :
Prelucrare timpi de execuţie
execuţie

prelucrări_1 - T/16
|
SC - T/4
|
prelucrări_2 - T/16

Se cer:

a) Timpul maxim de aşteptare pentru acces la SC pentru procesul p4.


b) Timpul maxim de utilizare al SC într-un ciclu, în cel mai favorabil caz.

Rezolvare

Procesele se planifică şi se execută ca în figura 1:

a) Cazul cel mai defavorabil este atunci cînd procesul p4 (din procesorul P2) pierde
competiţia pentru ocuparea resursei comune (procesul p1 sau procesul p3 ocupă resursa) ca
în figura 2.
Datorită ordinii de planificare (p1,p2,p3 şi p4, p5) şi a timpilor maximi de execuţie
nu exista o situaţie mai defavorabilă din punct de vedere al aşteptării pentru procesul p4.
Din figura 2 rezultă timpul maxim de aşteptare tmax_aşteptare = t max_SC = T/4.

b) În cel mai favorabil caz toate cele 3 procese p1,p3 şi p4 pot ocupa resursa în
acelaşi ciclu, ca în figura 3 :

1
SISTEME DE TIMP REAL CU COMANDĂ PROGRAMATĂ . APLICAŢII

planificarea

P1 p1 p2 p3
prelucrare_1
max 3T/8 max T/8 max 3T/8
tranzitie
SC
p4 p5
max 3T/8 max T/8 prelucrare_2
P2

T
Figura 1

max T/4

P1 Prelucrare_1 SC Prelucrare_2

p1 sau p3 ocupa resursa

P2 Prelucrare_1 WAIT la flag SC

p4 pierde competitia
si asteapta la flag

Figura 2

T
max T/4 max T/4
P1 T/16 SC T/16 T/16 T/16 T/16 SC T/16
p1 p2 p3
max T/4 max T/4
P2 T/16 WAIT SC T/16 T/16 T/16

p4 p5
Figura 3

Timpul maxim de utilizare a resursei comune va fi tmax_utilizare_SC = 3.


TSC_max = 3. T /4

Problema 2

Fie un sistem cu două procesoare P1 şi P2, avînd memorii private şi interconectate


printr-un bus comun şi memorie comună (MC). În fiecare procesor rulează cu diviziune în
timp în fiecare ciclu T [ms], mai multe procese (în memoriile private) :

în P1 : procesele p1, p2, p3 în T[ms]


în P2 : procesele p4, p5 în T[ms]

2
EXEMPLE DE PROBLEME
Ciclurile de planificare ale celor două procesoare sînt sinfazice.
În memoria comună există o secţiune critică (SC) cu acces exclusiv protejată printr-
o variabilă flag (aflată tot în MC). Anumite procese au acces la SC din memoria comună.
Planificarea se face cu suspendare forţată cu alocare egală a timpului pentru
procese.
Numai procesele p1 şi p4 au acces la memoria comună.
Procesele sînt descrise arbitrar.
Timpul maxim de execuţie al SC este T/4. Iniţiativele de acces la SC sînt la
momente de timp aleatoare.
Planificatorul întrerupe obligatoriu un proces, la expirarea intervalului de timp
alocat.
Se cer:

a) Timpul maxim de aşteptare pentru acces la SC pentru procesul p4.


b) Timpul maxim de utilizare al SC într-un ciclu, în cel mai favorabil caz.

Rezolvare

Planificarea proceselor este ilustrată în figura 1.

T
T/3 T/3 T/3
P1 p1 p2 p3

T/2 T/2
P2 p4 p5

Figura 1.

Numai procesele p1 (din P1) şi p4 (din P2).


Cazul cel mai defavorabil este atunci cînd procesul p1 cere accesul la resursa
comună şi o ocupă (poziţionează flag-ul ) fără a incepe utilizarea efectivă a resursei
comune. Utilizarea resursei se va face în cuanta de timp asociată lui p1 din ciclul imediat
următor. Dacă procesul p4 cere accesul la resursa comună simultan cu p1, dar pierde
competiţia pentru ocuparea acesteia atunci acesta va aştepta ca p1 să elibereze resursa.
Situaţia este ilustrată în figura 2.

3
SISTEME DE TIMP REAL CU COMANDĂ PROGRAMATĂ . APLICAŢII

T/3 T T + T/4 = 5T/4 2T


T/3 - ε T+T/3=2T/3
P1
p1 p2 p3 p1:SC p1 p2 p3

p1 ocupa resursa (nu o utilizeaza) p1 utilizeaza resursa p1 elibereaza resursa


P2 p4 WAIT p5 :WAIT p4 : SC p5

p4 pierde competitia T/4


si asteapta la flag

timp de asteptare = 2T/3+T/4 = 11T/12

Figura 2
Timpul de aşteptare va fi :
tasteptare = timpul ramas pînă la încheierea ciclului curent + timpul de utilizare a resursei
comune = 2T/3 + T/4 = 11T/12.
b) În cazul cel mai favorabil fiecare proces p1 şi p4 poate utiliza resursa comună, ca
în figura 3 :
T
max T/4 T/3
P1 p1:SC p2 p3

T/2
T/4
P2 p4 p4:SC

p4 asteapta
eliberarea resursei T/4 unitati de timp

Figura 3

Rezultă că timpul maxim deutilizare a resursei comune este :

t max_utilizare = 2. tSC_max = 2. T/4 = T/2

Problema 3

Un planificator de procese sincrone (PS) şi asincrone (PA) lucrează periodic cu


cicluri de durata 10T, alocate astfel :

- intervalul [0, 7T ) - pentru 7 procese sincrone (PS1 - PS7)


- intervalul [7T, 10T ) - pentru un proces asincron (PA).

Procesele sincrone sînt executate cu suspendare forţată. Fiecare proces sincron are
alocată pentru execuţie cîte o cuantă T.

Procesul asincron PA este lansat în execuţie prin apariţia unei întreruperi asincrone
IA, într-un moment oarecare. Dacă IA apare în intervalul cît se execută un proces sincron
4
EXEMPLE DE PROBLEME
atunci acesta este întrerupt pentru un interval de timp foarte mic, în care se execută servirea
IA. În această rutină se citeşte o intrare aferentă lui PA şi se planifică (prin informarea
planificatorului ) prelucrările PA pentru intervalul de timp alocat acestor prelucrări.
Prelucrările PA durează TPA cu T< TPA<5T, după care se generează un mesaj de
ieşire.
Se consideră că apare o singură întrerupere asincronă IA la momentul t1= 2.5T .
Se cere timpul de răspuns al procesului asincron PA, măsurat din momentul t1, în
cazul cel mai defavorabil.

Rezolvare

Timpul de răspuns reprezintă intervalul de timp dintre citirea intrării şi generarea


ieşirii.
Procesul asincron PA generează o întrerupere asincronă şi întrerupe temporar
procesul sincron PS3 (care are alocat intervalul (2T, 3T)). Execuţia lui PA începe la
momentul de timp 7T (începutul intervalului de timp alocat proceselor asincrone : (7T,
10T)). În cazul cel mai defavorabil execuţia lui PA durează 5T, deci nu se termină în ciclul
curent. Terminarea execuţiei lui PA este efectuată începînd de la momentul 7T + 10T
(următorul interval alocat proceselor asincrone). Nici un alt proces asincron nu mai
generează IA.
Situaţia cea mai defavorabilă este ilustrată în figura 1.
Timpul de răspuns va fi :

tr = timpul de aşteptare a intervalului alocat pentru PA + texec1_PA + timpul de


aşteptare a noului interval alocat PA + texec2_PA =

= 4.5T + 3T + 7T + 2T = 16.5T

citeste intrarea genereaza iesirea

PS1 PS2 PS3 PS4 PS5 PS6 PS7 PA PS1 PS2 PS3 PS4 PS5 PS6 PS7 PA

0 T 2T 3T 4T 5T 6T 7T 10T 17T 19T 20T

IA executie 3T executie 2T

planificare PA
se intrerupe PA de catre PS
se reia executia PA
timp de raspuns = 4.5T + 3T + 7T + 2T = 16.5T

Figura 1

5
SISTEME DE TIMP REAL CU COMANDĂ PROGRAMATĂ . APLICAŢII

Problema 4

Un planificator de procese sincrone (PS) şi asincrone (PA) lucrează periodic cu


cicluri de durata 10T, alocate astfel :

- intervalul [0, 7T ) - pentru 7 procese sincrone (PS1 - PS7)


- intervalul [7T, 10T ) - pentru un proces asincron (PA).

Procesele sincrone sînt descrise prin EFSM. Planificarea PS se face cu


autosuspendare după execuţia unei tranziţii. O tranziţie oarecare se efectuează într-un timp
cuprins între 0.25T şi T.
Procesul asincron PA este lansat în execuţie prin apariţia unei întreruperi asincrone
IA, într-un moment oarecare. Dacă IA apare în intervalul cît se execută un proces sincron
atunci acesta este întrerupt pentru un interval de timp foarte mic, în care se execută servirea
IA. În această rutină se citeşte o intrare aferentă lui PA şi se planifică (prin informarea
planificatorului ) prelucrările PA pentru intervalul de timp alocat acestor prelucrări.
Prelucrările PA durează TPA cu T< TPA<3T, după care se generează un mesaj de
ieşire.
Se consideră că apare o singură întrerupere asincronă IA la momentul t1= 2.5T .
Se cere timpul de răspuns al procesului asincron PA, măsurat din momentul t1, în
cazul cel mai favorabil.

Rezolvare

Cazul cel mai favorabil este atunci cînd toate procesele sincrone efectuează tranziţii
cu durata minimă, 0.25T. După intervalul de timp
TPS = 7.(0.25T) = 1,75 T toate procesele sincrone s-au terminat (pe durata ciclului de
planificare curent).
Întreruperea asincronă IA apare într-un moment de timp cînd planificatorul nu are
nici un proces (sincron) în execuţie, deci procesul asincron se exectă imediat. Procesul
asincron se va termina înainte de începerea ciclului de planificare următor.
Situaţia cea mai favorabilă este ilustrată în figura 1.

Timpul de răspuns va fi :

tr = timpul de execuţie minim pentru PA = T

citeste intrarea genereaza iesirea

PS1- 7 PA executie PA PS1- 7

0 T 2T 3T 4T 5T 6T 7T 10T

IA 3.5T
1.75T

timp de raspuns = T

Figura 1

6
EXEMPLE DE PROBLEME

Problema 5

În unităţile centrale CPU1 şi CPU2 rulează cu diviziune în timp procesele P1, P2


(în CPU1 ) şi Q1, Q2 ( în CPU2 ).
Planificarea execuţiei este astfel:

- procesele P1 şi P2 se execută cu suspendare forţată şi diviziune uniformă a


timpului.
- procesele Q1 şi Q2 se autosuspendă.

Durata ciclului de planificare este 2T. În CPU1 şi CPU2 ciclurile sînt sinfazice.
Execuţia proceselor este ilustrată în figura 1.

Activare

Citeste intrarea Citeste intrarea


Prelucrare Prelucrare asociata starii curente
Genereaza iesirea
Genereaza iesirea

Autosuspendare
Procese cu suspendare fortata Procese cu suspendare fortata

Figura 1

Timpul de execuţie asociat prelucrărilor proceselor cu suspendare forţată şi a celor


cu autosuspendare este mai mic sau egal cu T.
Ieşirea lui P1 este intrare în Q1.
Se presupune că intrările se modifică suficient de lent astfel încît orice modificare
este sesizată.
Se cere timpul maxim de răspuns al lui Q1, măsurat din momentul modificării
intrării lui P1.

Rezolvare

Cazul cel mai defavorabil este atunci cînd intrarea procesului P1 se modifică
imediat după terminarea citirii intrării. Prelucrarea asociată modificării intrării se va efectua
în următorul ciclu.
Procesul Q1 trebuie să aştepte terminarea execuţiei şi generarea ieşirii procesului
P1. Procesul Q1 nu sesizează modificarea intrării proprii în primul ciclu de activare imediat
după generarea ieşirii lui P1. Modificarea este sesizată în al doilea ciclu în care se
consideră timpul de execuţie al lui Q1 ca fiind maxim (pentru cazul cel mai defavorabil).
Situaţia este prezentată în figura 2.

7
SISTEME DE TIMP REAL CU COMANDĂ PROGRAMATĂ . APLICAŢII

CPU1 CPU2

e1'
i1 P1 e1 i1' Q1

2T se modifica imediat
citire intrare dupa citire genereaza
i1 (timp de citire aproximativ zero) iesirea

CPU1
P1 P2 P1 P2 P1 P2 P1 P2
τ τ timp max.
e1 T-τ de executie
CPU2 Q1 se termina inainte de modificarea
intrarii i1' Q1 Q2 Q1 Q2
e1'
se genereaza iesirea e1'
Timp de raspuns maxim

Figura 2

Timpul de răspuns va fi :

tR = τ + T + 2T + 2T + texQ1

Valoarea maximă tRmax se obţine pentru = T şi texQ1 = T adică : tRmax = 7T .

Problema 6

În unităţile centrale CPU1 şi CPU2 rulează cu diviziune în timp procesele P1, P2


(în CPU1 ) şi Q1, Q2 ( în CPU2 ).
Planificarea execuţiei este astfel:

- procesele P1 şi P2 se autosuspendă.
- procesele Q1 şi Q2 se execută cu suspendare forţată şi diviziune uniformă a
timpului.

Durata ciclului de planificare este 2T. În CPU1 şi CPU2 ciclurile sînt sinfazice.
Execuţia proceselor este ilustrată în figura 1.

8
EXEMPLE DE PROBLEME
Activare

Citeste intrarea Citeste intrarea


Prelucrare Prelucrare asociata starii curente
Genereaza iesirea Genereaza iesirea

Autosuspendare

Procese cu suspendare fortata Procese cu suspendare fortata

Figura 1

Timpul de execuţie asociat prelucrărilor proceselor cu suspendare forţată şi a celor


cu autosuspendare este mai mic sau egal cu T.
Ieşirea lui P1 este intrare în Q1.
Se presupune că intrările se modifică suficient de lent astfel încît orice modificare
este sesizată.
Se cere timpul maxim de răspuns al lui Q1, măsurat din momentul modificării
intrării lui P1.

Rezolvare

Cazul cel mai defavorabil este atunci cînd intrarea procesului P1 se modifică
imediat după terminarea citirii intrării. Prelucrarea asociată modificării intrării se va efectua
în următorul ciclu. Se consideră că timpul de execuţie pentru P1 este maxim (în cazul cel
mai defavorabil).
Procesul Q1 trebuie să aştepte terminarea execuţiei şi generarea ieşirii procesului
P1. Procesul Q1 sesizează modificarea intrării proprii la momentul de timp măsurat de la
începutul cuantei proprii de timp curente.
Situaţia este prezentată în figura 2.
Timpul de răspuns va fi :

tR = 2T + texP1 + T + T + T + (T -τ )

Valoarea maximă tRmax se obţine pentru τ = 0 şi texP1 = T adică : tRmax = 7T .

9
SISTEME DE TIMP REAL CU COMANDĂ PROGRAMATĂ . APLICAŢII

CPU1 CPU2

e1'
i1 P1 e1 i1' Q1

2T se modifica imediat
citire intrare dupa citire
i1 timp de prelucrare maxim
CPU1 genereaza
iesirea
P1 P2 P1 P2
e1
CPU2
Q1 Q2 Q1 Q2 Q1 Q2 Q1 Q2
τ T-τ T-τ
e1'

Timp de raspuns maxim


se genereaza iesirea e1'

Figura 2

Problema 7

Fie un sistem multiproces care rulează ciclic, cu diviziune în timp, procesele p1,p2,
... p5,p6, în fiecare ciclu T = 6 ms.
Sistemul are un singur procesor.
Planificarea se efectuează cu suspendare forţată. Se alocă o cuantă de timp egală cu
T/6 pentru fiecare proces (diviziune uniformă în timp).
Există o secţiune critică (SC),asociată unei resurse comune, protejată prin flag.
Operaţia de testare şi modificare a flag-ului este indivizibilă (neinteruptibilă) şi are
un timp de execuţie aproximativ zero.
Procesele ce pot avea acces la secţiunea critică sînt : p1,p4 şi p5.
Fiecare proces execută cel mult o nouă cerere de acces la resursa comună în
intervalul T şi numai dacă în acel ciclu nu a mai executat SC sau o fracţiune din SC.
Timpul maxim de execuţie al secţiunii critice este de 0.9 ms.

a) Se cere timpul maxim de aşteptare al unui proces din momentul executării cererii
pînă ce se obţine accesul la SC. Se va construi o diagramă de timp care să justifice soluţia.
b) Calculaţi randamentul maxim de utilizare al SC ca raport dintre timpul efectiv de
utilizare şi timpul total (într-un ciclu T).

Rezolvare

a) Situaţia cea mai defavorabilă este atunci cînd unul din procesele care pot accesa
secţiunea critică (de exemplu p1) cere accesul şi ocupă resursa (fără
fără a o utiliza însă)
însă la
sfîrşitul cuantei de timp proprii şi celelalte procese ce accesează SC (p4 şi p5) doresc
ocuparea resursei comune la începutul cuantei de timp asociate. Aceste procese trebuie să

10
EXEMPLE DE PROBLEME
aştepte ciclul următor pentru ca p1 să utilizeze şi să elibereze resursa comună. S-a ţinut
seama de faptul că un proces nu poate cere accesul la SC decît o singură dată pe ciclu.
Figura 1 ilustrează cazul cel mai defavorabil.
Timpul maxim de aşteptare este de un ciclu de planificare (datorită faptului că
utilizarea resursei durează mai puţin de o cuantă de timp alocată unui proces) :

T maxim de aşteptare = T = 6 ms

b) Toate cele trei procese care au acces la secţiunea critică pot utiliza resursa
comună într-un ciclu de planificare în situaţia cea mai favorabilă (vezi figura 1).
Rezultă randamentul maxim de utilizare :

η max = 3 x t max utilizare SC / T = 3 x 0.9 / 6 = 2.7 / 6 = 45 %

Planificare T = 6 ms

p1 p2 p3 p4 p5 p6 p1 p2 p3 p4 p5 p6

cerere acces cerere acces cerere acces


SC + ocupare SC + asteptare SC + asteptare
p1 elibereaza
Ocupare SC
SC
SC-p1 SC-p4 SC-p5
ocupata de p1, dar neutilizata
0.9
1.0
p4 ocupa p5 ocupa
SC SC
Timp de asteptare maxim = T

Figura 1

Problema 8

Fie un sistem multiproces care rulează ciclic, cu diviziune în timp, procesele p1,p2,
... p5,p6, în fiecare ciclu T = 6 ms.
Sistemul are două procesoare P1 şi P2.
Planificarea se efectuează cu autosuspendare. Procesele sînt descrise prin EFSM.
Fiecare proces execută o tranziţie pe graful propriu după care se autosuspendă pînă
în ciclul următor. Se presupune că sînt îndeplinite condiţiile de timp pentru planificarea cu
autosuspendare.
Procesele p1,p2 şi p3 se execută în procesorul P1.
Procesele p4,p5 şi p6 se execută în procesorul P2.
În memoria comună există o secţiune critică (SC),asociată unei resurse comune,
protejată prin flag.
Operaţia de testare şi modificare a flag-ului este indivizibilă (neinteruptibilă) şi are
un timp de execuţie aproximativ zero.
Procesele ce pot avea acces la secţiunea critică sînt : p1şi p4 .
Fiecare proces execută cel mult o nouă cerere de acces la resursa comună în
intervalul T şi numai dacă în acel ciclu nu a mai executat SC sau o fracţiune din SC.

11
SISTEME DE TIMP REAL CU COMANDĂ PROGRAMATĂ . APLICAŢII

Timpul maxim de execuţie al secţiunii critice este de 0.9 ms.

a) Se cere timpul maxim de aşteptare al unui proces din momentul executării cererii
pînă ce se obţine accesul la SC. Se va construi o diagramă de timp care să justifice soluţia.
b) Calculaţi randamentul maxim de utilizare al SC ca raport dintre timpul efectiv de
utilizare şi timpul total (într-un ciclu T).

Rezolvare

a) Situaţia cea mai defavorabilă este atunci cînd unul din procesele care pot accesa
secţiunea critică (de exemplu procesul p1 din procesorul P1) cere accesul, ocupă şi
utilizează resursa. Procesul p4 din procesorul P2 aşteaptă eliberarea resursei. În mod
evident procesul care ocupă resursa nu va renunţa la utilizarea acesteia deoarece
planificarea este cu autosuspendare.
Figura 1 ilustrează această situaţie.

Procesor P1 T = 6 ms

p1 SC p1 p2 p3

cerere acces autosuspendare p1


SC + ocupare
Procesor P2 eliberare SC

p4 WAIT SC p4 p5 p6

cerere acces autosuspendare p4


SC + asteptare

Timp de asteptare maxim = t exec. max. SC

Figura 1.

Timpul maxim de aşteptare este egal cu timpul maxim de utilizare a resursei


comune :

T maxim de aşteptare = t max utilizare SC = 0.9ms

b) Ambele procese care au acces la secţiunea critică pot utiliza resursa comună într-
un ciclu de planificare, în cele două procesoare (vezi figura 1).
Rezultă randamentul maxim de utilizare :

η max = 2 x t max utilizare SC / T = 2 x 0.9 / 6 = 1.8 / 6 = 30 %

12
EXEMPLE DE PROBLEME
Problema 9

Se dă un planificator pentru N procese secvenţiale p1, p2, pN.


Planificatorul lucrează numai cu suspendare forţată la expirarea timpului.
Perioada de lucru a sistemului este T.
Un proces pi are alocată o cuantă de timp cu valoarea Ti .
Procesele sînt descrise de următoarea organigramă (pseudocod) :

while(1)
{
citeşte intrări (I); // timp de execuţie tI
Prelucrări (P); // timp de execuţie tPi
generează ieşiri (E); // timp de execuţie tE
}

Timpii tI şi tE se consideră aproximativ zero. Timpul în care se efectuează


comutarea de context (de la un proces la altul) este aproximativ zero.
Timpul de prelucrare pentru procesul pi , tPi ∈ ( 0 , Ti - ε ) cu ε > 0 foarte mic.
Este îndeplinită condiţia :
N

∑ Ti = T
i=1

Care este timpul maxim de răspuns (în cazul cel mai defavorabil) la modificarea
unei intrări asociate unui proces oarecare pi ? Să se construiască o diagramă de timp care
să justifice rezultatul.

Rezolvare

Timpul de răspuns este calculat între momentul modificării intrării şi momentul


generării ieşirii. Ciclul de prelucrare asociat unui proces oarecare pi, (I,P E) este asincron
relativ la intervalul Ti alocat procesului pi în cadrul unui ciclu de planificare T.
Cazul cel mai defavorabil este atunci cînd modificarea intrării se produce imediat
după citirea acestora. Prelucrările asociate se vor face în ciclul următor. Situaţia este
ilustrată în figura 1.
S-au notat t1+ t2 = t'Pi = timpul de prelucrare asociat modificării anterioare a
intrărilor şi t3+ t4 = t''Pi = timpul de prelucrare asociat modificării curente a intrărilor.
Timpul de răspuns este dat de relaţia :

t R = t1 + (T - Ti ) + t2 + t3 + (T - Ti ) + t4 = 2t - 2Ti + t'Pi + t''Pi

În cazul cel mai defavorabil t'Pi = t"Pi = Ti de unde rezultă t R = 2T .

13
SISTEME DE TIMP REAL CU COMANDĂ PROGRAMATĂ . APLICAŢII

executie procese T T-T


i

T T-T t3 t4
i i
genereaza iesirea t2 sesizeaza modificarea genereaza iesirea
t1 asociata intrarii intrarii
anterioare
EI P P EI Pi Pi EI
i prelucreaza intrarea i
prelucrare intrare
citita anterior
modificare intrare curenta

modificare iesire

timp de raspuns t R

Figura 1

Problema 10

Se dă un planificator pentru N procese secvenţiale p1, p2, pN.


Planificatorul lucrează numai cu autosuspendare.
Perioada de lucru a sistemului este T.
Un proces pi are la dispoziţie un timp de execuţie determinat de executarea unei
tranziţii pe graful său de evoluţie.
Procesele sînt descrise de următoarea organigramă :

activare
|
citeşte intrări (I); // timp de execuţie tI
Prelucrări (P); // timp de execuţie tPi
generează ieşiri (E); // timp de execuţie tE
|
autosuspendare

Timpii tI şi tE se consideră aproximativ zero. Timpul în care se efectuează


comutarea de context (de la un proces la altul) este aproximativ zero.
Timpul de prelucrare pentru procesul pi , tPi ∈ ( 0 , Ti − ε ) cu ε > 0 foarte mic.
Este îndeplinită condiţia :
N-1

∑ Ti = T - δ , δ > 0 foarte mic


i=1

Care este timpul maxim de răspuns (în cazul cel mai defavorabil) la modificarea
unei intrări asociate procesului pN ? Să se construiască o diagramă de timp care să
justifice rezultatul.

14
EXEMPLE DE PROBLEME

Rezolvare

Timpul de răspuns este calculat între momentul modificării intrării şi momentul


generării ieşirii procesului pN.
Cazul cel mai defavorabil este atunci cînd modificarea intrării se produce imediat
după citirea acestora şi între două activări ale procesului pN există un interval maxim.
Prelucrările asociate se vor face în ciclul următor.
Intervalul între două activări succesive ale lui pN va fi maxim atunci cînd în ciclul
curent toate procesele pi , i =1, N-1, se execută într-un timp aproximativ zero, iar în ciclul
următor toate procesele pi , i =1, N-1, se execută într-un timp maxim.
Acest lucru este posibil deoarece este îndeplinită condiţia :
N-1 N-1
0< ∑ tPi ≤ ∑ Ti = T - δ deci timpul de execuţie pentru procesele pi ,
i=1 i=1
N-1 N-1
i =1,N-1 poate lua valorile extreme : ∑ tpi ≈ 0 (valoare minimă) şi ∑ tpi = T - δ
i=1 i=1
(valoare maximă)
Situaţia este ilustrată în figura 1.
Timpul de răspuns este dat de relaţia :
N-1 N-1
tR= T +( ∑ tPi )max = T + ∑ Ti = 2T - δ
i=1 i=1

În cazul cel mai defavorabil δ = 0 de unde rezultă t R = 2T .

executie procese
T
min = 0 p p p δ p
N 1 2 N-1

max = T max = T

executie p , p , ..., p
1 2 N-1
Procesul p sesizeaza modificarea intrarii
modificare intrare N

modificare iesire genereaza iesirea

timp de raspuns t R
Figura 1

15

S-ar putea să vă placă și