prof. Nunzio Brugaletta |
atapSO |
EnneBi –
Computer Science
Avanti – Indietro – Inizio
I sistemi multiutente multiprogrammati si basano sul modello a processi. Tutto il software eseguibile sul calcolatore, compreso il sistema operativo, è organizzato in un certo numero di processi. Un processo è un programma in esecuzione. Concettualmente ogni processo ha una propria CPU virtuale ad esso dedicata, in realtà la vera CPU salta rapidamente da un processo ad un altro. Il sistema operativo deve provvedere a dare l'impressione che ogni utente abbia a propria disposizione la macchina con le proprie risorse anche se in ogni momento c'è un solo processo in esecuzione (il processo corrente).
Dal punto di vista dell'utente un processo è qualcosa di dinamico che consente l'esecuzione del programma. Dal punto di vista del kernel un processo è invece un insieme di aree di memoria e di strutture dati che registrano lo stato del processo stesso (immagine del processo).
La parte del kernel adibita alla gestione dei processi si deve occupare di:
costruire e manipolare, in maniera corretta, le strutture di dati che costituiscono l'immagine del processo
realizzare una politica di scheduling (distribuzione della risorsa CPU ai vari processi) in modo da portare avanti, in modo efficiente, l'esecuzione dei vari processi garantendo tempi di risposta accettabili per tutti i processi
gestire il traffico dei processi che necessitano contemporaneamente delle stesse risorse
gestire in modo efficiente la memoria distribuendola ai vari processi che possono utilizzare la CPU e che sono in attesa da più tempo
L'immagine di un processo è costituita da:
Testo: si tratta del codice eseguibile del programma. Il codice può essere rientrante quando ci sono più processi che eseguono lo stesso codice. In questi casi viene tenuta in memoria solo una copia del codice a cui accedono tutti i processi che ne hanno necessità.
Dati statici e dinamici: si tratta della parte specifica di ogni singolo programma (i dati e il codice non rientrante). È compresa anche un'aria di memoria che può espandersi durante l'esecuzione del programma, che contiene i dati le cui dimensioni non possono essere conosciute a priori.
Argomenti, environment: area di memoria contenente i parametri passati nella linea di comando che ha lanciato il programma e l'insieme delle variabili di ambiente.
User Area: contiene le informazioni per la gestione del processo come indirizzi e dimensioni delle aree di memoria utilizzate per il processo, directory corrente, informazioni sull'utente. Il sistema operativo accede a quest'area solo per il processo corrente.
Process table area: contiene tutte le informazioni che devono essere sempre disponibili anche quando il processo non è quello corrente, come stato del processo, identificatore del processo o PID (Process IDentificator) numero unico assegnato al processo che lo identifica in maniera univoca, informazioni per lo scheduling, contatore dei tempi.
http://ennebi.solira.org |
ennebi@solira.org |