Cap 3: descrizione e controllo dei processi
Stati dei processi
Un SO deve soddisfare principalmente le seguenti richieste:
- Intercalare l'esecuzione di diversi processi per massimizzare l'uso del processore, fornendo un tempo di risposta ragionevole
- Allocare risorse ai processi, usando una specifica politica ed evitando lo stallo
- Supportare la comunicazione tra processi e la loro creazione a livello utente
Un processore deve eseguire sequenzialmente istruzioni macchina, che risiedono nella memoria principale come programmi.
Per processo (o task) si intende un insieme di istanze di un programma in esecuzione completate in modo sequenziale. Esso è costituito dall'insieme di istruzioni e dai dati elaborati. Le prime possono essere elencate in una traccia che caratterizza il comportamento del singolo task.
Quando si hanno più processi rispetto ai processori, il SO consente l'esecuzione solo per un tot di tempo permettendo l'uso della CPU a tutti quanti. Così servendosi di un allocatore alterna più processi da completare, saltando quelli in attesa di un evento.
Per gestire al meglio il collegamento tra processi viene introdotto il concetto di stato:
Esistono vari modelli, il più semplice è il modello a due stati. Un processo può essere eseguito dal processore (RUNNING) o no (NOT-RUNNING).
Un processo viene creato e inserito nel gruppo dei processi not-running. Poi viene preso ed eseguito, lo stato passa a running. Esso potrebbe terminare o essere messo in pausa perché è finito il suo quanto di tempo o è in attesa di un evento I/O.
Già da questo facile schema si può capire che il SO deve conservare traccia del processo, incluso lo stato corrente e la locazione di memoria.
I processi non eseguiti sono memorizzati in qualche coda tramite puntatori oppure blocchi di dati. Essa può funzionare sia come FIFO (first in first out) sia come coda di priorità (il processo con priorità più alta viene selezionato).
Creazione di un processo
La creazione di un processo avviene tramite due azioni fatte dal SO:
- Costruisce le strutture dati
- Alloca lo spazio di indirizzamento
Le cause sono principalmente 4:
- In ambiente non interattivo (batch) viene ricevuto un nuovo job batch (programmi dove non è richiesto l'intervento dell'utente)
- Un nuovo utente si collega al sistema
- Per svolgere una funzione per conto di un programma utente affinché non ci sia attesa (es. stampa)
- A seguito di una richiesta di un processo (generazione di processo) per sfruttare il parallelismo
Terminazione dei processi
La terminazione dei processi può avvenire per molti più motivi. Essi sono:
- Terminazione normale
- Superamento del tempo massimo specificato
- Memoria non disponibile
- Violazione dei limiti di memoria
Cap 3: descrizione e controllo dei processi
Stati dei processi
Un SO deve soddisfare principalmente le seguenti richieste:
- Intercalare l'esecuzione di diversi processi per massimizzare l'uso del processore, fornendo un tempo di risposta ragionevole
- Allocare risorse ai processi, usando una specifica politica ed evitando lo stallo
- Supportare la comunicazione tra processi e la loro creazione a livello utente
Un processore deve eseguire sequenzialmente istruzioni macchina, che risiedono nella memoria principale come programmi.
Per processo (o task) si intende un insieme di istanze di un programma in esecuzione completate in modo sequenziale. Esso è costituito dall'insieme di dati elaborati, le prime possono essere elencate in una traccia che caratterizza il comportamento di un singolo task.
Quando si hanno più processi rispetto ai processori, il SO consente l'esecuzione solo per un tot di tempo permettendo l'uso della CPU a tutti quanti. Così servendosi di un allocatore alterna più processi da completare, saltando quelli in attesa di un evento.
Per gestire al meglio il collegamento tra processi viene introdotto il concetto di stato.
Esistono vari modelli, il più semplice è il modello a due stati.
Un processo può essere eseguito dal processore (RUNNING) o no (NOT-RUNNING).
Un processo viene creato e inserito nel gruppo dei processi not-running. Poi viene preso ed eseguito, lo stato passa a running. Esso potrebbe terminare o essere messo in pausa perché è finito il suo quanto di tempo o è in attesa di un evento I/O.
Già da questo facile schema si può capire che il SO deve conservare traccia del processo, incluso lo stato corrente e la locazione di memoria.
I processi non eseguiti sono memorizzati in qualche coda tramite puntatori oppure blocchi di dati. Essa può funzionare sia come FIFO (first in first out) sia come coda di priorità (il processo con priorità più alta viene selezionato).
Creazione di un processo
La creazione di un processo avviene tramite due azioni fatte dal SO:
- Costruisce le strutture dati
- Alloca lo spazio di indirizzamento
Le cause sono principalmente 4:
- In ambiente non interattivo (batch) viene ricevuto un nuovo job batch (programmi dove non è richiesto l'intervento dell'utente)
- Un nuovo utente si collega al sistema
- Per svolgere una funzione per conto di un programma utente affinché non ci sia attesa (es. stampa)
- A seguito di una richiesta di un processo (generazione di processo) per sfruttare il parallelismo
Terminazione dei processi
La terminazione dei processi può avvenire per molti più motivi. Essi sono:
- Terminazione normale
- Superamento del tempo massimo specificato
- Memoria non disponibile
- Violazione dei limiti di memoria
- Errore di protezione
- Tempo scaduto
- Fallimento di un'operazione di I/O
- Istruzione non valida
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Sistemi distribuiti - teoria completa
-
Sistemi Elettronici
-
Esame Sistemi dinamici - Teoria
-
Appunti teoria Sistemi informativi