Tehnici de Programare Multiprocesor / Multiprocessor Programming Techniques
-
- Introducere
- Recapitulare notiuni de baza pentru sincronizare - de la excludere mutuala la problemele producator/consumator si readers/writers
- Garantii specifice in programarea multiprocesor - vedere introductiva
- Importanta paralelizarii executiei - Legea lui Amdahl
- Laborator: Introducere in mediul de lucru. Programare multiprocesor in Java - recapitulare notiuni de baza.
-
- Executie concurenta - concepte generale
- Deadlock-freedom vs. Starvation-freedom in contextul excluderii mutuale
- Scurta introducere in modelul de memorie Java
- Laborator: Primitive de baza pentru sincronizare. Exercitii recapitulative.
-
- Obiecte concurente - concepte generale
- Modele de consistenta in contextul programarii multiprocesor: consistenta secventiala, linearizabilitate
- Conditii de progres pentru obiecte concurente
- Laborator: Recapitulare semafoare in Java. Exercitii privind excluderea mutuala si garantii asociate.
-
- Lacate (spin locks) I - aspecte generale, fenomenul de contention
- Test-and-set lock vs. Test-and-test-and-set lock
- Lacate bazate pe secvente de tip coada - introducere: Anderson lock
- Laborator: Tipuri atomice in Java. Exercitii privind progresul echilibrat (fairness). Exercitii privind linearizabilitatea.
-
- Lacate (spin locks) II - variante avansate
- Lacate bazate pe secvente de tip coada: Craig-Landin-Hagersten lock (CLH), Mellor-Crummey-Scott lock (MCS)
- Laborator: Propunerea unei teme legate de notiunile discutate in prima serie de cursuri. Operatii de coordonare folosind monitorul obiectelor si tipul Condition din Java.
-
- Liste cu acces concurent I - aspecte generale
- Lista cu sincronizare integrala
- Lista cu sincronizare per nod
- Lista cu sincronizare optimista
- Laborator: Variabile de tip ThreadLocal in Java. Exercitii legate de evaluarea eficientei si corectitudinii lacatelor.
-
- Liste cu acces concurent II - variante avansate
- Lista cu sincronizare lazy
- Lista cu sincronizare neblocanta
- Discutie comparativa privind diversele tipuri de liste cu acces concurent
- Laborator: Read-write locks.
-
- Cozi si stive cu acces concurent I - cozi
- Coada limitata cu sincronizare conditionata (partiala)
- Coada nelimitata cu sincronizare neblocanta (lock-free)
- Laborator: Exercitii legate de liste cu acces concurent.
-
- Cozi si stive cu acces concurent II - stive, problema ABA
- Problema ABA
- Stiva nelimitata cu sincronizare neblocanta (lock-free)
- Laborator: Imbunatatirea variantei de sincronizare optimista prin versionare.
-
- Structuri de hashing concurente
- Variante concurente de hash set: closed-address (lock-based si lock-free), open-address.
- Laborator: Exercitii legate de cozi cu acces concurent.
-
- Tehnici de paralelizare a procesarii - I
- Concepte generale si exemple. Impactul dat de schedulers
- Laborator: Exercitii legate de cozi cu acces concurent
-
- Tehnici de paralelizare a procesarii - II
- Strategia de work stealing si structuri de date specifice (deques)
- Laborator: Aplicatii practice bariere
-
- Bariere
- Laborator: Exercitii recapitulative privind structuri de date concurente din pachetele Java
-