Extras din curs
Capitolul 1
2016-2017
Rezumat
•Definirea modelului abstract al calculului concurent. Modelul intreteserii.
•Corectitudine
•Implementarea modelului in Promela/SPIN si Java
2016-2017
Calcul concurent
•Calcul concurent = instrument de abstractizare pentru paralelismul potential.
•Program secvential = program “clasic” in care instructiunile masina rezultate in urma compilarii sale sunt executate secvential de un procesor.
•Program paralel = executiile proceselor componente se suprapun in timp.
•Program concurent = compus din mai multe programe secventiale care pot fi executate in paralel. Programele secventiale din cadrul unui program concurent se numesc si procese (a nu se confunda cu notiunea de proces dintr-un SO).
•Concurenta = paralelism potential in care procesele se pot executa intretesut prin partajarea resurselor unui numar restrans de procesoare.
2016-2017
Exemple de concurenta
•Operatii de intrare – iesire
•Multitasking
•Multiprocesoare si multicalculatoare
•Sisteme distribuite
2016-2017
Operatii de intrare – iesire
•Operatiile de intrare – iesire necesita un timp mult mai indelungat de desfasurare decat operatiile interne de procesare ce folosesc procesorul si memoria interna.
–Interfetele om – masina implica activitatea umana care este foarte lenta
–Pot necesita operatii mecanice (fizica mecanica), cum sunt click-urile cu mouse-ul sau folosirea tastaturii
–Pot necesita accesul la dispozitive de memorie externa, cu timpul de acces mai mare decat timpul intern de procesare Timp Procese Proces I/E Calcul Start I/E
Sfarsit I/E
•Se folosesc intreruperile ce permit separarea conceptuala a procesului de I/E de procesul de calcul propriuzis.
•Cele doua procese se pot executa concurent.
2016-2017
Multitasking
•Multitasking-ul este o functie de baza a nucleului SO. Permite ca executia proceselor sa fie suprapusa “virtual” in timp prin intermediul planificatorului (engl. scheduler) unui SO.
•Planificatorul realizeaza felierea timpului (engl. time slicing) si controleaza executia echitabila (engl. fair) a proceselor prin alocarea periodica a procesorului fiecarui proces din SO.
•Limbajele moderne de programare implementeaza multitasking-ul in cadrul programelor de aplicatie prin facilitatea de a defini calcule concurente folosind conceptul de fir de executie (engl. thread) si multithreading.
•Programele interactive (cu GUI) trateaza evenimentele utilizator pe un fir separat ce ruleaza concurent cu firul alocat programului principal.
2016-2017
Multiprocesoare si multicalculatoare
•Calculatoarele moderne sunt multiprocesor, adica contin mai multe CPU-uri.
–CPU-urile pot sa fie omogene sau specializate de exemplu pentru operatii de I/E sau pentru operatii grafice (GPU).
–Un CPU poate contine mai multe unitati de procesare numite si core-uri, in arhitectura multicore.
•Sistemele de calcul moderne sunt multicalculator, adica sunt compuse din mai multe calculatoare:
–Retele locale de calculatoare
–Cluster-e de calculatoare
–Centre de date
–Sisteme distribuite de mari dimensiuni: WWW, P2P, sisteme de cloud computing, etc.
2016-2017
Sisteme distribuite
•Sistemele distribuite sunt sisteme multicalculator eterogene ce comunica prin schimb de mesaje si urmaresc in primul rand partajarea resurselor:
–Date
–Servicii
–Largime de banda de retea pentru comunicatie
•Accesul la resursele partajate are loc in mod concurent.
•Cresterea performantelor componentelor de deservire (servere) dintr-un SD poate face apel la arhitecturi multiprocesor sau multicore, ce necesita folosirea programarii concurente.
•La randul lor, arhitecturile multiprocesor pot folosi intern comunicarea prin schimb de mesaje, ce face inevitabil apel la tehnici specifice SD.
Preview document
Conținut arhivă zip
- cap1.pdf
- cap2.pdf
- cap3.pdf
- cap4.pdf
- cap5.pdf
- cap6.pdf
- cap7.pdf