I processi
Processo - generalità Astrazione di un attività; Entità attiva che ha un suo percorso evolutivo; Attività = azione dedicata al raggiungimento di uno scopo Il processo esegue istruzioni per svolgere la propria attività
Processo - generalità Programma sequenza d istruzioni + dati oggetto statico! Processo sequenza di azioni per l esecuzione di un programma entità dinamica attività di esecuzione di un programma. Contesto all interno del quale un programma viene eseguito; Codice + dati +stack + attributi utili per l esecuzione
Creazione di processi Esempi di eventi che generano la creazione di un processo Inizializzazione del sistema Quando il SO viene lanciato, vengono generalmente creati diversi processi eseguiti in foreground interagiscono con utenti ed eseguono lavoro per loro. Altri in background (demoni) Non interagiscono con l utente. Sono posti in esecuzione periodicamente per assolvere un lavoro. es può essere progettato per ricevere la mail in arrivo, accettare richieste in arrivo di pag. Web. Spooler della stampante (premendo CTR-ALT-CANC in Window si vede cosa c è in esecuzione).
Creazione di processi 2. Chiamata di sistema da parte di un processo Un processo in esecuzione può effettuare chiamate di sistema per creare uno o più nuovi processi ad esempio per aiutarlo a compiere il suo lavoro. La creazione di nuovi processi è particolarmente utile quando il lavoro da fare può essere facilmente espresso in termini di processi diversi e collegati, ma comunque indipendenti. ES: scopo prelevare quantità di dati dalla rete per poi elaborarli Sol: creare un processo che prende i dati e li mette in un buffer condiviso creare un secondo processo che li elabora parallelamente quando ci sono dati nel buffer
Creazione di processi 3 Richiesta utente Nei sistemi interattivi gli utenti possono creare un processo lanciando un comando o... cliccando su un icona. Queste azioni provocano la creazione di un nuovo processo che esegue il programma selezionato
Terminazione dei processi: esempi Terminazione con errore (volontaria) Il processo scopre un errore fatale: ad esempio se viene passato ad un processo un parametro sbagliato cc foo.c // il compilatore non trova il file foo.c e semplicemente termina Terminazione normale (volontaria) Il processo ha finito il proprio lavoro
Terminazione dei processi: esempi Kill da parte di un altro processo Un processo esegue una chiamata di sistema dicendo al SO di uccidere qualche altro processo (il processo killer deve avere l autorità necessaria!) Terminazione con errore fatale (involontaria) Causato dal processo, spesso dovuto ad un errore di programmazione (bug); esecuzione di istruzioni illegali; riferimenti a parte di memoria che non esistono; divisione per 0
Stati di un processo... Lo stato di un processo caratterizza una particolare fase dell attività del processo stesso. Esempio un modello a 3 stati: Un processo può essere in attesa di un qualche evento (impossibilitato di essere messo in esecuzione, stato di waiting) Un processo può essere posto in esecuzione dalla cpu (stato di running) Un processo può essere pronto per andare in esecuzione
Stati di un processo e transizioni di stato: es un modello a 3 stati Sta utilizzando il processore scheduling esecuzione Richiesta I/O terminazione Attesa di un qualche evento: Es. completamento di un operazione di I/O creazione pronto I/O terminato attesa Potenzialmente in condizione di poter usare il processore che è occupato da un altro processo
...e transazioni di stato Tra questi stati sono possibili delle transazioni che si attuano in seguito a certi eventi Blocked ready (I/O completato) Es dati di inpu disponibili Running ready Lo scheduler scegli un altro processo Running blocked (attesa I/O) Es: un processo si blocca in attesa di input Ready running : lo scheduler seleziuona un processo da mandare in esecuzione Politiche di scheduling.
Es : un modello a 5 stati Running Ready Blocked New Exit
In genere le cose sono più complicate: UNIX Process States
UNIX Process States
Implementazione dei processi - generalità - Come viene realizzato questo modello? Per implementare il modello a processi il SO mantiene una tabella (tabella de processi) con un elemento (entry) dedicato ad ogni processo
Esempio: tipiche informazioni che possono risiedere in un record della tabella
Come appare fisicamente un processo? Nella sua forma minima un processo contiene : programmi, dati, stack, attributi Attributi : Generalmente le informazioni relative al controllo del processo sono mantenuta in una tabella Process control block Un sistema sofisticato di multiprogrammazione richiede una gran quantità di informazioni riguardo a ciascun processo. In generale queste informazioni risiedono in una tabella process control block, e sitemi diversi la organizzano in modi diversi, noi consideriamo il tipo senza considerare ora l organizzazione Per Immagine del processo si intende l insieme di programmi, dati, stack e attributi
Immagine del processo: elementi tipici Process control block informazioni relative agli attibuti per il controllo del processo. Un sistema sofisticato di multiprogrammazione richiede una gran quantità di informazioni riguardo a ciascun processo Stack di sistema Ciascun processo può avere uno o più stack di sistema (LIFO). Uno stack è utilizzato per memorizzare parametri e indirizzi per le chiamate di procedura di sistema Programma utente Programma che deve essere eseguito Dati utente Parte modificabile dello spazio utente: può includere dati programma, stack utente
Process Control Block Table (elementi tipici) Informazioni che il so deve disporre per controllare e gestire un processo La PCB è probabilmente la struttura dati più importante del SO Strutturazione dei dati Un processo può essere collegato ad altri in una coda o in qualche altra struttura Ad esempio tutti i processi in uno stato di attesa possono essere collegati in una coda Informazioni sullo stato del processore Valore del program counter, PSW Contenuto di tutti i registri Informazioni di controllo del processo Schedulazioni ed informazioni di stato Informazioni sui file e sulle risorse hardware attualmente in uso Informazioni sull utilizzo della memoria centrale e secondaria Identificativo dell utente proprietario (importante in multiutenza!!)
Process Control Block Table (elementi tipici) Identificazione del processo Identificativo del processo (nome o numero progressivo univoco) Identificativo utente
Code dei processi non in esecuzione
nota La locazione dell immagine del processo dipenderà dallo schema di gestione della memoria in uso: nel caso più semplice, l immagine del processo è mantenuta come blocco contiguo in memoria secondaria usualmente su disco. Affinché il sistema possa gestire il processo almeno una porzione della sua immagine deve essere caricata in memoria centrale. Il so deve conoscere la posizione di ciascun processo su disco e nella memoria principale La maggior parte dei SO moderni utilizza uno schema della gestione della memoria in cui l immagne del processo si compone di un insieme di blocchi non necessariamente contigui
Nota: tabella dei processi e immagine del processo Per ogni processo vi è una entry nella tabella dei processi; tale entry dovrà contenere almeno un riferimento all immagine del processo; Nel caso, come generalmente accade nei sist. moderni, l immagine del processo sia caratterizzata da blocchi (segmenti) non contigui, tale informazione (riferimenti) saranno presenti nella tabella dei processi oppure con riferimenti incrociati nelle tabelle di memoria. NB questa è una descrizione generale: ogni so organizza questa informazioni in modo diverso
Come si può mantenere l illusione di una molteplicità di processi sequenziali in una macchina con una sola cpu e molti dispositivi di ingresso e uscita? La funzione principale di un processore consiste nell eseguire istruzioni macchina, che risiedono nella memoria principale come programmi. Dal punto di vista del processore, le istruzioni sono eseguite in una sequenza determinata dal cambiamento dei valori nel registro contatore di programma; nel tempo il contatore di programma può riferirsi al codice di diversi programmi appartenenti a diverse applicazioni Dal punto di vista del programma l esecuzione comporta una sequenza di istruzioni entro il programma stesso e viene definita come processo
Un sistema con 3 processi caricati in memoria
Def: La Traccia di esecuzione dei processi È possibile caratterizzare il comportamento di un singolo processo elencando la relativa sequenza di istruzioni eseguite: tale elenco è definito traccia del processo
Def: La Traccia di esecuzione dei processi
nota Il comportamento del processore si può invece caratterizzare mostrando come siano interallacciate le tracce dei diversi processi
100 Indirizzo di inizio del programma dispatcher Le aree scure indicano L esecuzione del processo dispatcher
Cambio di contesto: P1 P2 1 Si salva il contenuto di tutti i registri del processore nel descrittore della tabella dei processi del processo p1 che è stato sospeso; 2 Si seleziona un processo p2 pronto per l esecuzione 3 Si copiano all interno dei registri del processore i valori dei registri salvati nel descrittore del processo p2, in modo da ripristinare lo stato in cui p2 si trovava al momento della sospensione; se p2 non era mai stato eseguito in precedenza si copierà in PC l indirizzo della sua prima istruzione
algoritmi si schedulazione Il modulo del SO che si occupa di questo è lo scheduler: Il suo compito è quello di selezionare un processo (da una coda) e assegnare il processore Ci sono diversi algoritmi di scheduling e ciascuno viene scelto in particolari contesti in modo da privilegiare un criterio o un altro
Tasso di utilizzo della CPU Throughput misura di numeri di processi completati per unità di tempo Turnaround time intervallo di tempo tra la sottomissione di un processo e il suo completamneto Waiting time tempo in attesa nella coda dei processi pronti
N.B. Obbiettivo della multiprogrammazione consiste nel disporre dell esecuzione contemporanea di alcuni processi in modo da massimizzare l utilizzo della CPU Commutare l uso della cpu così frequentemente che gli utenti possano interagire con ciascun programma mentre esso è in esecuzione.
Una classificazione dei criteri di scheduling (a breve termine: in base all uso della cpu) : Preemptive scheduling (prelazionale) la cpu in uso di un processo può essere tolta e passata a un altro processo in qualsiasi istante. il SO ne blocca l uso e concede l uso a un altro processo. Non Preemptive scheduling (cooperativo) una volta che un processo ha ottenuto l uso della CPU non è interrotto se non quando lo prevede esso stesso.
nota Diversi ambienti richiedono diversi algoritmi di schedulazione : 3 ambienti che vale la pena distinguere Batch Non ci sono utenti impazienti in attesa ai loro terminali di una risposta veloce. Sono spesso accetabili algoritmi senza prelascio, sia algoritmi con prelascio con un periodo lungo per ogni processo Interattivo Il prelascio è essenziale per evitare che un processo si impossessi della cpu impedendo agl altri di ottenre servizi real time Generalmente il prelascio è poco necessario i processi sanno che non vengono eseguiti per lungo termine fanno normalmente il loro lavoro e si bloccano in fretta
Schedulazione in ambienti batch First Come First Served (FCFS): Shortest Job First (SJF): Shortest Remaining Time First (SRTF)
First Come First Served (FCFS): non preemtive i processi sono eseguiti nell ordine in cui sono sottomessi al sistema. Nuovi processi Coda pronti CPU Fine esecuzione I/O terminato In attesa
Shortest Job First (SJF): Non preemtive. Simile a FCFS ma si seleziona quello che richiede meno tempo per terminare o per fermarsi sulla prossima operazione di attesa.
Shortest Remaining Time First (SRTF) non Preemtive. Si manda in esecuzione il processo più breve ma in ogni istante può essere interrotto se nel frattempo è diventato pronto un processo che richiede meno tempo per terminare.
Scheduling a lungo termine Nuovi processi Coda anticamera Coda pronti Scheduling a breve termine CPU Fine esecuzione I/O terminato In attesa In molti casi non è opportuno avere una coda di processi pronti (grado di multiprogrammazione troppo elevato) si rischia di allungare il tempo di turneround: Si può attuare una coda di anticamera
Schedulazione in ambienti interattivi Selezione con priorità Round Robin (RR)
Selezione con priorità Si associa una priorità ad ogni processo e ogni volta Si seleziona dalla coda il processo con priorità maggiore: preemtive se durante l esecuzione di un processo P1 diventa pronto un processo p2 con priorità maggiore viene Effettuato il cambio di contesto Non-preemtive il processo rimane in esecuzione fino a Quando non va in attesa La priorità: Tipo di programma i programmi interattivi hanno in genere Priorità maggiore di quelli batch Utente proprietario Lunghezza del programma Tempo già trascorso in esecuzione
Round Robin (RR) Preemtive Ogni processo che viene mandato in esecuzione viene assegnato lo stesso quanto di tempo (time slice) prefissato Nuovi processi Coda pronti CPU Fine esecuzione I/O terminato In attesa Quanto di tempo scaduto