Processi Flashcards
Definizione di un processo
Un processo è un programma in esecuzione e comprende:
- l’attività corrente, rappresentata dal valore del contatore del programma e dal contenuto dei registri della CPU;
* normalmente comprende anche la propria pila (stack), contenente a sua volta i dati temporanei, come i parametri di un metodo, gli indirizzi di rientro e le variabili locali, e una sezione di dati contenente le variabili globali.
* Un processo può includere uno heap, ossia della memoria dinamicamente allocata durante l’esecuzione del processo.
Qual è la differenza tra programma e processo?
Un programma è un’entità passiva, mentre un processo è un’entità attiva.
Quando un programma diventa processo?
Un programma diventa processo quando il file eseguibile che lo contiene è caricato in memoria.
Cosa si intende per PCB e che informazioni contiene?
Ogni processo è rappresentato nel sistema operativo da un blocco di controllo di un processo (process control block, PCB). Un blocco di controllo di un processo contiene molte informazioni connesse a un processo specifico, tra cui le seguenti:
- Stato del processo.
- Contatore di programma. Il contatore di programma contiene l’indirizzo della successiva istruzione da eseguire per tale processo.
- Registri di CPU. I registri variano in numero e tipo secondo l’architettura del calcolatore. Essi comprendono accumulatori, registri d’indice, puntatori alla cima delle strutture a pila (stack pointer), registri d’uso generale e registri contenenti informazioni relative ai codici di condizione. Quando si verifica un’interruzione della CPU, si devono salvare tutte queste informazioni insieme con il contatore di programma, in modo da permettere la corretta esecuzione del processo in un momento successivo.
- Informazioni sullo scheduling della CPU. Queste informazioni comprendono la priorità del processo, puntatori alle code di scheduling e tutti gli altri parametri di scheduling.
- Informazioni sulla gestione della memoria. Queste informazioni si possono esprimere attraverso i valori dei registri di base e di limite, le tabelle delle pagine o le tabelle dei segmenti, a seconda del sistema di gestione della memoria usato dal sistema operativo.
- Informazioni di contabilizzazione delle risorse. Queste informazioni comprendono il tempo d’uso della CPU e il tempo reale d’utilizzo della stessa, i limiti di tempo, i numeri dei processi, e così via.
- Informazioni sullo stato dell’I/O. Queste informazioni comprendono la lista dei dispositivi di I/O assegnati a un determinato processo, l’elenco dei file aperti, e così via.
Cosa si intende per ready queue?
La ready queue è una coda dove risiedono i* processi che sono pronti per essere eseguiti.*
Come viene memorizzata solitamente una ready queue?
Questa coda generalmente si memorizza come una lista concatenata:
un’intestazione della coda dei processi pronti contiene i puntatori al primo e all’ultimo PCB dell’elenco, e ciascun PCB è esteso su un campo puntatore che indica il successivo processo contenuto nella coda dei processi pronti.
Come sceglie il processo da eseguire, il sistema operativo?
Il sistema operativo, incaricato di selezionare i processi dalle suddette code, compie la selezione per mezzo di un opportuno scheduler.
Cosa si intende con il termine spooling?
Spesso, in un sistema a lotti, accade che si sottopongano più processi di quanti se ne possano eseguire immediatamente. Questi lavori si trasferiscono in dispositivi di memoria secondaria, generalmente dischi, dove si tengono fino al momento dell’esecuzione (spooling).
Qual è il compito dello scheduler a lungo termine (job scheduler)?
Il job scheduler gestisce la ready queue. Si occupa di di scegliere quali di stabilire quali processi devono essere ammessi nella coda dei processi attivi. Pertanto, egli controlla il grado di multiprogrammaizone, cioè il numero di processi in memoria.
Qual è il compito dello scheduler a breve termine (CPU scheduler)?
Lo scheduler a breve termine si occupa di selezionare, dalla coda dei processi attivi, quale processo deve avere accesso alla CPU in un determinato momento.
Qual è la differenza tra scheduling a breve termine e a lungo termine?
In generale, lo scheduler a lungo termine opera a una frequenza molto più bassa rispetto allo scheduler a breve termine, poiché deve solo prendere decisioni a lungo termine sulle risorse del sistema, mentre lo scheduler a breve termine deve operare a una frequenza molto più alta per gestire l’accesso alla CPU in modo equo e rapido.
A cosa serve lo scheduler a medio termine?
Esistono sistemi operativi in cui lo scheduler a lungo termine può essere assente o minimo e viene introdotto un livello di scheduling intermedio, utile nell’implementazione del processo di swapping. L’idea alla base di un tale scheduler è che a volte può essere vantaggioso eliminare processi dalla memoria (e dalla contesa attiva per la CPU), riducendo il grado di multiprogrammazione del sistema. In seguito, il processo può essere reintrodotto in memoria, in modo che la sua esecuzione riprenda da dove era stata interrotta. Il processo viene rimosso e successivamente caricato in memoria dallo scheduler a medio termine.
Cosa si intende per Context switching e cosa comprende?
Le interruzioni permettono al sistema di sospendere il lavoro attuale della CPU per eseguire routine del kernel. In presenza di una interruzione, il sistema deve salvare il contesto del processo corrente, per poterlo poi ripristinare quando il processo stesso potrà ritornare in esecuzione.
Il contesto è rappresentato all’interno del PCB del processo, e comprende:
- i valori dei registri della CPU
- lo stato del processo
- informazioni relative alla gestione della memoria.
Questa procedura è nota col nome di cambio di contesto (context switch).
Come fa il sistema operativo a identificare un processo?
La maggior parte dei sistemi operativi identifica un processo per mezzo di un numero univoco, detto identificatore del processo o pid (process identifier). Si tratta solitamente di un intero.
Cosa si intende per terminazione a cascata?
In alcuni sistemi, se un processo termina si devono terminare anche i suoi figli, indipendentemente dal fatto che la terminazione del genitore sia stata normale o anormale, determinando, ciò che viene definita, una terminazione a cascata.