This is an old revision of the document!


Curs 05 - Sincronizarea proceselor

  • Suport curs
    • Operating Systems Concepts
      • Capitolul 6 - Process Synchronization

Secțiunile 6.1-6.5, 6.6.1, 6.6.2, 6.8.2-6.8.4

  • Capitolul 7 - Deadlocks
  • Modern Operating Systems
  • Capitolul 2 - Processes and Threads

Secțiunile 2.3.1-2.3.6, 2.3.9, 2.4.2

Secțiunile 4.1, 4.2

procesul execută o operație blocantă (blocare la un semafor, alocare de memorie care necesită swapping, lucru cu un dispozitiv periferic)

  • procesul se termină
  1. Există următoarea situație: trebuie planificat un proces cu prioritate mică este si mai multe de procese cu prioritate mai mare, care vin în continuu. Fiind prioritați statice, procesul cu prioritate mai mică nu va fi ales niciodată, mereu existând alte procese cu prioritate mai mare, acest lucru conducând la starvation. Soluția o reprezintă utilizarea de priorități dinamice care să ia în considerare timpul petrecut de un proces în coada de așteptare - se mărește prioritate pe odata cu vechimea.
  2. Apelurile IO blocante genereaza contex switch. Citirea și deschiderea unui fișier sunt în mod normal blocante și se va apela planificatorul de procese.
    Operatia V pe un semafor = acquire(). Daca semaforul nu poate fi luat, apelul este blocant, procesul/treahdul este pus în coada waiting a semaforului și alt proces/thread este planificat.
    Operatia P pe un semafor = release(). Dacă sunt procese/threaduri care așteaptă eliberarea semforului, atunci unul din aceastea va fi ales și trecut în starea de ready, urmând a fi planificat ulterior.

~~DISCUSSION:off~~

so/cursuri/curs-05.1359662221.txt.gz · Last modified: 2013/03/18 21:14 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0