Monitor di Brinch
Transcript
Monitor di Brinch
Monitor di Brinch-Hansen MONITOR Quando un PROCESSO vuole usare il monitor e nessun altro processo sta usando il monitor (nessuno è in stato attivo) il processo da enter passa in stato attivo (active). Se invece c’è gia un processo che è in stato attivo (active), il nuovo processo che vuole usare il monitor viene bloccato in stato di ME (mutua esclusione). Se un processo è in stato attivo (active) può capitare che il processo termina (esempio exit) ed esce dal monitor (continue). In tal caso viene liberato il primo processo che è bloccato in ME. Un processo che è in stato active può anche fare una WAIT che lo porta in stato di bloccato (transizione active-wait). Anche in questo caso va in active un processo che era bloccato in ME. 1 Un processo che è in stato active può fare anche una signal sbloccando in tal caso un processo bloccato in wait. Se nessun processo è nella coda di wait viene prelevato il primo processo della coda ME. Il processo che ha fatto la signal esce dal monitor. Monitor di Hoare La differenza con il monitor di Brinch Hansen è la presenza delo stato URGENT. Lo stato URGENT rappresenta uno stato in cui un processo finisce quando ne sblocca un altro in attesa su una variabile di tipo condition. Quando un PROCESSO vuole usare il monitor e nessun altro processo sta usando il monitor (nessuno è in stato attivo) il processo da enter passa in stato attivo (active). Se invece c’è gia un processo che è in stato attivo (active), il nuovo processo che vuole usare il monitor viene bloccato in stato di ME (mutua esclusione). 2 Un processo che è in stato attivo è fa una signal non esce dal monitor ma va in stato URGENT. Un processo in stato attivo che fa la EXIT scatena il ripescaggio di un processo dallo stato di URGENT. Se nessuno è in URGENT si controlla la coda ME. Nel monitor di Brinch-Hansen ci può essere un solo processo attivo e N processi bloccati. Nel monitor di Hoare ci possono essere 1 processo in attivo, N processi in URGENT e M processi in bloccato. 3