Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Semafori
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
GIGOLOKO
Mortale pio
Mortale pio


Registrato: 26/09/07 13:50
Messaggi: 27

MessaggioInviato: 10 Dic 2009 21:10    Oggetto: Semafori Rispondi citando

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
Profilo Invia messaggio privato
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 11 Dic 2009 00:15    Oggetto: Rispondi citando

Ciao,
potresti dar qualche dettaglio sul linguaggio che devi usare?
Top
Profilo Invia messaggio privato
GIGOLOKO
Mortale pio
Mortale pio


Registrato: 26/09/07 13:50
Messaggi: 27

MessaggioInviato: 11 Dic 2009 00:33    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
GIGOLOKO
Mortale pio
Mortale pio


Registrato: 26/09/07 13:50
Messaggi: 27

MessaggioInviato: 12 Dic 2009 14:55    Oggetto: Rispondi citando

nessuno

Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad
Top
Profilo Invia messaggio privato
Scrigno
Semidio
Semidio


Registrato: 26/07/09 04:32
Messaggi: 313

MessaggioInviato: 12 Dic 2009 16:49    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
GIGOLOKO
Mortale pio
Mortale pio


Registrato: 26/09/07 13:50
Messaggi: 27

MessaggioInviato: 12 Dic 2009 18:10    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
GIGOLOKO
Mortale pio
Mortale pio


Registrato: 26/09/07 13:50
Messaggi: 27

MessaggioInviato: 12 Dic 2009 19:21    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
Scrigno
Semidio
Semidio


Registrato: 26/07/09 04:32
Messaggi: 313

MessaggioInviato: 13 Dic 2009 02:42    Oggetto: Rispondi citando

... 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 Wink

...
Comunque vedo di documentarmi in rete.. magar esiste gia qualche millione di oggetti pronti in Dot.net Razz che sicuramente io non conosco Smile


Per ora mi leggo questo da wiki
Top
Profilo Invia messaggio privato
GIGOLOKO
Mortale pio
Mortale pio


Registrato: 26/09/07 13:50
Messaggi: 27

MessaggioInviato: 13 Dic 2009 16:05    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 14 Dic 2009 16:09    Oggetto: Re: Semafori Rispondi citando

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
Profilo Invia messaggio privato HomePage
GIGOLOKO
Mortale pio
Mortale pio


Registrato: 26/09/07 13:50
Messaggi: 27

MessaggioInviato: 15 Dic 2009 16:57    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
SverX
Supervisor Macchinisti
Supervisor Macchinisti


Registrato: 25/03/02 11:16
Messaggi: 11568
Residenza: Tokelau

MessaggioInviato: 16 Dic 2009 10:34    Oggetto: Rispondi

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 Embarassed
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi