cerca
Sistemi Operativi - Appunti caotici
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.SO-Mod3-4-Lez2 History

Hide minor edits - Show changes to output

Changed lines 13-14 from:
Dal punto di vista astratto ho che due processi, che chiameremo P e Q, vogliono comunicare. Affinchè questa comunicazione avvenga dobbiamo introdurre delle politiche.
to:
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.
Changed lines 26-27 from:
*Canale di comunicazione (il quale può essere monodirezionale o bidirezionale);
to:
*Canale di comunicazione (il quale può essere monodirezionale o bidirezionale)
Changed lines 29-30 from:
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. Le caratteristiche sono:\\
to:
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.
Changed lines 32-33 from:
*''Velocità di esecuzione'';
*''Scalabilità'': devo essere in grado di poter aggiungere utenti in maniera semplice, quindi garantire una certa scalabilità;
to:
*''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
# semplicità di uso nelle applicazioni
;
Changed lines 36-37 from:
*Omogeneità delle comunicazioni: devo adottare una o poche tecniche di comunicazione al fine di non commettere errori;
*''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. Questo mi favorirebbe anche la portabilità perchè basterebbe che avessi dei supporti nei linguaggi di programmazione per garantire la comunicazione;
to:
*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
;
Changed lines 40-41 from:
*''Protezione'';
to:
*''Protezione''
Changed lines 45-64 from:
#''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 riceverà;
#''Comunicazione indiretta'': il mittente
e il ricevente non si conoscono. La comunicazione avviene su punti noti sia al mittente che al ricevente, rispetto al primo metodo dove la comunicazione era diretta, qui l'informazione viene inoltrata ad un altro processo. Il problema del primo metodo è che il processo può non ricevere l'informazione a causa di vari problemi (ad esempio muore il processo). Con l'invio dell'informazione ad un terzo processo l'informazione viene conservata all'interno della struttura dati, quindi se il processo ricevente all'improvviso schiatta, nascerà al suo posto un secondo processo che potrebbe utilizzare l'informazione. Il processo mittente però sarà all'oscuro di tutto ciò, ovvero che l'informazione potrebbe essere 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 deve 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 nei buffer, ovvero in zone della memoria del processo.\\


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 non è molto differente dall'utilizzo dei buffer, solo che la struttura dati si infrappone fra i due processi rendendo di fatti tale metodo indiretto;\\

*''File e Pipe'': questo metodo è un'evoluzione della Mailbox, la differenza è che le informazioni vengono poste nella memoria di massa e non in quella
centrale, ma concettualmente la situazione è uguale. Se invece inserisco le informazioni in una cosa e li leggo dalla testa (pipe), semplifico la struttura, concettualmente è un file l'unica differenza è che è gestito in modalità FIFO (Firt In Firt Out), e che le informazioni vengono inserite in memoria centrale;\\

*''Socket'': per i socket dobbiamo pensare ad un pipe divisa in due parti. Nella prima parte ci sarà il mittente che inserisce le informazioni nella coda (in una macchina a parte), nella seconda parte (quindi in una seconda macchina) ci sarà il processo ricevente che prelava le informazioni. La differenza è che nella parte centrale ci sarà la rete informatica, dunque le informazioni saranno spedite in pacchetti attraverso la rete internet.\\
to:
#''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;
#''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.
Added line 59:
Changed line 61 from:
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]
to:
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]
Changed lines 45-46 from:
Le tecniche di comunicazione diretta sono :\\
to:

Le tecniche di comunicazione diretta sono:\\
Added line 61:
Added line 44:
Added line 51:
Added line 47:
Added line 53:
Added line 55:
Changed lines 52-55 from:
*''File e Pipe'': questo metodo è un'evoluzione della Mailbox, la differenza è che le informazioni vengono poste nella memoria di massa e non in quella centrale, ma concettualmente la situazione è uguale. ''''MANGIO LA PAPPA CONTINUO DOPO'''
to:
*''File e Pipe'': questo metodo è un'evoluzione della Mailbox, la differenza è che le informazioni vengono poste nella memoria di massa e non in quella centrale, ma concettualmente la situazione è uguale. Se invece inserisco le informazioni in una cosa e li leggo dalla testa (pipe), semplifico la struttura, concettualmente è un file l'unica differenza è che è gestito in modalità FIFO (Firt In Firt Out), e che le informazioni vengono inserite in memoria centrale;\\
*
''Socket'': per i socket dobbiamo pensare ad un pipe divisa in due parti. Nella prima parte ci sarà il mittente che inserisce le informazioni nella coda (in una macchina a parte), nella seconda parte (quindi in una seconda macchina) ci sarà il processo ricevente che prelava le informazioni. La differenza è che nella parte centrale ci sarà la rete informatica, dunque le informazioni saranno spedite in pacchetti attraverso la rete internet.\\

'''Nota''': le tecniche di comunicazione saranno trattate in specifico nella prossima lezione.
Changed line 52 from:
*''Pipe e File'':
to:
*''File e Pipe'': questo metodo è un'evoluzione della Mailbox, la differenza è che le informazioni vengono poste nella memoria di massa e non in quella centrale, ma concettualmente la situazione è uguale. ''''MANGIO LA PAPPA CONTINUO DOPO'''
Changed lines 43-44 from:
#''Comunicazione indiretta'': il mittente e il ricevente non si conoscono. La comunicazione avviene su punti noti sia al mittente che al ricevente, rispetto al primo metodo dove la comunicazione era diretta, qui l'informazione viene inoltrata ad un altro processo. Il problema del primo metodo è che il processo può non ricevere l'informazione a causa di vari problemi (ad esempio muore il processo). Con l'invio dell'informazione ad un terzo processo l'informazione viene conservata all'interno della struttura dati, quindi se il processo ricevente all'improvviso schiatta, nascerà al suo posto un secondo processo che potrebbe utilizzare l'informazione. Il processo mittente però sarà all'oscuro di tutto ciò, ovvero che l'informazione potrebbe essere inutilizzata per un certo tempo.
to:
#''Comunicazione indiretta'': il mittente e il ricevente non si conoscono. La comunicazione avviene su punti noti sia al mittente che al ricevente, rispetto al primo metodo dove la comunicazione era diretta, qui l'informazione viene inoltrata ad un altro processo. Il problema del primo metodo è che il processo può non ricevere l'informazione a causa di vari problemi (ad esempio muore il processo). Con l'invio dell'informazione ad un terzo processo l'informazione viene conservata all'interno della struttura dati, quindi se il processo ricevente all'improvviso schiatta, nascerà al suo posto un secondo processo che potrebbe utilizzare l'informazione. Il processo mittente però sarà all'oscuro di tutto ciò, ovvero che l'informazione potrebbe essere 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 deve 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 nei buffer, ovvero in zone della memoria del processo.\\

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 non è molto differente dall'utilizzo dei buffer, solo che la struttura dati si infrappone fra i due processi rendendo di fatti tale metodo indiretto;\\
*''Pipe e File'':
Changed lines 42-44 from:
#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 riceverà;
#Comunicazione indiretta: il mittente e il ricevente non si conoscono. La comunicazione avviene su punti noti sia al mittente che al ricevente, rispetto al primo metodo dove la comunicazione era diretta, qui l'informazione viene inoltrata ad un altro processo. Il problema del primo metodo è che il processo può non ricevere l'informazione a causa di vari problemi (ad esempio muore il processo). Con l'invio dell'informazione ad un terzo processo l'informazione viene conservata all'interno della struttura dati, quindi se il processo ricevente all'improvviso schiatta, nascerà al suo posto un secondo processo che potrebbe utilizzare l'informazione. Il processo mittente però sarà all'oscuro di tutto ciò, ovvero che l'informazione potrebbe essere inutilizzata per un certo tempo.
to:
#''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 riceverà;
#''Comunicazione indiretta'': il mittente e il ricevente non si conoscono. La comunicazione avviene su punti noti sia al mittente che al ricevente, rispetto al primo metodo dove la comunicazione era diretta, qui l'informazione viene inoltrata ad un altro processo. Il problema del primo metodo è che il processo può non ricevere l'informazione a causa di vari problemi (ad esempio muore il processo). Con l'invio dell'informazione ad un terzo processo l'informazione viene conservata all'interno della struttura dati, quindi se il processo ricevente all'improvviso schiatta, nascerà al suo posto un secondo processo che potrebbe utilizzare l'informazione. Il processo mittente però sarà all'oscuro di tutto ciò, ovvero che l'informazione potrebbe essere inutilizzata per un certo tempo.
Deleted lines 38-39:
Changed lines 40-41 from:
to:
!!!!Implementazione
La comunicazione può avvenire in duo modi diversi:
#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 riceverà;
#Comunicazione indiretta: il mittente e il ricevente non si conoscono. La comunicazione avviene su punti noti sia al mittente che al ricevente, rispetto al primo metodo dove la comunicazione era diretta, qui l'informazione viene inoltrata ad un altro processo. Il problema del primo metodo è che il processo può non ricevere l'informazione a causa di vari problemi (ad esempio muore il processo). Con l'invio dell'informazione ad un terzo processo l'informazione viene conservata all'interno della struttura dati, quindi se il processo ricevente all'improvviso schiatta, nascerà al suo posto un secondo processo che potrebbe utilizzare l'informazione. Il processo mittente però sarà all'oscuro di tutto ciò, ovvero che l'informazione potrebbe essere inutilizzata per un certo tempo.
Changed lines 22-25 from:
*Processo produttore dell'informazione;
*Processo utilizzatore dell'informazione;
*Canale di comunicazione (il quale può essere monodirezionale o bidirezionale);
to:
*Processo produttore dell'informazione;
*Processo utilizzatore dell'informazione;
*Canale di comunicazione (il quale può essere monodirezionale o bidirezionale);
Changed lines 27-28 from:
to:
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. Le caratteristiche sono:\\

*''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'';
*''Scalabilità'': devo essere in grado di poter aggiungere utenti in maniera semplice, quindi garantire una certa scalabilità;
*''Semplicità di uso nelle applicazioni'': devo poter usare in maniera semplice le applicazioni;
*Omogeneità delle comunicazioni: devo adottare una o poche tecniche di comunicazione al fine di non commettere errori;
*''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. Questo mi favorirebbe anche la portabilità perchè basterebbe che avessi dei supporti nei linguaggi di programmazione per garantire la comunicazione;
*''Affidabilità'';
*''Sicurezza'';
*''Protezione'';
Added lines 1-33:
(:title Sistemi Operativi - Appunti caotici:)
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]
----

%titolo%''':: Appunti caotici ::'''

%center%%sottotitolo%Lezione 2
%center%%sottotitolo%Comunicazione fra processi


!!Pag 2
!!!!Comunicazione
Dal punto di vista astratto ho che due processi, che chiameremo P e Q, vogliono comunicare. Affinchè questa comunicazione avvenga dobbiamo introdurre delle politiche.

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


!!Pag 4


----
[[Torna alla pagina di Sistemi Operativi->SistemiOperativi]]