Tutte le informazioni necessarie per tenere traccia di un processo durante la commutazione sono conservate in un pacchetto di dati chiamato blocco di controllo di processo. Il blocco di controllo del processo contiene in genere:
- Un numero ID che identifica il processo
- Puntatori alla posizione del programma e di dati, in cui l’elaborazione ultimo si è verificato
- Registrare i contenuti
- Membri di varie bandiere e interruttori
- Puntatori per i limiti superiore e inferiore di memoria necessaria per il processo
- Un elenco di file aperti dal processo
- La priorità del processo
- lo stato di tutti I dispositivi di I/O necessari al processo
Ogni processo ha uno stato associato. Molti processi non consumano tempo di CPU fino a quando non ottengono una sorta di input. Ad esempio, un processo potrebbe essere in attesa di un tasto da parte dell’utente. Mentre è in attesa per la sequenza di tasti, non utilizza tempo di CPU. Mentre è in attesa, è “sospeso”. Quando arriva il tasto, il sistema operativo cambia il suo stato. Quando lo stato del processo cambia, da in sospeso a attivo, ad esempio, o da sospeso a in esecuzione, le informazioni nel blocco di controllo del processo devono essere utilizzate come i dati in qualsiasi altro programma per dirigere l’esecuzione della porzione di commutazione delle attività del sistema operativo.
Pubblicità
Questo scambio di processi avviene senza interferenze dirette dell’utente e ogni processo riceve cicli di CPU sufficienti per svolgere il proprio compito in un ragionevole lasso di tempo. I problemi possono iniziare se l’utente tenta di avere troppi processi che funzionano allo stesso tempo. Il sistema operativo stesso richiede alcuni cicli della CPU per eseguire il salvataggio e lo scambio di tutti i registri, le code e gli stack dei processi applicativi. Se vengono avviati abbastanza processi e se il sistema operativo non è stato progettato con cura, il sistema può iniziare a utilizzare la maggior parte dei cicli della CPU disponibili per scambiare tra processi piuttosto che eseguire processi. Quando ciò accade, si chiama thrashing e di solito richiede una sorta di intervento diretto dell’utente per interrompere i processi e riportare l’ordine al sistema.
Questo contenuto non è compatibile con questo dispositivo.
Questo contenuto non è compatibile con questo dispositivo.
Un modo in cui i progettisti di sistemi operativi riducono la possibilità di thrashing è riducendo la necessità di nuovi processi per eseguire varie attività. Alcuni sistemi operativi consentono un” process-lite”, chiamato thread, che può gestire tutto il lavoro intensivo della CPU di un processo normale, ma generalmente non si occupa dei vari tipi di I/O e non stabilisce strutture che richiedono l’esteso blocco di controllo del processo di un processo regolare. Un processo può avviare molti thread o altri processi, ma un thread non può avviare un processo.
Finora, tutta la pianificazione di cui abbiamo discusso ha riguardato una singola CPU. In un sistema con due o più CPU, il sistema operativo deve dividere il carico di lavoro tra le CPU, cercando di bilanciare le richieste dei processi richiesti con i cicli disponibili sulle diverse CPU. I sistemi operativi asimmetrici utilizzano una CPU per le proprie esigenze e dividono i processi applicativi tra le CPU rimanenti. I sistemi operativi simmetrici si dividono tra le varie CPU, bilanciando la domanda rispetto alla disponibilità della CPU anche quando il sistema operativo stesso è tutto ciò che è in esecuzione.