Torna alla pagina di Sistemi Operativi
:: Appunti caotici ::
Lezione 1
Processi cooperanti
Pag 1
Sommario
Lo si dirà una volta sola: tutto ciò che si vedrà in questa sezione sulla comunicazione tra processi, riguarda sia questi ultimi che i thread.
Pag 2
Coordinamento
La sincronizzazione della computazione dei processi è necessaria:
- per l'accesso a risorse condivise (tra cui c'è obbligatoriamente almeno il processore), con la condizione che nessun altro processo le modifichi nel momento in cui vengono utilizzati da altri
- per garantire una evoluzione congiunta diretta a raggiungere uno scopo applicativo comune, ovvero nel caso in cui si voglia processi cooperanti nello svolgimento di una data applicazione
Il sistema operativo dovrà garantire in ogni caso che nessun processo possa effettuare azioni illecite (improprie o scorrette) sulla risorsa. Il motto è quindi quello Mentadent: PREVENIRE è meglio che curare.
Cooperazione
...
Pag 3
Processi indipendenti
Alcune caratteristiche:
- non hanno scopi comuni con altri processi, quindi ognuno va per i fatti suoi
- non hanno informazioni condivise. Potrebbero anche avere risorse condivise, ma ognuno guarda al suo orticello e non si impiccia dei fatti degli altri
Processi cooperanti
I processi cooperanti svolgono ognuno un proprio compito preciso, che concorre all'adempimento dello scopo applicativo comune.
Possono avere due tipi di interazioni:
- scambio di informazioni (comunicazione)
- coordinamento della computazione (sincronizzazione), ad esempio quando un processo ha bisogno di sapere se un altro ha terminato le sue operazioni
Lo svantaggio dei processi cooperanti è che a causa del controllo dell'evoluzione dello stato dei processi (per sincronizzarsi) perdo un po' più tempo rispetto a un processo monolitico.
Pag 4
Vantaggi della cooperazione
Elenchiamo i vantaggi:
- modularità, cioè pensare l'applicazione focalizzandomi sui singoli aspetti senza preoccuparmi delle interazioni temporali con gli altri
- parallelizzazione, che sfrutta in modo nativo l'eventuale disponibilità di più processori
- scalabilità, che permette di ampliare le capacità operative dell'applicazione aggiungendo nuove istanze dello stesso processo (ad esempio utile per un server web)
- specializzazione dei singoli processi
- qualità del progetto e della realizzazione, dal momento che posso assegnare l'implementazione dei processi che si occupano dei vari aspetti (es. controllo, acquisizione, interfaccia, ecc) ad esperti specifici di quell'ambito di programmazione
Esempi
...
Torna alla pagina di Sistemi Operativi