Pages: [1]   Go Down
Print
Author Topic: Simulatori di Semafori sul sito del professore  (Read 2048 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Geko
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 166


« on: 21-07-2011, 09:59:49 »

Questo e questo, raggiungono valori negativi, ma ciò non va contro il fatto che un semaforo può valere 0 o un qualsiasi numero positivo?

Sono un po' confuso, specie se poi dovrò applicarlo in un esercizio del compito

GC
Logged
Damon Baird
Matricola
*
Offline Offline

Gender: Male
Posts: 67



« Reply #1 on: 21-07-2011, 14:27:50 »

Lo scopo dei semafori è soprattutto quello di "memorizzare" segnali di wakeup, in questo caso avendo valori negativi tipo -2 sta a significare che 2 processi sono bloccati in attesa che un altro esca nella sezione critica; credo che nel libro in qualche esempio vi siano solo 2 processi e l'operazione di down sul semaforo controlli se il valore di tale semaforo sia 0, in quel caso il processo chiamante si blocca, credo che se ci sono 2 o più processi convenga fare proprio come nell'esempio in maniera tale che, se un processo esce dalla sezione critica facendo up, si sia a conoscenza che c'è ancora un altro processo bloccato.
Spero di esser stato chiaro e di non aver scritto baggianate cry
Logged
corsair
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 273



« Reply #2 on: 22-07-2011, 08:11:18 »

si le cose stano come ha detto Damon Baird, in effetti quello del semaforo è solo un concetto, ed ognuno fa l'implementazione che gli piace.
nelle implementazioni che abbiamo visto a lezione

nell'operazione di down il processo controlla il valoredel semaforo, se è 0 si blocca (il decremento è rimandato ad un altro momento)altrimenti se è positivo decrementa il valore di uno.

l'up invece incrementa  sempre il valore del semaforo di uno ed eventualmente estrae un processo bloccato dalla coda dei processi bloccati su quel semaforo.

Facciamo un esempio(con due soli processi, giusto per chiarire il motivo per cui con questa implementazione non si hanno valori negativi):

supponiamo il valore del semaforo inizialmente sia 1

il processo A esegue una down e porta il valore di semaforo ad 0

il processo A entra nella sua regione critica

il processo B esegue un down per entrare nella regione critica ma il valore è 0 e la sua chiamata si interrompe

il processo A esce dalla sua regione critica ed esegue un up portando il valore del semaforo ad 1 e risvegliando B

il processo B a questo punto riprende l'operazione down e decrementa il semaforo portandolo ad 0

etc.....

la differenza sostanziale tra le due implementazioni è che in quella del libro il decremento del down nel caso in cui il processo si blocchi viene rimandato al momento in cui tale processo sia risvegliato da un up. 

Invece in quella dei simulatori prima viene fatto il decremento e poi il processo si blocca, quando verrà risvegliato il processo riprenderà il controllo e non dovrà fare un ulteriore decremento in quanto l'ha già fatto.

la strategia dei simulatori è un po più simpatica perchè ti da informazioni si quanti processi siano bloccati e durante l'operazione di up  invece di tentare il risveglio di un processo prima puoi controllare se effettivamente ve ne siano di bloccati

Spero di essere stato chiaro! ciao



Logged
corsair
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 273



« Reply #3 on: 22-07-2011, 08:23:49 »

comunque il tutto è spiegato nel tanenbaum al paragrafo 2.3.5 della 3^edizione e della 4^edizione in inglese(penso sia lo stesso anche per quella italiana)

l'unica cosa da capire è che l'operazione di down in caso di fallimento si blocca e dopo l'up il processo che prima era bloccato riprende ad eseguire la down esattamente nel punto in cui si era bloccato.
Logged
Geko
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 166


« Reply #4 on: 22-07-2011, 09:19:36 »

Non c'erano dubbi su cosa siano o cosa fanno le operazioni dei semafori.
Ma dato che mi pare d'aver visto un esercizio con i semafori, mi chiedevo quale logica dovesse essere applicata, dato che c'è questa libertà di implementazione (e mi pare non aver visto alcun riferimento al codice del semaforo sull'esercizio).

GC

Logged
Pages: [1]   Go Up
Print
Jump to: