Computer Network Lesson

Lezione del 17 Novembre

Si è visto che un sistema di elaborazione può essere definito come un insieme di processi ed un insieme di risorse. Inoltre, senza perdita di generalità si può sempre supporre che le risorse siano gestite da uno o più processi. Una prima classificazione dei sistemi riguarda il modo con cui le risorse sono localizzate, cosicchè si parla di

Infatti, se si guarda al modo con cui i processi sono eseguiti, si nota che il sistema può schematizzarsi come un insieme di nodi interconnessi da una rete di comunicazione la cui funzione è quella di trasferire informazione dalla memoria di un nodo a quella di un altro.

Ogni nodo è caratterizzato da una propria unità di elaborazione e da una propria memoria centrale, entrambe necessarie a consentire l'esecuzione dei processi su quel nodo. La memoria, per sua natura, ha la peculiarità di mantenere l'informazione ivi contenuta per tutto il tempo necessario al processo di utilizzarla. La stesso non può dirsi per il mezzo trasmissivo su cui si poggia la rete di comunicazione.

Scambio Messaggi

Nella definizione di sistema le risorse hanno un funzione passiva, subalterna rispetto ai processi, che sono i veri protagonisti dei servizi forniti attraverso l'elaborazione codificata nel programma che li definisce. Le funzionalità che i sistemi di elaborazione sono in grado di fornire possono essere assai articolate e molte volte sono realizzate da complesse interazioni fra processi.

Nella situazione più generale l'interazione fra processi si concretizza con un meccanismo di comunicazione in cui i processi si scambiano messaggi utilizzando opportuni canali di comunicazione. Questi canali, a loro volta, si poggiano su una rete di interconnessione che consente alle unità di informazione, costituenti il messaggio, di essere trasferite da una memoria locale di un nodo a quella di un altro. A tal fine è necessario disporre di un mezzo trasmissivo entro il quale propagare i segnali che rappresentano le informazioni in transito.

Nel caso particolare in cui i processi risiedono sullo stesso nodo non è necessario alcun mezzo trasmissivo perchè la memoria centrale è già in grado di realizzare il transito dei messaggi. Possiamo concludere, allora, che nei sistemi a risorse concentrate l'informazione in transito può permanere senza limiti temporali nelle aree di memoria adibite allo scopo, mentre nei sistemi a risorse distribuite il mezzo trasmissivo si comporta come una memoria altamente volatile. Anzi, maggiore è la larghezza di banda del mezzo trasmissivo, minore sarà la permanenza del messaggio al suo interno.

Nella figura seguente viene evidenziato come l'ambiente di comunicazione fornisce il meccanismo di interazione fra i processi. A sua volta, l'ambiente di comunicazione si appoggia sul livello del trasporto, che è parte della struttura implementativa della rete di interconnessione.

Il termine applicazione, che appare nella figura, evidenzia volutamente il fatto che in generale i processi non devono essere necessariamente sequenziali, cosicchè verrà riservato il termine processo all'esecuzione di un programma strettamente sequenziale.

Pertanto, nel caso delle applicazioni potrà essere identificato un certo numero di componenti sequenziali in esecuzione, ciascuna strutturata come processo leggero o, brevemente, processo.

Ambiente di Comunicazione

Come è noto l'interazione fra processi mediante scambio messaggi costituisce il paradigma più generale di cooperazione fra unità funzionali ed è realizzato fornendo un ambiente di comunicazione dove, per ogni gruppo di processi che intendono interagire, è possibile

Si tenga presente che ogni processo coinvolto nella comunicazione è caratterizzato da proprie variabili locali le quali non sono accessibili a nessun altro processo. Questo significa che nel modello in esame l'accesso ad una risorsa è realizzato, mediante specifica richiesta ad eseguire indirettamente le opportune operazioni, al processo che controlla quella risorsa.

MODALITA'

Determina il tipo di legame che si stabilisce fra l'insieme dei processi che intendono comunicare. Si può caratterizzare con le quattro classi di connessione riportate di seguito:

