Precedente :: Successivo |
Autore |
Messaggio |
GIGOLOKO Mortale pio
Registrato: 26/09/07 13:50 Messaggi: 27
|
Inviato: 10 Dic 2009 21: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 20:28 Messaggi: 4643 Residenza: Internet
|
Inviato: 11 Dic 2009 00:15 Oggetto: |
|
|
Ciao,
potresti dar qualche dettaglio sul linguaggio che devi usare? |
|
Top |
|
|
GIGOLOKO Mortale pio
Registrato: 26/09/07 13:50 Messaggi: 27
|
Inviato: 11 Dic 2009 00: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 13:50 Messaggi: 27
|
Inviato: 12 Dic 2009 14:55 Oggetto: |
|
|
nessuno
|
|
Top |
|
|
Scrigno Semidio
Registrato: 26/07/09 04:32 Messaggi: 313
|
Inviato: 12 Dic 2009 16: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 13:50 Messaggi: 27
|
Inviato: 12 Dic 2009 18: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 13:50 Messaggi: 27
|
Inviato: 12 Dic 2009 19: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 04:32 Messaggi: 313
|
Inviato: 13 Dic 2009 02: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 13:50 Messaggi: 27
|
Inviato: 13 Dic 2009 16: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 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 14 Dic 2009 16: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 13:50 Messaggi: 27
|
Inviato: 15 Dic 2009 16: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 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 16 Dic 2009 10: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 |
|
|
|