Extras din curs
2 Concepte abstracte utilizate în descrierea concurentei
Asa cum am precizat în capitolul precedent, în tot restul lucrarii ne vom concentra atentia asupra concurentei la nivelul unui proces si la nivelul unui fir de executie - thread. Pentru concizia expunerii, vom folosi termenul de thread în loc de fir de executie. De asemenea, atunci când nu exista posibilitatea de confuzie, vom folosi termenul de proces în sens mai larg – privit ca si o sarcina de calcul, sau o entitate de calcul – atât pentru procesul propriu-zis, cât si pentru thread.
Conceptele care vor fi prezentate în acest capitol sunt folosite, în principal, la nivelele de proces si thread. Ele ramân însa valabile, cu adaptarile de rigoare, atât în programarea distribuita, cât si la unele dintre nivelele inferioare de concurenta prezentate în capitolul precedent.
2.1 Paradigme de programare nesecventiala
Programele sunt adesea modelate ca un numar de sarcini de calcul distincte, care interactioneaza pentru a executa serviciul sau pentru a produce rezultatul dorit. In cazul programarii secventiale, un program este implementat ca o singura entitate complexa, care executa mai multe functii (parti diferite din program). Functiile se executa într-o ordine bine determinata: reluarea executiei în acelasi context conduce întotdeauna la aceeasi succesiune a functiilor.
In general, executia unui program secvential este determinista. Astfel, pentru acelasi set de date de intrare, programul executa aceeasi secventa de instructiuni si produce aceleasi rezultate. Paradigma programarii secventiale are doua caracteristici de baza:
- ordinea textuala a instructiunilor furnizeaza ordinea de executie a acestora.
- instructiuni succesive se vor executa fara a se suprapune, în timp, una cu cealalta.
Nici una dintre aceste doua proprietati de baza nu sunt valabile în cazul programarii nesecventiale.
Programarea nesecventiala presupune implementarea mai multor entitati de program, care pot fi executate în acelasi timp si carora li se asociaza sarcini de calcul distincte ce furnizeaza parti ale rezultatului final. Deoarece executiile entitatilor se pot desfasura simultan, ordinea lor nu este complet previzibila, existând un oarecare grad de nedeterminism în timpul executiei.
Paradigmele de programare nesecventiala difera între ele prin tipul sistemului de calcul pe care se executa entitatile concurente: sistem monoprocesor, multiprocesor, sistem distribuit, asa cum rezulta din ceea ce am prezentat în capitolul 1. De asemenea, paradigmele difera si dupa modul cum sunt partajate de catre entitati informatiile de context si resursele sistemului. In sfârsit, paradigmele mai difera dupa gradul de interactiune între entitati si în functie de existenta unei "autoritati tutelare" care sa asigure coordonarea entitatilor.
Paradigmele de programare nesecventiala pot fi grupate în trei mari categorii:
1. paradigme de programare paralela;
2. paradigme de programare concurenta;
3. paradigme de programare distribuita.
Dintr-un anumit punct de vedere, fiecare dintre ele include pe cele dinaintea ei. In sectiunile urmatoare vom vedea ce este specific fiecareia, avantaje, dezavantaje si sfere de aplicabilitate.
2.1.1 Programare paralela
Programarea paralela presupunde dezvoltarea de programe care lanseaza mai multe sarcini de calcul: entitati de executie, taskuri, procese, thread-uri (dupa caz). Acestea sunt executate simultan si coopereaza în vederea realizarii unui scop comun. Deosebirea fundamentala (conceptual vorbind) a programarii paralele fata de alte paradigme nesecventiale [58] consta în faptul ca sarcinile de calcul se coordoneaza numai prin operatii de asteptare a începerii sau a terminarii altor entitati implicate. Astfel, lansarea în executie a unei sarcini de calcul poate fi conditionata de startul prealabil al altora, respectiv de terminarea activitatilor altor sarcini de calcul.
De exemplu, fazele executiei pipeline, descrise în 1.3, pot fi privite ca si sarcini executabile în paralel.
Domeniul calculului numeric [21,22,74] abunda în algoritmi paraleli. La loc de cinste în cadrul acestora sunt algoritmii paraleli specifici algebrei liniare: determinanti, matrice etc.
Punctam câteva trasaturi caracteristice ale programelor paralele:
1. Un program paralel consta din unul sau mai multe sarcini de lucru (task-uri). Aceste task-uri se executa simultan si numarul lor poate varia în timpul executiei programului.
2. Fiecare task încapsuleaza un program secvential si o memorie locala. De fapt, un task reprezinta o masina virtuala von Neumann [9]. (O masina von Neumann contine o unitate centrala de procesare –CPU - conectata la o unitate de memorare si executa operatii de citire si scriere asupra unor date din memoria atasata.)
3. Task-urile pot fi atasate procesoarelor fizice în diverse moduri, dar aceasta atasare nu afecteaza semantica programului. In particular, unui singur procesor îi pot fi atasate mai multe taskuri.
4. Se pot defini interfete de comunicare între aceste task-uri si, de asemenea, modalitati de acces la resursele comune, în conformitate cu modelul de paralelism folosit.
Preview document
Conținut arhivă zip
- Sisteme de Operare
- Pack
- Pc03.doc
- Pc04.doc
- IPC.doc
- MoreThreads.doc
- Pc02.doc
- Pc04.doc
- PD3.DOC
- PROGCONC.DOC
- socket.DOC
Alții au mai descărcat și
CAPITOLUL III GESTIUNEA MEMORIEI Obiective. În conformitate cu arhitectura von Neumann, memoria primara (interna) este o componenta principala a...
Free Software Foundation (pe scurt FSF) a aparut în anul 1984, la initiativa programatorului Richard Stallman, care, dezamagit de faptul ca...
Macromedia Studio 8 este principalul pachet de dezvoltare al aplicaţiilor web. De la proiectarea elementelor grafice la dezvoltarea aplicaţiilor...
Librăria Fireworks ne permite stocarea, partajarea şi reutilizarea obiectelor folosite în procesul de dezvoltare. Librăria dă posibilitatea...
In general, un sistem se defineste ca fiind un ansamblu de elemente fizice si logice interconectate si interconditionate prin relatii fizice,...
Formularea problemei: Se propune analiza unui sistem soft care va permite comercializarea şi evidenta comenzilor electronice a unei biblioteci...
1. Faceţi setările necesare astfel încât apăsarea tastelor Caps Lock, Num Lock şi Scrooll Lock să fie însoţită de o avertizare sonoră. REZOLVARE:...
Te-ar putea interesa și
ASPECTE GENERALE ALE SISTEMELOR DE OPERARE WINDOWS ŞI UNIX 1.1 Sisteme de operare; definiţii, componente, clasificări Sistemul de operare...
SISTEME DE OPERARE Prezentare generala Se stie ca, pe lânga componenta sa fizica (hardware), calculatorul mai are nevoie, pentru a putea...
1.SISTEME DE OPERARE 1.1 Definiţie Sistemul de operare reprezintă un ansamblu de programe care asigură utilizarea eficientă a resurselor fizice...
Capitolul I: Sisteme de operare 1. Introducere Sistemul de operare reprezintă ansamblul de programe care asigură utilizarea optimă a resurselor...
Un sistem de operare este un program care controleaza executia programelor de aplicatie si actioneaza ca o interfata intre utilizator si partea...
Noţiuni introductive despre sistemele de operare Definiţia sistemului de operare Un sistem de operare este un sistem de programe care gestionează...
Ce este un sistem de operare. În general, interacţiunea dintre calculator şi utilizator poate fi descrisa la nivel simplist astfel: primul...