cerca
Sistemi Operativi - Appunti caotici
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Sistemi Operativi - Appunti caotici

Torna alla pagina di Sistemi Operativi


 :: Appunti caotici ::

Lezione 2 Comunicazione fra processi

Pag 2

Comunicazione

Al solito, distinguiamo meccanismi e politiche del fenomeno. I primi definiscono come può essere realizzata la comunicazione, i secondi ne regolamentano invece l'uso.

Nello schema P è il processo mittente, che invia l'informazione (incapsulata in un messaggio) al processo ricevente Q, da cui può avere eventualmente una risposta.

Necessità

La necessità della comunicazioe nasce dal fatto che due processi debbano condividere delle informazioni.

Pag 3

Entità coinvolte nella comunicazione

Nelle comunicazioni dunque si possono distinguere diverse entità:

  • Processo produttore dell'informazione;
  • Processo utilizzatore dell'informazione;
  • Canale di comunicazione (il quale può essere monodirezionale o bidirezionale)

Caratteristiche

Nello scambio di informazioni fra i processi entrano in gioco anche delle caratteristiche, grazie alle quali possiamo decidere il metodo migliore per la comunicazione fra i due processi. Prima di elencarle c'è da dire che pur non essendo tutte obbligatorie, alcune di esse dovrebbero essere sempre garantite.

  • Quantità di informazioni da trasmettere: se ho grosse quantità di informazioni può non essere conveniente copiarle in memoria centrale perchè sprecherei un sacco di tempo;
  • Velocità di esecuzione, legata alla modalità di comunicazione scelta;
  • Scalabilità. Bisogna infatti garantire in modo semplice la possibilità di aumentare i processi che concorrono alla comunicazione, cercando di tenere sotto controllo la complessità complessiva
  1. semplicità di uso nelle applicazioni;
  • Semplicità di uso nelle applicazioni: devo poter usare in maniera semplice le applicazioni;
  • Omogeneità delle comunicazioni, dato che non ha senso adottare n modi diversi di effettuare una comunicazione a seconda di come mi gira il pirla, o diventerebbe troppo complessa la gestione e quindi aumenterebbe la possibilità di comettere errori per il programmatore. E' dunque cosa buona e giusta che chi implementa il processo impari per bene una tecnica ed usi quella e bon;
  • Integrazione nel linguaggio di programmazione: devo poter integrare le tecniche precedenti all'interno del linguaggio di programmazione, altrimenti sarei costretto ad usare delle librerie che possono cambiare da sistema operativo a sistema operativo. Questa caratteristica garantisce la portabilità del processo su più sistemi, basta avere il compilatore e l'ambiente di supporto giusto per quel linguaggio;
  • Affidabilità;
  • Sicurezza;
  • Protezione

Pag 4

Implementazione

La comunicazione può avvenire in duo modi diversi:

  1. Comunicazione diretta: il mittente e il ricevente si conoscono, quindi il mittente saprà a chi dovrà mandare le informazioni e il ricevente saprà da chi le riceve. Presuppone che P e Q siano entrambi vivi e attivi perché riescano a parlare, e ciò rappresenta spesso un grosso limite;
  2. Comunicazione indiretta: il mittente e il ricevente non si conoscono, e la comunicazione avviene su punti noti sia al mittente che al ricevente. Tale tipologia sfrutta una struttura dati per contenere l'informazione, così da poter avere un mittente per un ricevente non noto a priori. Se infatti il problema della comunicazione diretta è che il processo Q potrebbe non ricevere l'informazione a causa di vari problemi (come ad esempio la sua morte - checcarino!), con quella indiretta avrò il sistema operativo che in caso di decesso di Q provvederà a crearne un altro ex-novo in grado di acquisire il messaggio di P, che non era indirizzato a nessuno in particolare. Da notare come il processo mittente rimanga all'oscuro di questi travagli, e come l'informazione possa rimanere inutilizzata per un certo tempo.

Le tecniche di comunicazione diretta sono:

  • Memoria condivisa: in questa tecnica il mittente scrive nello spazio di memoria condivisa e il processo ricevente dovrà attendere che l'informazione sia completamente scritta per potervi accedere;
  • Messaggi: nel caso in cui non voglia condividere la memoria, invio dei messaggi che saranno memorizzati in uno spazio di memoria gestito dal sistema operativo (il buffer), da cui Q preleverà il messaggio per poi copiarselo nella propria porzione di memoria

Notare come questi sistemi non garantiscano in modo nativo lo stato di evoluzione dei processi.

Le tecniche di comunicazione indiretta invece sono:

  • Mailbox: nella memoria centrale inserisco una struttura dati (la Mailbox appunto), dove inserisco le informazioni che il processo mittente invierà. Questo metodo è molto simile all'utilizzo dei buffer, con la differenza che in questo caso la struttura dati si frappone tra i processi rendendo di fatto la comunicazione indiretta;
  • File e Pipe. I file sono un'evoluzione della Mailbox, concettualmente uguali, ma con la differenza che le informazioni vengono memorizzate nella memoria di massa e non in quella centrale. I pipe sono invece delle strutture dati residenti in memoria centrale in cui inserisco le informazioni in coda e le leggo dalla testa (FIFO) semplificando la struttura e rendendola più efficiente;
  • Socket: per i socket dobbiamo pensare ad un pipe divisa in due parti. Nella prima ci sarà il mittente che inserisce le informazioni nella coda; nella seconda (su un'altra macchina) ci sarà il processo ricevente che preleva le informazioni. La differenza è che nella parte centrale ci sarà la rete informatica, dunque le informazioni vengono spedite in pacchetti attraverso la rete internet.

Nota: le tecniche di comunicazione saranno trattate in specifico nella prossima lezione.


Torna alla pagina di Sistemi Operativi