Come si può notare nelle precedenti si è fatta implicitamente una suddivisione funzionale fra due categorie di processi identificate genericamente con i termini di clienti e server. I secondi forniscono servizi ai primi, su richiesta esplicita, per essere in grado di effettuare le operazioni del caso.

DENOMINAZIONE DEL CANALE

Si riferisce al meccanismo con il quale i processi coinvolti nella comunicazione identificano il canale. La denominazione può essere di due tipi.

Denominazione Diretta

Il canale di comunicazione è identificato dalla coppia <mittente, destinatario> e che si realizza nominando esplicitamente mittente e destinatario nelle primitive di comunicazione. Si tratta, anche, di una denominazione simmetrica in quanto il mittente nomina il destinatario e, viceversa, quest'ultimo nomina il mittente.

Sebbene il meccanismo sia molto semplice è direttamente usabile nella modalità uno-a-uno, a meno che il server nella modalità molti-a-uno non nomini esplicitamente tutti i potenziali clienti. Inoltre, se lo stesso cliente vuole accedere a diversi servizi dello stesso server, il fatto può creare ambiguità.

In conclusione con questo tipo di denominazione del canale si realizza una connessione punto-punto asimmetrica fra due processi.

Denominazione Indiretta

Invece di nominare direttamente il mittente e il destinatario, si usa un nome globale, detto mailbox e identificabile univocamente, che viene utilizzato sia dal mittente che dal ricevente. La flessibilità d'uso, in questo caso, è evidente in quanto la comunicazione fra processi è realizzata in modo indiretto attraverso l'identificazione della mailbox che mette in corrispondenza un messaggio del cliente con la ricezione da parte del server.

In entrambi i casi non si fa alcun riferimento specifico alla localizzazione dei clienti e dei server all'interno del sistema a risorse distribuite e al modo con cui i messaggi sono trasferiti. Come vederemo questo compito spetta interamente alla rete di interconnessione che deve essere in grado di trasformare i canali in cammini nel grafo che rappresenta la rete.

TIPO DEI MESSAGGI

Il trasferimento di informazioni fra processo mittente e processo ricevente è realizzato assegnando una struttura al messaggio, che può essere arbitrariamente complicata. L'unico vincolo è che il valore trasferito dal mittente abbia lo stesso tipo della variabile che verrà istanziata quando il messaggio giungerà al ricevente.

L'ambiente di comunicazione deve essere in grado di trasformare i messaggi strutturati scambiati fra processi in unità di informazione che transiteranno nella sottostante rete di interconnessione.

PRIMITIVE DI COMUNICAZIONE

La capacità di utilizzare i canali da parte dei processi è data dalle primitive di comunicazione send e receive la cui forma generale è data da due parametri, il primo per identificare il canale ed il secondo il messaggio da trasferire.

Trasmissione del Messaggio

La primitiva che realizza l'invio di un messaggio Msg verso una destinazione specificata Dest prende la forma generale

send(Dest, Msg)

dove la destinazione può rappresentare sia un processo che una mailbox. Relativamente al processo mittente la send può risultare

Il fatto che la send sia sincrona o asincrona dipende esclusivamente dalla capacità del canale o, per essere più precisi dalla sua larghezza di banda intesa, in questo caso, come numero di messaggi che possono essere trasmessi per unità di tempo.

Ricezione del Messaggio

In tutti i sistemi il ricevente esegue esplicitimente l'istruzione

receive(Source, MsgBuf)

in cui il primo parametro Source identifica la sorgente del messaggio, mentre il secondo MsgBuf definisce la variabile dove sarà memorizzato il messaggio in arrivo. Dunque, se non è presente alcun messaggio il processo ricevente rimane bloccato fino all'arrivo di qualche messaggio. Rispetto a questo schema base sono possibili un certo numero di varianti, le quali hanno tutte lo scopo di indebolire la caratteristica bloccante di base della receive.

Come nel caso della send, anche per quanto riguarda il primo parametro della receive questo si può riferire indifferentemente ad un processo mittente come ad una mailbox.

Lo schema di utilizzo delle primitive send/receive presentate è quello detto della comunicazione orientata al messaggio. E' possibile, anche, uno schema alternativo detto comunicazione orientata alle procedure, ma verrà trattata più avanti.