Tehnici de Programare Multiprocesor / Multiprocessor Programming Techniques

  • Curs 1 - Laborator 1

    • 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.
  • Curs 2 - Laborator 2

    • 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.
  • Curs 3 - Laborator 3

    • 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.
  • Curs 4 - Laborator 4

    • 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.
  • Curs 5 - Laborator 5

    • 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.
  • Curs 6 - Laborator 6

    • 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.
  • Curs 7 - Laborator 7

    • 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.
  • Curs 8 - Laborator 8

    • 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.
  • Curs 9 - Laborator 9

    • 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.
  • Curs 10 - Laborator 10

    • 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.
  • Curs 11 - Laborator 11

    • Tehnici de paralelizare a procesarii - I
    • Concepte generale si exemple. Impactul dat de schedulers
    • Laborator: Exercitii legate de cozi cu acces concurent
  • Curs 12 - Laborator 12

    Online (link valabil curs si laborator Onica): https://teams.microsoft.com/l/meetup-join/19%3ameeting_MGY2MWExMTYtYTFlZC00MGU5LWIyMjAtMjE0MDM0YTY0MDNi%40thread.v2/0?context=%7b%22Tid%22%3a%224f4b266e-9807-41ec-bfe6-7bc9aa660ac0%22%2c%22Oid%22%3a%22d3a25ce9-9dd2-4182-95ba-fd98d6fbc7dd%22%7d

    • Tehnici de paralelizare a procesarii - II
    • Strategia de work stealing si structuri de date specifice (deques)
    • Laborator: Aplicatii practice bariere
  • Curs 13 - Laborator 13

    Online (link valabil curs si laborator Onica): https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZGNlZDk3Y2MtYTRmYS00MTA5LTk3YzAtY2NlNDNkYzJhMmQ1%40thread.v2/0?context=%7b%22Tid%22%3a%224f4b266e-9807-41ec-bfe6-7bc9aa660ac0%22%2c%22Oid%22%3a%22d3a25ce9-9dd2-4182-95ba-fd98d6fbc7dd%22%7d

    • Bariere
    • Laborator: Exercitii recapitulative privind structuri de date concurente din pachetele Java
  • Evaluare

© 2025 Emanuel Onica. Parts of design by W3Layouts