Il modello concorrente

Come sappiamo un processore è in grado di svolgere molti processi contemporaneamente (qualora sia multi-core) o di dar la parvenza di poterlo fare (qualora si tratti di un processore single-core).

Senza un modello adeguato c'è il rischio che questi processi simultanei si ostacolino fra di loro.

Il modello concorrente viene incontro a questa esigenza. Esso si basa sul concetto di processo.

Processi

Def. Un processo è un'attività controllata da un programma e che si svolge su un processore.

Da questa prima definizione capiamo già che un processo non è un programma ma una parte di esso. Un programma è un'entità statica, il codice del programma è invariato al termine del suo utilizzo, mentre un processo è un'entità dinamica. Posso avere ad esempio più processi che eseguono lo stesso codice ma che sono indipendenti fra loro.

Assioma di finite progress: ogni processo viene eseguito ad una velocità finita, non nulla, ma sconosciuta.

In ogni momento un processo può essere descritto da tre componenti:

Per fare un esempio pratico di più processi dello stesso programma, si può pensare alle finestre aperte di un browser, ognuna è un processo del programma browser ma sono tra loro totalmente indipendenti. Condividono solo il codice che stanno eseguendo, ma le tre componenti sopra citate sono diverse.

Stati dei processi

Un processo, come abbiamo detto, può essere descritto con uno stato di avanzamento. Gli stati possibili sono i seguenti: