Tipi di processi
- processi indipendenti:
- ogni processo non può influire su altri processi nel sistema o subirne l’influsso, chiaramente, essi non condividono dati
- processi cooperanti:
- ogni processo può influenzare o essere influenzato da altri processi in esecuzione nel sistema
- i processi cooperanti possono condividere dati
Un’esecuzione concorrente di processi cooperanti richiede meccanismi che consentono ai processi di comunicare tra loro e di sincronizzare le proprie azioni
Concorrenza
I temi centrali della progettazione di un SO sono connessi con la gestione di processi e thread:
- multiprogrammazione: processi multipli in un sistema monoprocessore
- multiprocessing: processi multipli in un sistema multiprocessore
- processi distribuiti: gestione di processi multipli eseguiti su sistemi distribuiti
Concetto fondamentale è quello di concorrenza, che comprende diversi aspetti di progettazione:
- la comunicazione tra processi
- la condivisione e competizione per le risorse
- la sincronizzazione delle attività di processi multipli
- l’allocazione di tempo di processore ai processi, ..
La concorrenza appare almeno in tre diversi contesti:
- applicazioni multiple: la multiprogrammazione è stata inventata per permettere di dividere dinamicamente il tempo di calcolo tra le applicazioni attive
- applicazioni strutturate: alcune applicazioni possono essere programmate efficacemente come insiemi di processi concorrenti
- struttura del SO: spesso anche i SO sono implementati come insiemi di processi
In un sistema a singolo processore con multiprogrammazione i processi sono alternati nel tempo per dare l’illusione dell’esecuzione simultanea
Nonostante l’overhead, l’esecuzione alternata porta benefici dal punto di vista dell’efficienza di esecuzione e della strutturazione dei programmi