Il Sistema Operativo

Gestione dei Processi

Un SO ha una sola prerogativa: coordinare, sincronizzare, gestire ed eseguire i processi. Ogni processo ha un proprio task, ovvero una sua particolare e precisa mansione, e per eseguirla ha bisogno di determinate risorse. Una di queste, forse la più importante, è il processore. Immaginate che il solo processo "elaboratore di testo" si serve del monitor, della memoria, della tastiera etc. (risorse fisiche) e una serie infinita di dati (risorse virtuali) per poter svolgere il proprio compito. 

Così come una strada può avere da una ad numero finito di corsie per poter permettere alle auto di veicolare ordinatamente, così un sistema operativo permette ai processi che sono in numero molto elevato, di essere eseguiti in maniera tale da evitare condizioni critiche (i cosiddetti Crash). Nei moderni sistemi i processi possono essere sincronizzati secondo diversi algoritmi, che operano in maniera differente. Ogni sistema ha un suo algoritmo di gestione dei processi. Il gestore dei processi è detto Scheduler, dall'inglese Archivio. Lo Scheduler ha il compito di scegliere quale processo deve essere eseguito, ovvero quale tra i processi attivi deve essere scelto per l'esecuzione. Immaginate il caso in cui abbiate un numero molto elevato di programmi aperti e che "saltelliate" dall'uno all'altro in maniera causale.

Operare la scelta non è una cosa facile. La scelta viene fatta sulla base di tre criteri: 

1. Prelazione o pre-rilascio: appena un processo prende possesso del processore, può essere momentaneamente sospeso anche se non ha concluso il proprio "servizio".

2. Priorità: ad ogni processo può essere affidato il processore, dal SO, secondo un grado priorità, per il quale un processo può essere più importante di un altro, sulla base della sua natura o della sua minore durata di esecuzione, ad esempio.

Un processo può essere creato (ad esempio quando un file, o quando digitiamo un tasto o quando stampiamo un documento),può essere in esecuzione, oppure essere sospeso momentaneamente per poi riprendere in un secondo momento. Quando si conclude, il processo è terminato. Uno dei principali punti di forza di un SO è proprio la capacità, la velocità e l'affidabilità con cui svolge questo ruolo.



I più importanti algoritmi si basano sulla combinazione di questi tre criteri:

 -FCFS (NO PRIORITY/NO PRE-EMPTIVE): segue il principio del "primo processo pronto". Il primo processo pronto viene eseguito interamente. 
  
 -ROUND-ROBIN (NO PRIORITY/ PREEMPTIVE): segue il principio di "un po' per uno" secondo cui un processo deve rilasciare il processore dopo un intervallo di tempo prestabilito detto time slice.

- SHORTEST-PROCESS-NEXT (PRIORITY/ NON PREEMPTIVE): basato sulla priorità senza rilascio, i processi vengono scelti sulla base della loro durata di esecuzione.  

- MULTILEVEL FEEDBACK (PREEMPTIVE/PRIORITY): è una fusione delle caratteristiche dei precedenti algoritmi.