Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Ingegneria
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Antonino Mazzeo » 13.Sincronizzazione nel modello ad ambiente locale


Sommario

  • Modello ad ambiente locale
  • Primitive di scambio messaggi
  • Sincronizzazione e indirizzamento

Il modello ad ambiente locale

  • Ciascun processo evolve in un proprio ambiente che non può essere modificato direttamente da altri processi.
  • Quindi non esiste memoria condivisa e le risorse sono tutte private.
  • Pertanto la cooperazione si realizza mediante lo scambio diretto di messaggi per mezzo di primitive che il S.O. deve rendere disponibili
  • Questo modello
    • Garantisce la mutua esclusione
    • Consente lo scambio di informazioni
Schema esplicativo (processi)

Schema esplicativo (processi)


Primitive di scambio messaggi e sincronizzazione

  • Due tipologie di primitive
    • send (destination, message)
    • receive (source, message)
  • Tipo di sincronizzazione dei processi comunicanti
    • Send sincrona: Il sender rimane in attesa fino a che il messaggio è stato ricevuto
    • Send asincrona: Il sender continua la sua esecuzione senza attendere l’avvenuta consegna del messaggio
    • Receive Bloccante: il receiver rimane in attesa fino a che il messaggio non è stato ricevuto
    • Receive Non Bloccante: il receiver continua la sua esecuzione senza attendere l’avvenuta consegna del messaggio
Struttura del Messaggio

Struttura del Messaggio


Sincronizzazione

  • Il sender e il receiver possono essere sia bloccanti che non bloccanti a seconda delle primitive utilizzate
  • Sono tre le combinazioni generalmente utilizzate, anche se spesso i sistemi implementano solo una o due combinazioni
    • Send sincrona, receive bloccante, denominato anche “rendezvous”
    • Send asincrona, receive bloccante
    • Send asincrona, receive non bloccante
  • Implementazione di send sincrona a mezzo di send asincrona

procedure sendSincrona(dest, mess) {

sendAsincrona (dest, messRTS) /* pronto ad inviare*/

receiveBloccante (dest, messOTS) /* pronto a ricevere*/

sendAsincrona (dest, mess) }

Sincronizzazione

  • La Send asincrona è quella più utilizzata nei linguaggi di programmazione concorrente, ma…
    • se durante la trasmissione di un treno di messaggi se ne perde uno, il sender se ne accorgerebbe solo alla fine (spreco di risorse)
    • l’utilizzo di tale send demanda al programmatore la responsabilità di implementare strategie per determinare se il messaggio è stato ricevuto
  • La Receive Bloccante è quella più utilizzata nei linguaggi di programmazione concorrente, ma…
    • se durante la trasmissione il messaggio va perduto o il sender fallisce,il receiver può attendere indefinitamente la ricezione del messaggio

Indirizzamento

  • La destinazione e la provenienza possono essere indicate:
    • esplicitando nella send il pid del destinatario e nella receive il pid del mittente (comunicazione diretta simmetrica): schema a pipeline
    • esplicitando nella send il pid del destinatario mentre nella receive il parametro che specifica la provenienza è di uscita nel qual caso il destinatario conosce il pid del mittente con la ricezione del messaggio (comunicazione diretta asimmetrica): cliente-servitore
    • facendo riferimento ad una mailbox a cui la send invia il messaggio e da cui la receive lo preleva (comunicazione indiretta)
Comunicazione diretta e indiretta

Comunicazione diretta e indiretta


Processo Servitore

  • Nel caso di comunicazione diretta asimmetrica, o indiretta di tipo many-to-one si parla di comunicazione client-server e processo servitore.
  • Processi servitore: speciali processi che incapsulano la risorsa comune offrendo a processi esterni le funzionalità di accesso alla risorsa incapsulata.
  • Un processo servitore
    • riceve messaggi di richiesta
    • opera sulla risorsa
    • fornisce eventuali risposte
Schema esplicativo (cliente/servitore)

Schema esplicativo (cliente/servitore)


Prossima lezione

Esercitazione: Interprocess Communication e Shared Memory

I materiali di supporto della lezione

P. Ancilotti, M.Boari, A. Ciampolini, G. Lipari, “Sistemi Operativi”, Mc-Graw-Hill (Cap.3; par. 3.5, 3.6)

Sincronizzazione nel modello ad ambiente locale

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion