gestione dei processi a. ferrari. multiprogrammazione tutti i sistemi operativi moderni sono in...

32
Gestione dei Gestione dei processi processi A. Ferrari A. Ferrari

Upload: gabriele-bevilacqua

Post on 01-May-2015

225 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Gestione dei Gestione dei processiprocessi

A. FerrariA. Ferrari

Page 2: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

MultiprogrammaziMultiprogrammazioneone

Tutti i Sistemi Operativi moderni sono in Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di grado di eseguire contemporaneamente più di un programmaun programma

Il numero di programmi in esecuzione è Il numero di programmi in esecuzione è superiore al numero di processori del sistema.superiore al numero di processori del sistema.

L’utente ha la sensazione che le proprie L’utente ha la sensazione che le proprie applicazioni siano eseguite applicazioni siano eseguite contemporaneamente dal computer.contemporaneamente dal computer.

In realtà la sensazione di contemporaneità è In realtà la sensazione di contemporaneità è data dall’elevata velocità di esecuzione dei data dall’elevata velocità di esecuzione dei programmi da parte del computer.programmi da parte del computer.

Page 3: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Esecuzione Esecuzione “parallela”“parallela”

Page 4: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

MAC OSXMAC OSXMonitoraggio attivitàMonitoraggio attività

Page 5: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

WindowsWindowsTask ManagerTask Manager

Page 6: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

LinuxLinuxSystem monitorSystem monitor

Page 7: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Programma -> Programma -> ProcessoProcesso

Un programma è Un programma è costituito dal codice costituito dal codice oggetto generato oggetto generato dalla compilazione del dalla compilazione del codice sorgentecodice sorgente

E’ salvato sotto forma E’ salvato sotto forma di uno o più file. di uno o più file.

E’ un'entità statica, E’ un'entità statica, che rimane immutata che rimane immutata durante l'esecuzione.durante l'esecuzione.

Il programma esiste Il programma esiste indipendentemente indipendentemente dal computer che è in dal computer che è in grado di eseguirlo.grado di eseguirlo.

Un processo è definito come Un processo è definito come un’istanza di un programma in un’istanza di un programma in esecuzione.esecuzione.

Al momento dell’esecuzione del Al momento dell’esecuzione del programma il SO crea il processo.programma il SO crea il processo.

E’ un'entità dinamica, che E’ un'entità dinamica, che dipende dai dati che vengono dipende dai dati che vengono elaborati, e dalle operazioni elaborati, e dalle operazioni eseguite su di essi.eseguite su di essi.

E’ caratterizzato, oltre che dal E’ caratterizzato, oltre che dal codice eseguibile, dall'insieme di codice eseguibile, dall'insieme di tutte le informazioni che ne tutte le informazioni che ne definiscono lo stato.definiscono lo stato.

Da un solo programma possono Da un solo programma possono scaturire più processi distinti.scaturire più processi distinti.

Page 8: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

ThreadThreadUn thread è una suddivisione di un processo in due o più Un thread è una suddivisione di un processo in due o più filoni, che vengono eseguiti concorrentemente dal filoni, che vengono eseguiti concorrentemente dal processore.processore.

In generale, si può dire che un thread è contenuto In generale, si può dire che un thread è contenuto all'interno di un processo.all'interno di un processo.

Un processo ha sempre almeno un thread (se stesso), Un processo ha sempre almeno un thread (se stesso), ma in alcuni casi un processo può avere più thread che ma in alcuni casi un processo può avere più thread che vengono eseguiti in parallelo.vengono eseguiti in parallelo.

I vari thread dello stesso processo condividono alcune I vari thread dello stesso processo condividono alcune risorse (lo spazio d'indirizzamento del processo), mentre risorse (lo spazio d'indirizzamento del processo), mentre processi differenti non condividono le loro risorse.processi differenti non condividono le loro risorse.

I thread sono spesso utilizzati per la parallelizzazione di I thread sono spesso utilizzati per la parallelizzazione di un programma, per sfruttare i moderni processori multi un programma, per sfruttare i moderni processori multi core.core.

Page 9: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Processo vs Processo vs ThreadThread

ProcessoProcesso

Il processo è Il processo è l'oggetto del l'oggetto del sistema operativo sistema operativo a cui sono a cui sono assegnate tutte le assegnate tutte le risorse di sistema risorse di sistema per l'esecuzione per l'esecuzione di un programma, di un programma, tranne la CPU.tranne la CPU.

ThreadThread

Il thread è Il thread è l'oggetto del l'oggetto del sistema sistema operativo o operativo o dell'applicazione dell'applicazione a cui è assegnata a cui è assegnata la CPU per la CPU per l'esecuzione.l'esecuzione.

Page 10: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Un esempioUn esempioUn esempio di Un esempio di applicazione che può applicazione che può far uso di più thread far uso di più thread è un browser Web, è un browser Web, che usa un thread che usa un thread distinto per scaricare distinto per scaricare ogni immagine in ogni immagine in una pagina Web che una pagina Web che contiene più contiene più immagini.immagini.

Page 11: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Dual Core - multi Dual Core - multi corecore

Una CPU dual core (doppio nucleo) Una CPU dual core (doppio nucleo) unisce due processori indipendenti in unisce due processori indipendenti in un singolo package. un singolo package.

I primi dual core sono gli IBM PowerPC I primi dual core sono gli IBM PowerPC del 2003.del 2003.

Il termine multi core si usa per Il termine multi core si usa per descrivere una CPU composta da tre o descrivere una CPU composta da tre o più core: più nuclei di processori fisici più core: più nuclei di processori fisici montati sullo stesso package.montati sullo stesso package.

Page 12: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Identificativo di Identificativo di processoprocesso

Il Sistema Operativo assoccia a ogni Il Sistema Operativo assoccia a ogni processo (al momento della creazione) processo (al momento della creazione) un identificativo numerico univoco, detto un identificativo numerico univoco, detto PID (Process Identifier).PID (Process Identifier).

Ad un processo sono associate le Ad un processo sono associate le seguenti strutture dati:seguenti strutture dati:

Uno o più segmenti di codice.Uno o più segmenti di codice.Uno o più segmenti di memoria dati.Uno o più segmenti di memoria dati.I descrittori di eventuali risorse in uso I descrittori di eventuali risorse in uso (file, finestre, periferiche, ecc.)(file, finestre, periferiche, ecc.)Uno o più thread.Uno o più thread.

Page 13: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Process control Process control blockblock

Il Process Control Block (Blocco di Il Process Control Block (Blocco di Controllo del Processo) o PCB di un Controllo del Processo) o PCB di un processo è una struttura dati del nucleo processo è una struttura dati del nucleo del sistema operativo che contiene le del sistema operativo che contiene le informazioni essenziali per la gestione informazioni essenziali per la gestione del processo.del processo.

Page 14: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Contenuto del Contenuto del PCBPCB

Program counterProgram counterArea per il salvataggio dei registri Area per il salvataggio dei registri Stato corrente di avanzamento del processo Stato corrente di avanzamento del processo (Pronto, In Esecuzione, Bloccato)(Pronto, In Esecuzione, Bloccato)Identificatore unico del processoIdentificatore unico del processoPuntatore al processo padre e ai processi figli se Puntatore al processo padre e ai processi figli se esistentiesistentiLivello di prioritàLivello di prioritàInformazioni per la gestione della memoriaInformazioni per la gestione della memoriaIdentificatore della CPU su cui è in esecuzioneIdentificatore della CPU su cui è in esecuzioneInformazioni per lo scheduling (gestione) del Informazioni per lo scheduling (gestione) del processo, come il tempo di run (esecuzione) o wait processo, come il tempo di run (esecuzione) o wait (attesa) accumulato(attesa) accumulato……Informazioni sullo stato di I/O del processoInformazioni sullo stato di I/O del processo

Page 15: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Context-switchingContext-switchingOperazioni eseguite dal SO per passare la Operazioni eseguite dal SO per passare la risorsa processore da un processo ad un risorsa processore da un processo ad un altro.altro.

Si interrompe momentaneamente il primo Si interrompe momentaneamente il primo processo per riprendere processo per riprendere temporaneamente l’esecuzione del temporaneamente l’esecuzione del secondo.secondo.

Nel context-switching viene salvato il PCB Nel context-switching viene salvato il PCB del primo processo e caricato il PCB del del primo processo e caricato il PCB del secondo.secondo.

Page 16: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

CPU e CPU e context-switchingcontext-switching

Page 17: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Stati di un Stati di un processoprocesso

Ogni processo può essere in uno dei 3 stati:Ogni processo può essere in uno dei 3 stati:Pronto (ready)Pronto (ready)

Il processo non è in esecuzione, ha tutte le Il processo non è in esecuzione, ha tutte le risorse necessarie tranne la CPUrisorse necessarie tranne la CPU

Attesa (wait) (sleep)Attesa (wait) (sleep)

Il processo non è in esecuzione, ha invocato Il processo non è in esecuzione, ha invocato un servizio (es I/O) ed è in attesa di un un servizio (es I/O) ed è in attesa di un segnale da parte di un altro processo relativo segnale da parte di un altro processo relativo al completamento del servizio richiesto.al completamento del servizio richiesto.

Esecuzione (run)Esecuzione (run)

Il processo dispone di tutte le risorse Il processo dispone di tutte le risorse necessarie ed è in esecuzione sulla CPUnecessarie ed è in esecuzione sulla CPU

Page 18: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Stati di un Stati di un processoprocesso

ReadyReady

WaitWait RunRun

Page 19: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Transizione 1Transizione 1Il processo viene creato e posto nello Il processo viene creato e posto nello stato di “pronto” (ready)stato di “pronto” (ready)

ReadyReady

WaitWait RunRun

Page 20: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Code d’attesaCode d’attesaPiù processi possono essere in stato di Più processi possono essere in stato di ready pronti per ottenere la risorsa CPU ready pronti per ottenere la risorsa CPU e passare in esecuzione.e passare in esecuzione.

I processi vengono quindi messi in coda I processi vengono quindi messi in coda d’attesa.d’attesa.

Page 21: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Transizione 2Transizione 2Il Sistema Operativo seleziona uno dei Il Sistema Operativo seleziona uno dei processi in stato Ready e lo pone in processi in stato Ready e lo pone in esecuzione (run)esecuzione (run)

ReadyReady

WaitWait RunRun

Page 22: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

SchedulerSchedulerLo scheduler (da to schedule letteralmente Lo scheduler (da to schedule letteralmente "mettere in lista”) è un programma che, dato "mettere in lista”) è un programma che, dato un insieme di richieste di accesso ad una un insieme di richieste di accesso ad una risorsa, stabilisce un ordinamento temporale risorsa, stabilisce un ordinamento temporale per l'esecuzione di tali richieste, privilegiando per l'esecuzione di tali richieste, privilegiando quelle che rispettano determinati parametri, quelle che rispettano determinati parametri, in modo da ottimizzare l'accesso a tale risorsa in modo da ottimizzare l'accesso a tale risorsa e consentire così l'espletamento del servizio.e consentire così l'espletamento del servizio.

Lo short-time-scheduler (scheduler della CPU) Lo short-time-scheduler (scheduler della CPU) deve garantire l’esecuzione di ogni processo, deve garantire l’esecuzione di ogni processo, in modo ordinato, concedendo e revocando la in modo ordinato, concedendo e revocando la CPU alternativamente mediante operazioni CPU alternativamente mediante operazioni dette commutazioni di contesto tra i processi.dette commutazioni di contesto tra i processi.

Page 23: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Politiche di Politiche di schedulingscheduling

L'attenzione posta su alcuni parametri L'attenzione posta su alcuni parametri piuttosto che su altri, differenzia la politica piuttosto che su altri, differenzia la politica di scheduling: di scheduling:

lo scheduler può eseguire le richieste in base lo scheduler può eseguire le richieste in base al loro ordine di arrivo (politica FIFO), al loro ordine di arrivo (politica FIFO),

oppure dare precedenza a quelle che oppure dare precedenza a quelle che impegnano per meno tempo la risorsa; impegnano per meno tempo la risorsa;

possono esistere politiche che si basano su possono esistere politiche che si basano su principi statistici o sulla predizione per principi statistici o sulla predizione per individuare un ordinamento delle richieste individuare un ordinamento delle richieste che si avvicini il più possibile quello ottimale.che si avvicini il più possibile quello ottimale.

Page 24: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Obiettivi dello Obiettivi dello schedulerscheduler

Fairness (Equità) - processi della stesso tipo devono avere Fairness (Equità) - processi della stesso tipo devono avere trattamenti similitrattamenti simili

Massimizzare il throughput (produttività dell'intero Massimizzare il throughput (produttività dell'intero sistema), minimizzando i tempi in cui la risorsa è sistema), minimizzando i tempi in cui la risorsa è inutilizzata.inutilizzata.

Minimizza il tempo che intercorre tra l'istante in cui la Minimizza il tempo che intercorre tra l'istante in cui la richiesta è generata e quello in cui la richiesta è richiesta è generata e quello in cui la richiesta è soddisfatta.soddisfatta.

Evitare fenomeni indesiderati come la starvation ovvero Evitare fenomeni indesiderati come la starvation ovvero "l'attesa eterna" di alcune richieste."l'attesa eterna" di alcune richieste."Corre voce che quando fu chiuso l'IBM 7094 al MIT, nel "Corre voce che quando fu chiuso l'IBM 7094 al MIT, nel 1973, si scoprì che un processo con bassa priorità 1973, si scoprì che un processo con bassa priorità sottoposto nel 1967 non era ancora stato eseguito".sottoposto nel 1967 non era ancora stato eseguito".

Dare all'utilizzatore del sistema la percezione che le Dare all'utilizzatore del sistema la percezione che le richieste vengano soddisfatte contemporaneamente.richieste vengano soddisfatte contemporaneamente.

Page 25: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Transizione 3Transizione 3Il Sistema Operativo interrompe Il Sistema Operativo interrompe l’esecuzione di un processo e lo pone in l’esecuzione di un processo e lo pone in stato di readystato di ready

ReadyReady

WaitWait RunRun

Page 26: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Time sharingTime sharingI Sistemi Operativi moderni adottano la tenica I Sistemi Operativi moderni adottano la tenica del time-sharing per la gestione del processore.del time-sharing per la gestione del processore.

Ad ogni processo viene assegnato un “quanto” Ad ogni processo viene assegnato un “quanto” di tempo (time slice dell’ordine dei di tempo (time slice dell’ordine dei millisecondi) dopo il quale deve rilasciare il millisecondi) dopo il quale deve rilasciare il processore passando dallo stato di run a quello processore passando dallo stato di run a quello di ready.di ready.

Preemption (prerilascio) è l'operazione in cui un Preemption (prerilascio) è l'operazione in cui un processo viene temporaneamente interrotto, processo viene temporaneamente interrotto, senza alcuna cooperazione da parte del senza alcuna cooperazione da parte del processo stesso, al fine di permettere processo stesso, al fine di permettere l'esecuzione di un altro processo.l'esecuzione di un altro processo.

Page 27: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Transizione 4Transizione 4Nel corso dell’esecuzione il processo Nel corso dell’esecuzione il processo richiede un servizio al Sistema richiede un servizio al Sistema Operativo e viene posto nello stato di Operativo e viene posto nello stato di waitwait

ReadyReady

WaitWait RunRun

Page 28: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Transizione 5Transizione 5Il Sistema Operativo completa la Il Sistema Operativo completa la richiesta di un processo che passa richiesta di un processo che passa quindi allo stato di readyquindi allo stato di ready

ReadyReady

WaitWait RunRun

Page 29: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Transizione 6Transizione 6Il processo termina l’esecuzione e viene Il processo termina l’esecuzione e viene distrutto dal Sistema Operativodistrutto dal Sistema Operativo

ReadyReady

WaitWait RunRun

Page 30: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Algoritmi di Algoritmi di schedulazioneschedulazione

Round-robin Round-robin time-sharing e politica FIFO (First In First time-sharing e politica FIFO (First In First Out) di selezione dei processi in coda di Out) di selezione dei processi in coda di readyready

Scheduling a prioritàScheduling a prioritàUn valore di priorità (intero) è associato Un valore di priorità (intero) è associato a ciascun processo.a ciascun processo.

La CPU viene allocata al processo con la La CPU viene allocata al processo con la priorità più altapriorità più alta

Page 31: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

Tipi di processiTipi di processiCPU BoundCPU Bound

Processi che sfruttano pesantemente le risorse Processi che sfruttano pesantemente le risorse computazionali del processore, ma non richiedono computazionali del processore, ma non richiedono servizi di ingresso/uscita dati al sistema operativo servizi di ingresso/uscita dati al sistema operativo in quantità rilevanti.in quantità rilevanti.Es. i programmi di calcolo matematico, i quali Es. i programmi di calcolo matematico, i quali necessitano spesso di un'enorme potenza di necessitano spesso di un'enorme potenza di calcolo, ma sfruttano l'I/O solo all'inizio della loro calcolo, ma sfruttano l'I/O solo all'inizio della loro vita (per caricare gli input) ed alla fine di essa vita (per caricare gli input) ed alla fine di essa (per produrre gli output).(per produrre gli output).

I/O Bound I/O Bound molti accessi alle periferiche, il processo è spesso molti accessi alle periferiche, il processo è spesso interrotto per attendere il completamento delle interrotto per attendere il completamento delle richieste di I/O.richieste di I/O.

Page 32: Gestione dei processi A. Ferrari. Multiprogrammazione Tutti i Sistemi Operativi moderni sono in grado di eseguire contemporaneamente più di un programma

P1 (CPU bound) P1 (CPU bound) P2 /I/O bound)P2 /I/O bound)

Lungo burst di CPU Attesa completamento I/OCorto burst di CPU

tempo

P1

P2

In esecuzione In attesa