Sunteți pe pagina 1din 17

CURS SDSC : 24-03-2020

2 . ELEMENTE SUPORT ALE SISTEMELOR


DISTRIBUITE DE CONDUCERE

2.1. FORMALIZAREA ŞI DISPECERIZAREA SISTEMELOR


DE TASKURI

Un task reprezintă, în sens general, o unitate de program indivizibilă şi


independentă din punct de vedere logic. Aplicaţiile care rulează pe Sistemele
Distribuite de Conducere (SDC), conţin mai multe taskuri, acestea fiind
cunoscute ca aplicaţii sau sisteme multitasking (MT). Un task este asociat unui
anumit tip de activitate cum ar fi: achiziţie date, elaborare şi generare comenzi,
alarmare, intervenţii operator etc.

Sistemele MT sunt caracterizate de faptul că taskurile se află într-o


permanentă concurenţă pentru dobândirea şi deţinerea de resurse. În contextul
programării concurente, o resursă reprezintă o entitate fizică sau logică utilizată
de un task pe parcursul execuţiei sale. În rândul resurselor pot fi incluse timpul
unităţii centrale de procesare - UCP, dispozitivele de intrare/ieşire, memoria
internă, memoria externă, variabile, fişiere, proceduri etc. Este important de
subliniat faptul că echipamentul gazdă pe care rulează sistemul de taskuri se
consideră partajat în resurse, definirea resurselor şi partajarea acestora fiind
funcţie de aplicaţie.

În general pentru noţiunea de concurenţă se acceptă următoarele două


sensuri:

1
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

- competiţie pentru obţinerea resurselor necesare execuţiei taskurilor;


- întâlnire (intersecţie) pentru realizarea în comun a scopurilor
aplicaţiei din care fac parte taskurile.

Taskul ca unitate de bază a programării concurente se bucură de


următoarele proprietăţi importante:
- indivizibilitate;
- secvenţialitate;
- asincronism;
- temporalitate.

 Indivizibilitatea se referă la faptul că taskul este unitate atomică din


punctul de vedere al concurenţei, cu alte cuvinte acesta nu poate fi divizat în alte
unităţi cărora Sistemul de Operare în Timp Real - SOTRM să le acorde în mod
autonom resurse.

 Secvenţialitatea presupune absenţa paralelismului în interiorul unui


task, în consecinţă execuţia acestuia este pur secvenţială.

 Asincronismul are în vedere o independenţă relativă a execuţiei


taskurilor, cu excepţia momentelor de interacţiune când este necesară
sincronizarea.

 Temporalitatea atestă faptul că taskul se manifestă şi este recunoscut


numai în intervalul cuprins între activarea şi terminarea sa.

Taskurile pot interacţiona în două moduri şi anume:


- direct prin concurenţa asupra unor resurse;
- indirect prin partajare resurselor şi comunicare.

În cadrul interacţiunii directe, controlul concurenţei se realizează din


interiorul taskurilor, în timp ce reglementările aferente interacţiunilor indirecte
revin SOTRM .

2
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

Consideraţiile de mai sus au în vedere faptul că din punctul de vedere al


comportării exterioare, un task se specifică prin următoarele trei elemente:
- intrările (datele);
- ieşirile (rezultatele);
- timpul de execuţie.

În continuare vor fi prezentate câteva elemente care privesc formalizarea


şi dispecerizarea sistemelor de taskuri.

2.1.1. FORMALIZAREA SISTEMELOR DE TASKURI

Un sistem de taskuri ST este definit ca un dublet

ST  (T, ) , (2.1)

în care T  T1 , T2 ,,Tn  este o mulţime de taskuri, iar simbolul < reprezintă o
relaţie de ordine totală (precedenţă) definită pe mulţimea T .

Pentru două taskuri Ti , T j  T relaţia Ti  T j semnifică faptul că ultima

instrucţiune a taskului Ti trebuie să se încheie înainte de începerea primei


instrucţiuni a taskului Tj .

În mod obişnuit unui task Ti  T îi sunt asociate două evenimente


semnificative şi anume:
- Ti - iniţierea taskului;
- T i - terminarea taskului.

 Iniţierea unui task corespunde unei tranziţii de stare care include:


- achiziţia şi asigurarea resurselor necesare execuţiei taskului;
- iniţializarea stării resurselor;
- transferul datelor de la intrare.

 Terminarea unui task are asociată o tranziţie de stare care cuprinde:


- transferul rezultatelor la ieşire;

3
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

- eventuala restaurare a stării resurselor;


- eliberarea resurselor.

Relaţia de precedenţă într-un sistem de taskuri poate fi sugestiv


reprezentată printr-un graf de precedenţă. Acesta este un graf orientat care are ca
noduri elementele mulţimii T, iar arcele sunt asociate relaţiei de precedenţă.
Pentru două taskuri Ti , T j  T , un arc de la Ti la Tj - respectiv arc(Ti, Tj) - apare

în graf numai dacă Ti  T j şi nu există un task Tk astfel încât Ti  Tk  T j .

Pentru un graf de precedenţă prezintă interes următoarele elemente:


- lungimea drumului dintre două taskuri;
- task succesor şi task predecesor;
- task iniţial şi task terminal;
- nivelul unui task neterminal;
- secvenţă de execuţie a unui task,

care vor fi definite în cele ce urmează.

 Lungimea drumului între două taskuri care aparţin unui graf de


precedenă este egală cu numărul nodurilor sau cu numărul arcelor la care se
adugă 1.

 Într-un sistem format din n taskuri cu 1  i  j  n , taskul Ti se


numeşte predecesor al taskului Tj, iar taskul Tj constituie succesor al taskului Ti.
Dacă j  i  1, Ti este predecesor direct al lui Tj, iar Tj succesor direct al lui Ti.
Două taskuri Tk , Tl  T se numesc independente dacă taskul Tk nu este nici
succesor şi nici predecesor al taskului Tl. Având în vedere că relaţia de
precedenţă implică o ordonare temporală, rezultă că două taskuri pot fi
concurente numai dacă sunt independente.

 Un task iniţial este un task fără nici un predecesor, iar un task terminal
reprezintă un task fără nici un succesor

4
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

 Un task neterminal este de nivel K dacă cel mai lung drum care
porneşte din el şi se opreşte într-un task terminal este de lungime K. Prin definiţie
un task terminal este de nivel 1.

 Pentru un sistem de taskuri ST  (T, ) cu T  T1 ,T2 , ,Tn  , o


secvenţă de execuţie reprezintă un şir

  {a1 ,a2 , ,a 2 n } , (2.2)

de evenimente ai asociate iniţierii şi terminării taskurilor din ST .

Evenimentele dintr-o secvenţă satisfac următoarele condiţii de


precedenţă:

- pentru orice task Ti  T simbolurile T i , Ti apar o singură dată;

- dacă am  T i şi an  T i atunci m  n ;

- dacă am  T i şi an  T j cu Ti  T j atunci m  n .

La tratarea sistemelor de taskuri este util ca acestea să fie considerate


sisteme închise, respectiv să conţină un singur task iniţial şi un singur task
terminal.

Dacă un sistem de taskuri ST  (T, ) cu T  T1 ,T2 , ,Tn  nu este închis,

atunci se construieşte un sistem ST'  (T ' , ) cu T '  T0 , T1 ,T2 ,,Tn , Tn1  . În

sistemul de taskuri S T' taskul T0 este succesorul tuturor taskurilor sistemului ST,
iar taskul Tn+1 predecesorul acestora.

Dacă   {a1 ,a2 , ,a 2 n } este o secvenţă de execuţie pentru sistemul S T

atunci o secvenţă pentru sistemul S T' va fi de forma  '  {T 0 T 0 a T n1 T n1 } .

După modul în care a fost construit sistemul S T' , rezultă că acesta este
închis. Dacă taskurile T0 şi Tn+1 nu au alte funcţii în afara celor precizate, atunci
sistemele S T şi S T' sunt echivalente din punctul de vedere al funcţiilor pe care

5
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

acestea le execută. În acest fel s-a realizat închiderea sistemului iniţial de taskuri
ST .

În figura 2.1 se prezintă un exemplu de graf de precedenţă, pentru care


vor fi evidenţiate unele dintre noţiunile prezentate mai sus.

T1

T3

T2
T4 T5 T6

T7
Fig. 2.1. Graf de precedenţă.

Pentru graful din figura 2.1, în tabelul 2.1 se prezintă lungimile


drumurilor între taskuri. Analizând datele din acest tabel se observă că funcţie de
calea aleasă lungimile drumurilor pot să difere.

Tabelul 2.1
Nod Nod
Cale Lungime
plecare sosire
T1 T2 T1- T2 2
T1 T4 T1- T3 * T3- T4 3
T1 T7 T1- T2 * T2- T7 3
T1 T7 T1- T3 * T3- T4 * T4- T7 4

Tot din graf, rezultă taskurile succesoare şi predecesoare. De exemplu


taskul T3 este predecesor direct al lui T4, dar acesta este numai predecesor al lui
T7. În ceea ce priveşte taskurile iniţial şi terminal, taskul T1 este task iniţial al
grafului, iar T7 task terminal.

6
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

Pe baza definiţiei nivelului unui task, în tabelul 2.2 se prezintă nivelele


taskurilor conţinute în graful din figura 2.1.

Tabelul 2.2
Task T1 T2 T3 T4 T5 T6 T7
Nivel 4 2 3 2 2 2 1

Ţinând cont de definiţia secvenţei de execuţie din relaţia (2.2), în


continuare se prezintă trei asemenea secvenţe posibile notate α1, α2, α3 după cum
urmează:

1  T 1 T 1 T 2 T 2 T 3 T 3 T 4 T 4 T 5 T 5 T 6 T 6 T 7 T 7 ;

2  T 1 T 1 T 2T 3T 2T 3 T 4T 4 T 5 T 6T 5T 6T 7 T 7 ;

 3  T 1 T 1T 3 T 3 T 4 T 4 T 2 T 5 T 6 T 5 T 6 T 2 T 7 T 7 .

Coordonarea unui sistem de taskuri presupune definirea şi soluţionarea


următoarelor probleme generale :

A - Determinarea taskurilor;

B - Blocarea taskurilor;

C - Excluderea mutuală a taskurilor;

D - Sincronizarea taskurilor.

A - Determinarea taskurilor

Un sistem de taskuri este determinat , dacă prin evoluţia sa conduce la un


rezultat unic, indiferent de ordinea de execuţie a taskurilor sau de vitezele
acestora, în condiţiile respectării unor relaţii de precedenţă definite.

Dacă un sistem de taskuri este nedeterminat, acesta poate fi transformat


într-unul determinat prin adăugarea unor relaţii de precedenţă.

B - Blocarea taskurilor

7
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

Această situaţie apare când un număr de taskuri este blocat într-o listă
circulară de aşteptare, fiecare task aşteptând eliberarea unei resurse pe care o
deţine un alt task.

Pentru exemplificare se consideră mulţimea de taskuri T  T1 ,T2 , ,Tn 


care se găsesc în situaţia ilustrată în figura 2.2. După cum se observă taskul T1
deţine resursa R1 şi aşteaptă eliberarea resursei Rn , taskul T2 deţine resursa R2 şi
aşteaptă eliberarea resursei R1 ş.a.m.d., iar ultimul task Tn deţine resursa Rn şi
aşteaptă eliberarea resursei Rn-1 .

T1 R1

Tn T2
Rn-1 R2

Tn-1 T3

Rn-2 R3
T4
Tn-2
Rn-1 R4
Fig. 2.2. Taskuri blocate într-o listă circulară.

Dacă cererea de resurse depăşeşte disponibilitatea, apare situaţia de


interblocare. În legătură cu interblocarea se pun probleme legate de detectarea şi
evitarea acesteia.

 Detectarea interblocării presupune existenţa unui algoritm având ca


intrare starea curentă şi care să precizeze dacă în această stare există interblocare.

 Evitarea interblocării implică existenţa unui algoritm care, pornind


dintr-o stare dată şi pe baza cunoaşterii cererilor şi eliberărilor de resurse aferente
evenimentelor din sistemul de taskuri, să precizeze dacă există secvenţe în care
să nu apară interblocări şi să construiască cel puţin o asemenea secvenţă.

8
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

C - Excluderea mutuală a taskurilor

Resursele care la un moment dat pot fi deţinute de un singur task se


numesc resurse critice, iar secţiunea dintr-un task în care acesta accesează o
resursă critică constituie o secţiune critică.

În cadrul unui sistem de taskuri, acestea pot interacţiona, prin accesul


concurent la diferite resurse critice sau prin transmiterea de date (mesaje) între
ele. Pentru buna desfăşurare a evoluției sistemului de taskuri, în sensul
determinării şi evitării interblocării, trebuie prevăzute anumite operaţii specifice
(primitive) care, în esenţă, trebuie să evite execuţia în paralel a secţiunilor critice.

Excluderea mutuală reprezintă operaţia prin care se asigură accesul la un


moment dat a unui singur task în propria secţiune critică referitoare la o anumită
resursă. Este evident faptul că prin modul în care a fost introdus conceptul de
excludere mutuală, această operaţie asigură evitarea execuţiei paralele a
secţiunilor critice.

SOTRM pun la dispoziţia programatorilor instrumente pentru


implementarea excluderii mutuale cum ar fi: semafoare, variabile de tip
eveniment, cutii poștale, blocuri resursă etc.

D - Sincronizarea taskurilor

Două taskuri se consideră sincronizate, dacă se pot stabili relaţii


reciproce între anumite momente ale execuţiei lor. Sincronizarea se poate face de
asemenea evenimente exterioare sau cu timpul.

Instrumentele puse la dispoziţia programatorilor de SOTRM pentru


excluderea mutuală pot fi utilizate şi pentru implementarea sincronizării.

9
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

2.1.2. DISPECERIZAREA SISTEMELOR DE TASKURI

După cum s-a arătat într-un sistem multitasking de timp real, mai multe
taskuri se pot găsi la un moment dat în competiţie pentru a deţine controlul UCP
în scopul execuţiei (rulării) lor.

Procesul de dispecerizare reprezintă ansamblul de acţiuni prin care, în


cadrul unei sesiuni de comutare, este ales taskul care urmează a fi executat . La
baza acestui proces – realizat de dispecer – stă un algoritm adoptat din faza de
proiectare a nucleului de timp real.

Variantele uzuale de dispecerizare sunt :

A - Dispecerizarea prin rotaţie;

B - Dispecerizarea prin prioritizare;

C - Dispecerizarea prin prioritizare şi rotaţie,

care vor fi prezentate în cele ce urmează.

A – Dispecerizarea prin rotaţie

Această variantă presupune existenţa unei Liste de Aşteptare la Procesor


– LAP în care se înscriu elementele de identificare (indexurile) aferente tuturor
taskurilor aflate în starea gata de execuţie

Dispecerul va alege întotdeauna pentru rulare taskul aflat în prima


poziţie din listă. Taskul aflat în execuţie se consideră că ocupă ultima poziţie din
LAP, iar taskurile devenite gata de execuţie se inserează înaintea primei poziţii
din listă, aspect relevat de reprezentarea din figura 2.3 a dispecerizării prin
rotaţie.

10
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

Ieşire taskuri Traseu circularizare taskuri


suprimate

Punct inserare noi taskuri


UCP

Ieşire taskuri
05
07 01 06 02 04 09
blocate

Ultima Prima poziţie, Penultima


poziţie, (cap de listă) LAP poziţie
Ieşire taskuri (coadă de
Intrare taskuri devenite rulabile
listă)
dezactivate 03

Fig. 2.3. Modelul dispecerizării prin rotaţie.

Când un task aflat în execuţie este supus unui proces de comutare, fără
ca acest lucru să fie provocat de dezactivare sau suprimare există două
alternative:
- dacă îndeplineşte în continuare condiţiile de rulare, i se asigură
rămânerea normală în LAP şi înscrierea indexului său în penultima poziţie din
listă;
- dacă nu mai îndeplineşte condiţiile de rulare , acesta se blochează, este
eliminat din LAP şi înscris într-o listă a taskurilor blocate.

Este de menţionat faptul că trecerea în ultima poziţie a taskului aflat în


rulare va determina avansul celorlalte taskuri în LAP. Dacă taskul aflat în rulare
este supus unui proces de comutare datorat dezactivării sau suprimării, atunci
taskul este scos din LAP şi trecut în starea inactiv.

În modelul din figura 2.3 este surprinsă următoarea situaţie:


- taskul 07 este în execuţie şi ocupă ultima poziţie din LAP;
- taskul 01 ocupă prima poziţie din LAP şi este la iminenţa execuţiei;
- taskurile 06, 02, 04, 09 aşteaptă în această ordine intrarea în rulare
după taskul 01;

11
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

- taskul 05, după ce s-a aflat pentru un timp în rulare a fost exclus din
LAP blocându-se;
- taskul 03, devenit rulabil urmează să fie inserat în LAP.

Realizarea dispecerizării prin rotaţie necesită gestionarea unei liste


circulare de întregi scurţi care sunt asociaţi indexurilor taskurilor din listă.
Fiecare nod din listă va conţine pe lângă index şi un pointer la următorul nod,
aspect evidenţiat în figura 2.4.

În reprezentarea din figura 2.4 semnificaţia notaţiilor este următoarea:


- m, n, o, p reprezintă indexurile taskurilor din LAP;
- m – indexul taskului aflat în rulare;
- p – indexul taskului care urmează să intre în rulare.

Gestionarea unei asemenea liste presupune implementarea a patru tipuri


de funcţii şi anume:
- funcţia de inserare în LAP a unui task;
- funcţia de eliminare din LAP a unui task;
- funcţia de determinare a indexului taskului aflat în prima poziţie din
LAP;
- funcţia de iniţializare a LAP.

Ultima poziţie o
(coadă de listă)
p

Prima poziţie
(cap de listă)
Punct inserare
nod nou
Fig. 2.4. Componenţa listei circulare de aşteptare la procesor.

12
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

B - Dispecerizarea prin prioritizare

Această manieră de dispecerizare presupune alocarea unei priorităţi


pentru fiecare task la crearea sa . Toate taskurile rulabile sunt incluse într-o LAP
organizată însă pe bază de priorităţi. Fiecare task ocupă un loc conform priorităţii
sale, în fruntea listei aflându-se evident taskul cu cea mai mare prioritate, iar în
coada listei taskul cu prioritatea cea mai mică.

În cadrul unei sesiuni de comunicare, dispecerul introduce în rulare


taskul cu cea mai puternică prioritate din LAP. Dacă în intervalul de timp care
provoacă procesul de comutare, nu este introdus în LAP un task cu prioritate
superioară celui aflat în rulare, atunci UCP va fi alocată pentru încă o sesiune de
rulare acestuia.

Introducerea în LAP a unui task poate fi consecinţa unei întreruperi fizice


(care ar putea fi chiar cea care provoacă procesul de comutare) sau a unei acţiuni
de autoblocare a taskului aflat în rulare.

În figura 2.5 este reprezentat modelul dispecerizării prin prioritizare, cu


şase nivele de prioritate, în care un task identificat printr-un anumit index este
înscris în LAP potrivit priorităţii sale.

Ieşire taskuri Intrare taskuri devenite rulabile


suprimate
UCP Intrare task
prioritate 0
03
Sens
Intrare task
prioritate 1 scădere
Ieşire taskuri 07
03 prioritate
blocate Intrare task
prioritate 2
Task
în Intrare task
rulare prioritate 3
04
Intrare task
Ieşire taskuri prioritate 4
02
dezactivate Intrare task
LAP prioritate 5

Fig. 2.5. Modelul dispecerizării prin prioritizare.

13
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

În situaţia evidenţiată în modelul din figura 2.5 sunt de subliniat


următoarele:
- taskul 03 de prioritate 1 este în rulare;
- poziţiile corespunzătoare priorităţilor 0 şi 3 nu sunt ocupate;
- taskul cu cea mai ridicată prioritate aflat în LAP este 03, aflat în
acelaşi timp şi în rulare;
- un proces de comutare va asigura încă un interval de rulare pentru
taskul 03;
- dacă dintr-un motiv oarecare taskul 03 este scos din LAP, taskul 07 de
prioritate 2 va fi trecut în rulare.

Ca şi în cazul precedent şi realizarea dispecerizării prin prioritizare


necesită gestionarea unei liste circulare de întregi scurţi. Un nod al unei
asemenea liste va conţine pe lângă indexul taskului şi pointerul la următorul nod
şi prioritatea sa, potrivit reprezentării din figura 2.6.

În reprezentarea din figura 2.6 semnificaţia notaţiilor este următoarea:


- m, n, o, p reprezintă indexurile taskurilor din LAP;
- a, b, c, d – priorităţile taskurilor cu indexurile m, n, o, p.

