Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

SOLTR - Tablou cu 10 numere reale si 3 task-uri

calculatoare



+ Font mai mare | - Font mai mic



SOLTR



Tablou cu 10 numere reale si 3 task-uri

6. Tablou cu 10 numere reale si 3 task-uri

Exploatarea avantajelor aduse de considerarea unei aplicatii ca fiind compus din mai multe taskuri ce se execut n paralel sau concurent impune, asa cum a rezultat si din exemplele prezentate n capitolul anterior, folosirea unor mecanisme care s asigure interactiunea corect a taskurilor pentru ca programul n ansamblu s aib evolutia dorit. Dening P. (n Operating Systems Theory) a artat c interactiunea taskurilor poate fi redus la trei tipuri de operatii multitasking: comunicarea ntre taskuri, sincronizarea taskurilor si excluderea mutual a taskurilor.

Comunicarea ntre taskuri este operatia multitasking prin care se permite taskurilor s schimbe date ntre ele. Datele comune (utilizate de mai multe taskuri) sunt memorate n memoria intern a calculatorului n anumite zone declarate ca zone comune (pentru datele comune) si la care vor avea acces toate taskurile. Deoarece zonele de date comune organizate n memoria intern au o capacitate mic si limiteaz la un volum mic datele comune, n cazul unui volum mare de date, acestea se organizeaz n fisiere plasate pe un suport de memorie extern (de obicei disc magnetic).

Majoritatea sistemelor de operare actuale ofer un sistem de lucru cu fisierele prin intermediul unui SGF (sistem de gestiune a fisierelor). Dezavantajul acestei metode este legat de timpii relativ mari pentru accesarea datelor din fisiere, dar metoda este utilizat datorit capacittii mari de memorare a acestor sisteme.

Excluderea mutual este operatia multitasking prin care se exclude accesul simultan al mai multor taskuri la una si aceeasi resurs (zona de date din memorie, fisier, periferic etc.). Restricþiile, n acest caz, sunt de tipul: operaþiile A, B, C, , X nu pot avea loc simultan.

Definitie: Secventa de program a fiecrui task n care se apeleaz o resurs comun partajat se numeste sectiune critic a taskului. (Din aceast cauz, de multe ori, excluderea mutual a taskurilor se mai ntlneste si sub denumirea de problema sectiunii critice).

Plecnd de la ipoteza c intervalele de timp de executie ale taskurilor sunt diferite si necunoscute si c orice task iese din sectiunea sa critic dup un interval finit de timp, solutia unei probleme de acest tip trebuie s satisfac urmtoarele conditii:

a) - utilizarea exclusiv: la un moment dat un singur task si numai unul se poate afla n sectiunea sa critic corespunztoare unei resurse;

b) - evitarea blocajului reciproc: dac mai multe taskuri sunt blocate n asteptarea aceleiasi resurse critice si aceasta nu este ocupat, atunci unul dintre aceste taskuri (de regul cel mai prioritar), trebuie s poat s intre n sectiunea sa critic la captul unui interval finit de timp;

c) - evitarea dependentelor inutile: dac un task este blocat n afara sectiunii sale critice, acest blocaj nu trebuie s mpiedice intrarea unui alt task n sectiunea sa critic.

Considerm trei taskuri T1, T2, T3, primele dou urmrind ndeplinirea a dou evenimente externe, asincrone, asociate cu variabilele EV1 si EV2, iar al treilea fiind conditionat n executia lui, la un moment dat, de ndeplinirea ambelor evenimente. Ca atare, la momentul critic, taskul T3 va fi obligat s execute primitiva ASTEAPT(EV1 si EV2) si se va bloca dac cel putin una dintre variabile are valoarea FALS, ceea ce semnific faptul c cel putin unul dintre evenimente nu a avut loc. Pe msur ce evenimentele au loc, taskul T1, respectiv T2 vor executa primitivele :DECLANSAZ(EV1)respectiv,DECLANSAZ (EV2) care vor avea ca efect deblocarea taskului T3 si aducerea lui n situatia de asi putea continua executia. Structura programelor celor trei taskuri este prezentat n Figura 5.6

Variabilele tip eveniment pot fi utilizate si n realizarea operatiilor multitasking de excludere mutual. Pentru evitarea accesului simultan a dou sau mai multe taskuri la o resurs partajat, acesteia i se asociaz o variabil eveniment EVM creia i se atribuie initial valoarea ADEVRAT.Directiva DECLANSAZ(EVM) simuleaz primitiva V (de la semafoare), iar ansamblul de directive ASTEAPT(EVM) urmat imediat de CONSUM(EVM) poate simula primitiva P, dac secventa se execut nentreruptibil, ceea ce nu este greu de realizat. Structura a

dou taskuri T1 si T2 n situaþia de excludere mutual este prezentat n Figura 5.7.

Primul task care intr n sectiunea critic ajunge n aceasta trecnd de primitiva ASTEAPT(EVM) - posibil, deoarece initial EVM = ADEVRAT, executnd apoi primitiva CONSUM(EVM) ceea ce duce la EVM = FALS. n acest moment orice alt task care doreste s ptrund n propria sa sectiune critic se va bloca pe primitiva ASTEAPT(EVM) pn cnd taskul initial abandonnd resursa comun execut primitiva DECLANSAZ(EVM) n urma creia variabila eveniment EVM capt valoarea ADEVRAT.

PROGRAMUL  IN C++

#include<iostream.h>

bool ev1; //evenimentul 1 controleaza task-ul 1

bool ev2; //evenimentul 2 controleaza task-ul 2

bool ev3; //evenimentul 3 controleaza task-ul 3

class Task1

void run(float tabel[], int n) //declararea functiei pentru task-//ul 1; primeste ca parametru un vector de numere reale si //dimensiunea lui

ev1=false; //consuma evenimentul 1

ev2=true; //declanseaza evenimentul 2

}

}

class Task2

void run(float tabel[],int n)

cout<<'Maximul este:'<<max<<' pe pozitia:'<<maxpos+1<<endl;

ev2=false;

ev3=true;

}

}

class Task3

void run(float tabel[],int n)

cout<<'Minimul este:'<<min<<' pe pozitia:'<<minpos+1<<endl;

ev3=false;

ev1=true;

}

}

void main()

int cont = 1; //stabileste daca se continua rularea programului

ev2 = true; //inceperea ciclului de executie se porneste cu //task-ul2

while(cont) // cat timp variabila cont=1 se exexuta ciclul



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2163
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved