| Precedente :: Successivo | 
	
	
		| Autore | Messaggio | 
	
		| GIGOLOKO Mortale pio
 
  
  
 Registrato: 26/09/07 14:50
 Messaggi: 27
 
 
 | 
			
				|  Inviato: 10 Dic 2009 22:10    Oggetto: Semafori |   |  
				| 
 |  
				| Problema in una pizzeria si possono solo comprare pizze da asporto.
 un cliente entra deve andare prima alla cassa per ordinare e pagare
 il cassiere appoggia l ordinazione sul banco del pizzaiolo
 prima di permettere al prossimo cliente di ordinare e pagare
 il pizzaiolo estrae un ordinazione prepara le pizze
 e le poggia sul bancone di vendita il cliente ritira le pizze e esce
 le ordinazioni vengono eseguite nell ordine in cui vengono effettuate
 la porta d ingresso della pizzeria permette ad un solo cliente
 alla volta di entrare o uscire
 descrivere i processi coinvolti nel problema e permettere
 la loro corretta esecuzione garantendone ove necessario
 sincronizzazione e mutua esclusione
 
 chi mi da una mano
 
 anche solo ad impostarlo inizialmente
 con processi e semafori da utilizzare
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| freemind Supervisor sezione Programmazione
 
  
  
 Registrato: 04/04/07 21:28
 Messaggi: 4643
 Residenza: Internet
 
 | 
			
				|  Inviato: 11 Dic 2009 01:15    Oggetto: |   |  
				| 
 |  
				| Ciao, potresti dar qualche dettaglio sul linguaggio che devi usare?
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| GIGOLOKO Mortale pio
 
  
  
 Registrato: 26/09/07 14:50
 Messaggi: 27
 
 
 | 
			
				|  Inviato: 11 Dic 2009 01:33    Oggetto: |   |  
				| 
 |  
				| scusa hai ragione comunque per me pseudo istruzioni vanno bene tipo
 
  	  | Codice: |  	  | mutex sem1=1
 sem2=0
 
 processo1                                       processo2
 wait(sem1)                                     wait(sem1)
 fa qualcosa//zona critica                  fa qualcosa//zona critica
 signal(sem1)                                   signal(sem1)
 fa qualcosa 1                                   wait(sem2)
 signal(sem2)                                   fa qualcosa dopo fa qualcosa 1
 
 | 
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| GIGOLOKO Mortale pio
 
  
  
 Registrato: 26/09/07 14:50
 Messaggi: 27
 
 
 | 
			
				|  Inviato: 12 Dic 2009 15:55    Oggetto: |   |  
				| 
 |  
				| nessuno 
 
            |  | 
	
		| Top |  | 
	
		|  | 
	
		| Scrigno Semidio
 
  
  
 Registrato: 26/07/09 05:32
 Messaggi: 313
 
 
 | 
			
				|  Inviato: 12 Dic 2009 17:49    Oggetto: |   |  
				| 
 |  
				| Non ho ben capito cosa cerchi però possiamo partire da questo modello a stati 
 
  	  | Codice: |  	  | <Da lato pizzaiolo> IF "HoUnClienteInCoda" = TRUTH AND "PizzaioloOccupato" = FALSE" THEN
 "PizzaioloOccupato" = TRUTH
 "PrendiClienteDallaCoda"
 "PrendiOrdineEFattiPagare"
 "InfornaPizzaOrdinata"
 "RilasciaClienteConPizza"
 ENDIF
 "PizzaioloOccupato"= FALSE
 RIPETI
 
 <Dal lato cliente>
 Se arriva il cliente è il pizzaiolo è occupato allora il cliente entra in coda
 | 
 
 Magari un qualcosa del genere:
 
 
  |  | 
	
		| Top |  | 
	
		|  | 
	
		| GIGOLOKO Mortale pio
 
  
  
 Registrato: 26/09/07 14:50
 Messaggi: 27
 
 
 | 
			
				|  Inviato: 12 Dic 2009 19:10    Oggetto: |   |  
				| 
 |  
				| interessante il tuo modello a stati 
 pero precisamente cerco qualcosa implementato con i semafori
 che possono essere di tre tipi
 mutex=1
 sem sincronizzazione=0
 sem sincronizzazione=n
 per gestire i processi e le risorse condivise tipo
 
 processi :
 cliente
 pizzaiolo
 forse anche cassiere
 risorse condivise:
 cassa
 porta d ingresso
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| GIGOLOKO Mortale pio
 
  
  
 Registrato: 26/09/07 14:50
 Messaggi: 27
 
 
 | 
			
				|  Inviato: 12 Dic 2009 20:21    Oggetto: |   |  
				| 
 |  
				| vabbo propongo la mia soluzione sicuramente sbagliata qualcuno la corregge
 
 
  	  | Codice: |  	  | SEM MUTEX PORTA=1 SEM MUTEX CASSA PRONTA=1
 
 SEM SINC CLIENTE=0
 SEM  SINC PIZZA PRONTA=0
 SEM SINC ORDINE=0
 
 
 CLIENTE                               CASSIERE                     PIZZAIOLO
 
 
 WAIT(PORTA)                    WAIT(CLIENTE)                WAIT(ORDINE)
 //ENTRA                        //PRENDE ORDINE               //PREPARA PIZZA
 SIGNAL(PORTA)              SIGNAL(ORDINE)               SIGNAL(PIZZA PRONTA)
 WAIT(CASSA PRONTA)             SIGNAL(CASSA PRONTA)
 SIGNAL(CLIENTE)
 //ORDINA
 WAIT(PIZZA PRONTA)
 //RITIRA PIZZA
 WAIT(PORTA)
 //ESCE
 SIGNAL(PORTA)
 
 | 
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| Scrigno Semidio
 
  
  
 Registrato: 26/07/09 05:32
 Messaggi: 313
 
 
 | 
			
				|  Inviato: 13 Dic 2009 03:42    Oggetto: |   |  
				| 
 |  
				| ... Ma quello che usi è il linguaggipo per programmare i database dei BCP in logistica? tipo il Pallet che è nella scansia "Q" al 3° livello; il tutto utilizzando un codice a barre? ...
 Giusto a tiltolo informativo perchè, avendo visto che non ti posso essere di aiuto in quanto ho capito cosa cerchi ma non so come aiutarti, spero tu possa insegnarmi una cosa nuova
   
 ...
 Comunque vedo di documentarmi in rete.. magar esiste gia qualche millione di oggetti pronti in Dot.net
  che sicuramente io non conosco   
 
 Per ora mi leggo questo da wiki
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| GIGOLOKO Mortale pio
 
  
  
 Registrato: 26/09/07 14:50
 Messaggi: 27
 
 
 | 
			
				|  Inviato: 13 Dic 2009 17:05    Oggetto: |   |  
				| 
 |  
				| Scrigno 
 uso uno pseudo codice perche poi quello che ottengo
 puo essere implementato in qualsiasi linguaggio
 di solito in C ma e indifferente
 ovviamente potrei usare i monitor e risolvere il tutto piu facilmente
 ma devo usare i semafori
 
 comunque se a qualcuno puo servire
 il mio svolgimento e corretto parola del docente
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11861
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 14 Dic 2009 17:09    Oggetto: Re: Semafori |   |  
				| 
 |  
				|  	  | GIGOLOKO ha scritto: |  	  | la porta d ingresso della pizzeria permette ad un solo cliente alla volta di entrare o uscire | 
 
 sezione critica, direi. non la vedo nel tuo schema
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| GIGOLOKO Mortale pio
 
  
  
 Registrato: 26/09/07 14:50
 Messaggi: 27
 
 
 | 
			
				|  Inviato: 15 Dic 2009 17:57    Oggetto: |   |  
				| 
 |  
				| SverX 
 SEM MUTEX PORTA=1
 
 WAIT(PORTA)   //  se MUTEX PORTA==1 ne prende pssesso la mette a 0
 e nessun altro puo usarla se sta a 0
 //ENTRA
 SIGNAL(PORTA) //  la rilasci la mette a 1
 
 
 // uguale sotto
 
 WAIT(PORTA)
 //ESCE
 SIGNAL(PORTA)
 
 
 
 mentre un cliente la usa non puo usarla nessunaltro
 |  | 
	
		| Top |  | 
	
		|  | 
	
		| SverX Supervisor Macchinisti
 
  
  
 Registrato: 25/03/02 12:16
 Messaggi: 11861
 Residenza: Tokelau
 
 | 
			
				|  Inviato: 16 Dic 2009 11:34    Oggetto: |   |  
				| 
 |  
				| ma il problema non dice che due clienti non possono usare la porta nello stesso momento, ma dice che due clienti non possono stare nel negozio contemporaneamente... oppure ho letto male? 
 edit: eh, ho proprio letto male. Ignora i miei suggerimenti allora
  |  | 
	
		| Top |  | 
	
		|  | 
	
		|  |