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

Hide minor edits - Show changes to markup

Changed lines 55-56 from:

E' solo in fase di ricevzione che si completa l'identificazione delle identità da parte dei processi.

to:

E' solo in fase di ricezione che si completa l'identificazione delle identità da parte dei processi.

Changed lines 101-102 from:

Una struttura uno a molti mi consente di avere più processi di servizio ed un unico processo richiedente. Questa tecnica mi va bene quando questo singolo processo ha più richieste e vuole che siano tutte soddisfate contemporaneamente. Questo è ovviamente consentito fin tanto che tutti i processi di servizio sono liberi.

to:

Una struttura uno a molti mi consente di avere più processi di servizio ed un unico processo richiedente, che verrà sempre servito per quanto possa rompere con le sue richieste.

I processi che si occuperanno del servizio saranno delle copie dello stesso processo, pronte a servire ognuna una richiesta di entrata spacifica. Ciò è reso possibile dal fatto che si da per assunto che tali processi serventi compino operazioni di I/O, così che abbiano tempi morti nello sfruttamento del processore, durante i quali possa avvenire la turnazione.

Questa tecnica è auspicabile quando ho un singolo processo che ha più richieste e che vuole vengano soddisfatte contemporaneamente.

Changed lines 108-109 from:

In questa tecnica ho più processi di servizio e più processi che effettuano richieste. Nel metodo uno a molti potevo soddisfare in parallelo più richieste effetuate da un singolo processo, potevo però avere momenti in cui alcuni processi di servizio che rimanevano in stato di attesa. Con questo metodo ottimizzo quei tempi morti soddisfando richieste effettuate da altri processi.

to:

In questa tecnica ho più processi di servizio e più processi che effettuano richieste. Nel metodo uno a molti potevo soddisfare in parallelo più richieste effetuate da un singolo processo, potevo però avere momenti in cui alcuni processi di servizio rimanevano in stato di attesa. Con questo metodo ottimizzo quei tempi morti soddisfacendo richieste effettuate da altri processi.

Changed lines 34-38 from:

Funzioni(1)

La mailbox prima di essere utilizzata deve essere creata, e se in un secondo momento non serve più la si può cancellare. Vengono quindi messe a disposizione delle funzioni che permettono tali operazioni:

  • create(M): crea la mailbox, M è il nome della mailbox che si vuole creare;
to:

Funzioni (1)

La mailbox prima di essere utilizzata deve essere creata, e se in un secondo momento non serve più la si può cancellare. Vengono quindi messe a disposizione delle funzioni che permettono tali operazioni:

  • create(M): crea la mailbox, M è il nome simbolico della mailbox che si vuole creare;
Changed lines 40-48 from:

Funzioni(2)

Vengono fornite anche delle funzioni apposite per l'ivio e la ricezioni di messaggi.
Invio: send(M, messaggio)
Questa funzione deposita i messaggi nella mailbox e risulta bloccante in base alla capacità della mailbox.

  • Capacità illimitata: funzione non bloccante, il processo mittente depositerà sempre il suo messaggio dato che non troverà mai la mailbox piena;
  • Capacità limitata: la funzione può essere bloccante se la mailbox è piena, quindi costringe il processo mittente ad aspettare che nella mailbox si liberi spazio per far depositare il suo messaggio;
to:

Funzioni (2)

Vengono fornite anche delle funzioni apposite per l'invio e la ricezioni di messaggi.

Invio: send(M, messaggio)

Questa funzione deposita i messaggi nella mailbox e risulta bloccante in base alla capacità della mailbox:

  • Capacità illimitata: funzione non bloccante, il processo mittente depositerà sempre il suo messaggio dato che non troverà mai la mailbox piena. Per realizzarla potrei utilizzare ad esempio una lista a puntatori espliciti, quindi con uno spazio allocato dinamicamente. Bisogna precisare tuttavia che il termine "illimitato" è teorico, dal momento che potrei comunque esaurire lo spazio di memoria del sistema. Se quindi da un punto di vista fisico potrebbe risultare (caso limite) bloccante, dal punto di vista logico non lo è mai;
  • Capacità limitata: la funzione può essere bloccante se la mailbox è piena, quindi costringe il processo mittente ad aspettare che nella mailbox si liberi spazio per far depositare il suo messaggio;
Changed lines 51-52 from:

Ricezione: ''receive(M, messaggio).\\

to:

Ricezione: ''receive(M, messaggio).

Added lines 55-56:

E' solo in fase di ricevzione che si completa l'identificazione delle identità da parte dei processi.

Changed lines 59-60 from:

Ci sono anche delle funzioni di invio e di ricezione condizionale.
Invio Condizionale: cond_send(M, messaggio): error_status\\

to:

Ci sono anche delle funzioni di invio e di ricezione condizionale.

Invio Condizionale: cond_send(M, messaggio): error_status

Changed lines 66-67 from:

Ricezione Condizionale: cond_receive(M, messaggio): error_status\\

to:

Ricezione Condizionale: cond_receive(M, messaggio): error_status

Changed lines 72-77 from:

Le politiche di sincronizzazione sono stabilite sempre in base alla capacità della mailbox:

  • Illimitata: ho una comunicazioe Asincrona, ovvero il mittente depone il suo messaggio indipendentemente da ciò che sta facendo il ricevente;
  • Nulla: ho una comunicazione Sincrona, nel caso in cui il processo mittente non trovi spazio per deporre il suo messaggio deve aspettare un processo ricevente che prelevi un messaggio, liberando di conseguenza spazio. Così il processo mittente che era rimasto bloccato potrà depositare il suo messaggio.
to:

Le politiche di sincronizzazione sono stabilite sempre in base alla capacità della mailbox:

  • Illimitata: ho una comunicazioe Asincrona, ovvero il mittente depone il suo messaggio indipendentemente dallo stato di computazione del processo ricevente;
  • Nulla: ho una comunicazione Sincrona. Ho infatti un processo mittente che non trova spazio per deporre il suo messaggio, ed è dunque obbligato a mettersi in attesa. Quando un processo Q invocherà una receive, lo troverà ancora in quello stato, e a questo punto i due processi cominceranno a passarsi l'informazione direttamente in modo sincrono. Questo meccanismo prende il nome di rendez-vou, ed implica che P sappia a che punto della computazione si trovi il processo ricevente quando richiede la comunicazione;
Changed lines 82-87 from:

Ci sono varie tecniche di ordinamento dei messaggi all'interno della mailbox, tali tecniche si riferiscono anche ai processi che sono in attesa. Tali tecniche sono:

  • FIFO: First In Firt Out, ovvero il primo messaggio che entra sarà il primo ad uscire, lo stesso per i processi;
  • Priorità: viene stabilita una priorità dei messaggi, coloro che hanno priorità più alta saranno i primi ad essere prelevati. Avviene lo stesso per i processi che devono depositare dei messaggi, coloro che hanno priorità più alta depositano per primi i messaggi;
to:

Ci sono varie tecniche di ordinamento dei messaggi all'interno della mailbox, tali tecniche si riferiscono anche ai processi che sono in attesa. Tali tecniche sono:

  • FIFO: First In Firt Out, ovvero il primo messaggio che entra sarà il primo ad uscire, lo stesso per i processi;
  • Priorità: viene stabilita una priorità dei messaggi, coloro che hanno priorità più alta saranno i primi ad essere prelevati. Avviene lo stesso per i processi che devono depositare dei messaggi, coloro che hanno priorità più alta depositano per primi i messaggi;
Changed lines 88-89 from:

Dato che la mailbox non è proprietà del processo ma bensì del sistema operativo, posso stabilire delle proprietà riguardanti la mailbox. Posso attribuire la mailbox ad un processo proprietario, il quale solo lui riceve può ricevere messaggi, mentre tutti gli altri processi possono solo inviarli. Se il processo proprietario scompare, anche la mailbox scompare di conseguenza.

to:

Dato che la mailbox non è proprietà del processo ma bensì del sistema operativo (ricordiamo che è nel suo spazio di indirizzamento!), posso stabilire delle proprietà su di essa. Posso attribuire la mailbox ad un processo proprietario, l'unico a poter ricevere messaggi, mentre tutti gli altri processi possono solo inviarli. Se il processo proprietario scompare, la mailbox scompare con esso.

Added lines 94-95:

Notare anche come la struttura dati mailbox disgiunga naturalmente il processo mittente dal ricevente.

Changed lines 97-98 from:

Una differenza sostanziale nella comuncazione molti a uno rispetto a quella precente è che ho un solo processo di servizio. Nel caso un cui il processo di servizio schiatti se ne ristabilisce immediatamente un altro, senza che i processi che hanno fatto richiesta se accorgino. L'unico ad accorgersene è il processo che stava erogando il servizio.

to:

Una differenza sostanziale nella comunicazione molti a uno rispetto a quella precedente è che ho un solo processo di servizio (S, nello schema). Nel caso un cui il processo di servizio schiatti, il sistema operativo può farlo ripartire eseguendone una copia (a cui cambierà l'id). I richiedenti non si accorgono di nulla, tranne quello che S stava servendo nel momento in cui è esploso (il nuovo servizio non sa che c'era una richiesta pendente).

Deleted line 9:

non sono sicuro sulla parte di sincronizzazione sotto Pag6. Controllare!!

Changed lines 12-13 from:

Con questa tecnica il processo mittente genererà il messaggio ma non saprà chi sarà il ricevente. Deposita quindi il messaggio nella mailbox (o porta), la quale è una struttura dati presente nel sistema operativo. Il processo ricevente prelevererà poi il messaggio accedendo a tale struttura dati.

to:

Con questa tecnica il processo mittente genera il messaggio senza sapere chi sarà il ricevente; si tratta quindi di comunicazione indiretta.

Il messaggio viene depositato in una mailbox (detta anche porta), una struttura dati presente nel sistema operativo, caratterizzata da un nome cui si farà riferimento per accedere ai messaggi da lei contenuta. Il processo ricevente prelevererà il messaggio accedendo ad essa.

Changed lines 17-26 from:

Il messaggio può contenere diverse informazioni, come:

  • Identità del processo mittente;
  • Mailbox destinataria;
  • Informazioni da trasmettere;
  • Eventuali altre informazioni di supporto relative alla gestione della mailbox.
to:

Il messaggio può contenere diverse informazioni, come:

  • Identità del processo mittente;
  • Mailbox destinataria;
  • Informazioni da trasmettere;
  • Eventuali altre informazioni di supporto relative alla gestione della mailbox, ad esempio se vanno tolti messaggi con deadline scaduta o come ordinare i messaggi.
Changed lines 27-32 from:

La mailbox può avere capacità:

  • Illimitata: possono essere immessi un numero illimitati di messaggi;
  • Limitata: c'è un numero limitato di messaggi che possono essere immessi;
to:

Va anzitutto ricordato che non stiamo assegnando i messaggi ad una coppia di processi, ma li stiamo inserendo in una struttura accessibile (teoricamente) da tutti. Certo, esisteranno comunque delle politiche di accesso: solo e tutti quei processi che avranno ottenuto dal sistema operativo i diritti di lettura potranno leggere i messaggi.

La mailbox può avere capacità:

  • Illimitata: possono essere immessi un numero illimitati di messaggi;
  • Limitata: c'è un numero limitato di messaggi che possono essere immessi;
Changed lines 99-110 from:
to:

Ci possono essere comunicazioni con molti possibili mittenti o riceventi. Ogni comunicazione coinvolgerà sempre minimo due processi, ma la struttura della mailbox consente che ci siano più processi mittenti e più processi riceventi che possono partecipare nella comunicazione. La struttura della mailbox non mi consente però di sapere a priori chi siano tali processi.

Comunicazione molti a uno

Una differenza sostanziale nella comuncazione molti a uno rispetto a quella precente è che ho un solo processo di servizio. Nel caso un cui il processo di servizio schiatti se ne ristabilisce immediatamente un altro, senza che i processi che hanno fatto richiesta se accorgino. L'unico ad accorgersene è il processo che stava erogando il servizio.

Pag 9

Comunicazioni uno a molti

Una struttura uno a molti mi consente di avere più processi di servizio ed un unico processo richiedente. Questa tecnica mi va bene quando questo singolo processo ha più richieste e vuole che siano tutte soddisfate contemporaneamente. Questo è ovviamente consentito fin tanto che tutti i processi di servizio sono liberi.

Comunicazione molti a molti

In questa tecnica ho più processi di servizio e più processi che effettuano richieste. Nel metodo uno a molti potevo soddisfare in parallelo più richieste effetuate da un singolo processo, potevo però avere momenti in cui alcuni processi di servizio che rimanevano in stato di attesa. Con questo metodo ottimizzo quei tempi morti soddisfando richieste effettuate da altri processi.

Added lines 81-83:

Caratteristiche e problemi

Una caratteristica di questa tecnica è che non ho un'indentificazione dei processi che comunicano, quindi ho una comunicazione indiretta. La sincronizzazione è gestita in maniera automatica da parte del sistema operativo.

Changed lines 85-99 from:
to:

Ordinamento delle code dei messaggi e dei processi in attesa

Ci sono varie tecniche di ordinamento dei messaggi all'interno della mailbox, tali tecniche si riferiscono anche ai processi che sono in attesa. Tali tecniche sono:

  • FIFO: First In Firt Out, ovvero il primo messaggio che entra sarà il primo ad uscire, lo stesso per i processi;
  • Priorità: viene stabilita una priorità dei messaggi, coloro che hanno priorità più alta saranno i primi ad essere prelevati. Avviene lo stesso per i processi che devono depositare dei messaggi, coloro che hanno priorità più alta depositano per primi i messaggi;
  • Scadenza: un'altra tecnica per stabilire l'ordinamento con cui i mesaggi potranno essere prelevati è utilizzando un tempo massimo di attesa. Il problema che potrebbe sorgere con la priorità è che un messaggio (o precesso) con priorità bassa potrebbe rimanere indefinitivamente in attesa fin tanto che c'è un messaggio (o processo) con priorità più alta.

Proprietà della mailbox

Dato che la mailbox non è proprietà del processo ma bensì del sistema operativo, posso stabilire delle proprietà riguardanti la mailbox. Posso attribuire la mailbox ad un processo proprietario, il quale solo lui riceve può ricevere messaggi, mentre tutti gli altri processi possono solo inviarli. Se il processo proprietario scompare, anche la mailbox scompare di conseguenza.

Pag 8

Comunicazione con molti possibili processi mittenti o riceventi

Changed line 10 from:
to:

non sono sicuro sulla parte di sincronizzazione sotto Pag6. Controllare!!

Changed lines 65-66 from:

Questa funzione

to:

Questa funzione deposita il messaggio nella mailbox solo se trova spazio al suo interno. Tale funzione quindi non è bloccante, se non trova spazio non costringe il processo a rimanere in attesa che si liberi spazio sufficiente nella mailbox per poter depositare il messaggio. Viene quindi introdotto una condizione, che mi ritorna errore nel caso il processo non riesca a depositare il messaggio.

Funzioni(5)

Ricezione Condizionale: cond_receive(M, messaggio): error_status
Tale funzione riceve un messaggio solo se ce ne è almeno uno nella mailbox. In caso contrario ritorna la condizione di errore, non bloccando di conseguenza il processo ricevente.

Changed lines 72-80 from:
to:

Sincronizzazione

Le politiche di sincronizzazione sono stabilite sempre in base alla capacità della mailbox:

  • Illimitata: ho una comunicazioe Asincrona, ovvero il mittente depone il suo messaggio indipendentemente da ciò che sta facendo il ricevente;
  • Nulla: ho una comunicazione Sincrona, nel caso in cui il processo mittente non trovi spazio per deporre il suo messaggio deve aspettare un processo ricevente che prelevi un messaggio, liberando di conseguenza spazio. Così il processo mittente che era rimasto bloccato potrà depositare il suo messaggio.
  • Limitata: comunicazione bufferizzata.
Added lines 1-72:

(:title Sistemi Operativi - Appunti caotici:) Torna alla pagina di Sistemi Operativi


 :: Appunti caotici ::

Lezione 5 Comunicazione con Mailbox

Pag 2

Modello della comunicazione con mailbox

Con questa tecnica il processo mittente genererà il messaggio ma non saprà chi sarà il ricevente. Deposita quindi il messaggio nella mailbox (o porta), la quale è una struttura dati presente nel sistema operativo. Il processo ricevente prelevererà poi il messaggio accedendo a tale struttura dati.

Messaggi

Il messaggio può contenere diverse informazioni, come:

  • Identità del processo mittente;
  • Mailbox destinataria;
  • Informazioni da trasmettere;
  • Eventuali altre informazioni di supporto relative alla gestione della mailbox.

I messaggi possono avere dimesione Fissa o ''Variabile.

Pag 3

Mailbox

La mailbox può avere capacità:

  • Illimitata: possono essere immessi un numero illimitati di messaggi;
  • Limitata: c'è un numero limitato di messaggi che possono essere immessi;
  • Nulla: nessun messaggio può essere posto nella mailbox.

Funzioni(1)

La mailbox prima di essere utilizzata deve essere creata, e se in un secondo momento non serve più la si può cancellare. Vengono quindi messe a disposizione delle funzioni che permettono tali operazioni:

  • create(M): crea la mailbox, M è il nome della mailbox che si vuole creare;
  • delete(M): cancella la mailbox M.

Pag 4

Funzioni(2)

Vengono fornite anche delle funzioni apposite per l'ivio e la ricezioni di messaggi.
Invio: send(M, messaggio)
Questa funzione deposita i messaggi nella mailbox e risulta bloccante in base alla capacità della mailbox.

  • Capacità illimitata: funzione non bloccante, il processo mittente depositerà sempre il suo messaggio dato che non troverà mai la mailbox piena;
  • Capacità limitata: la funzione può essere bloccante se la mailbox è piena, quindi costringe il processo mittente ad aspettare che nella mailbox si liberi spazio per far depositare il suo messaggio;
  • Capacità nulla: la funzione è bloccante se non c'è un processo in ricezione.

Funzioni(3)

Ricezione: ''receive(M, messaggio).
Tale funzione consente di ricevere il messaggio dalla mailbox. Risulta bloccante se non c'è almeno un messaggio da ricevere.

Pag 5

Funzioni(4)

Ci sono anche delle funzioni di invio e di ricezione condizionale.
Invio Condizionale: cond_send(M, messaggio): error_status
Questa funzione

Pag 6

Pag 7


Torna alla pagina di Sistemi Operativi