m
a
m
Prima poziţie
(cap de listă) a
m
a
m
a b c d a
Sensul de scădere a priorităţii
Ultima poziţie
(coadă de listă)
Fig. 2.6. Lista de aşteptare la procesor în cazul dispecerizării prin prioritizare.

14
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

Gestionarea unei asemenea liste presupune de asemenea implementarea


celor patru tipuri de funcţii specifice gestionării listelor circulare şi anume:
- funcţia de inserare în LAP a unui task ținând de această dată cont atât
de index cât şi de prioritate;
- funcţia de eliminare din LAP a unui task;
- funcţia de determinare a indexului taskului aflat în prima poziţie din
LAP;
- funcţia de iniţializare a LAP.

C - Dispecerizarea prin prioritizare şi rotaţie

Acest tip de dispecerizare (pentru care se va utiliza abrevierea DPR)


reprezintă o combinaţie între cele două tipuri de dispecerizare prezentate anterior.

În cadrul acestui tip de dispecerizare, LAP este constituită practic dintr-o


înlănţuire de liste circulare, fiecare astfel de listă conţinând taskuri de aceeaşi
prioritate, în figura 2.7 fiind ilustrat un model de DPR .

15
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

Traseu circularizare taskuri

Listă circulară - prioritate 0


UCP
01 06 02 04 09

Intrare taskuri de prioritate 0


Listă circulară - prioritate 1

Ieşire taskuri
suprimate
Intrare taskuri de prioritate 1
Listă circulară - prioritate 2

Ieşire taskuri
blocate
07 08 03
Task
în Intrare taskuri de prioritate 2
rulare
Listă circulară - prioritate 3
Ieşire taskuri
14 10 05
dezactivate

Intrare taskuri de prioritate 3


Listă circulară - prioritate 4

12

Intrare taskuri de prioritate 4

Intrare taskuri devenite rulabile

Fig. 2.7. Modelul dispecerizării prin prioritizare şi rotaţie.

În situaţia ilustrată în figura 2.7 sunt de menţionat următoarele aspecte:


- LAP cuprinde cinci liste circulare corespunzătoare celor cinci priorităţi
acceptate pentru taskurile rulabile, dintre care lista de prioritate 1 este vidă;
- taskul cu indexul 07 aparţinând listei circulare de prioritate 0 este în
execuţie fizică, ocupând prin urmare ultima poziţie în această listă;
- în ipoteza conservării conţinutului LAP, prin sesiuni succesive de
comutare vor intra în execuţie fizică taskurile 01, 06, 02, 04, 09, apoi din nou 07
ş.a.m.d.;

16
SISTEME DISTRIBUITE DE SUPERVIZARE ŞI CONTROL
Capitolul 2 – Elemente suport al SDSC

- rularea taskurilor din lista de prioritate 2, (în ordinea 08, 03, 08, etc.),
va începe numai după vidarea listei de prioritate 0;
- în general taskurile de pe o listă circulară asociată unei anumite
priorităţi vor intra în rulare numai daca toate listele cu priorităţi superioare sunt
vide (de exemplu taskurile din lista de prioritate 3 vor fi rulate numai dacă listele
0, 1, 2 sunt vide).

DPR se poate reduce la cele două tipuri de dispecerizare prezentate


anterior în următoarele condiţii:
- dacă toate taskurile rulabile au aceeaşi prioritate DPR se reduce la
dispecerizarea prin rotaţie;
- dacă fiecare listă conţine câte un singur task rulabil DPR se reduce la
dispecerizarea prin prioritizare.

Realizarea DPR necesită gestionarea unei înlănţuiri de liste circulare,


care se succed în sensul scăderii priorităţilor asociate. O asemenea înlănţuire
presupune existenţa a două tablouri corelate: un tablou al taskurilor şi un tablou
al priorităţilor. Tabloul taskurilor implementează listele circulare conform
regulilor specifice dispecerizării prin rotaţie. Un element al tabloului, împreună
cu indicele său reprezintă un nod al unei liste. Indicele va avea semnificaţia unui
index al taskului aferent nodului, elementul va avea ca valoare indexul asociat
succesorului acestui task.

Gestionarea LAP, pentru DPR comportă aceleaşi funcţii de la


precedentele tipuri de dispecerizări cu excepţia funcţiei de eliminare, unde
trebuie precizată şi prioritatea taskului eliminat.

17

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