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