silberschatz, galvin and gagne 2002 4.1 operating system concepts i processi concetto di processo...
TRANSCRIPT
Silberschatz, Galvin and Gagne 20024.1Operating System Concepts
I processiI processi
Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi
Silberschatz, Galvin and Gagne 20024.2Operating System Concepts
Concetto di processoConcetto di processo
Un sistema operativo esegue programmi di varia natura: Sistemi batch: Sistemi batch: jobjob Sistemi time–sharing: Sistemi time–sharing: programmi utenteprogrammi utente o o tasktask
I libri di testo impiegano indifferentemente il termine jobjob o processoprocesso.
ProcessoProcesso — un programma in esecuzione; l’esecuzione di un processo deve avvenire in modo sequenziale.
Un processo include: il il program counterprogram counter lo lo stackstack una sezione datiuna sezione dati
Silberschatz, Galvin and Gagne 20024.3Operating System Concepts
Stato del processoStato del processo
Mentre viene eseguito un processo cambia statostato: New New (nuovo): Il processo viene creato. Running Running (in esecuzione): Le istruzioni vengono eseguite. Waiting Waiting (in attesa): Il processo è in attesa di un evento. Ready Ready (pronto): Il processo è in attesa di essere assegnato
ad un processore. Terminated Terminated (terminato): Il processo ha terminato la propria
esecuzione.
Diagramma degli stati di un processo
Silberschatz, Galvin and Gagne 20024.4Operating System Concepts
Process Control Block (PCB)Process Control Block (PCB)
Informazione associata a ciascun processo: Stato del processo Program counter Registri della CPU (accumulatori, indice, stack pointer)
Informazioni sullo scheduling della CPU (priorità, puntatori alle code di scheduling)
Informazioni sulla gestione della memoria (registri base e limite, tabella pagine/segmenti)
Informazioni di contabilizzazione delle risorse
(numero job/account, tempo di CPU)
Informazioni sullo stato di I/O (lista dispositivi/file aperti)
Silberschatz, Galvin and Gagne 20024.5Operating System Concepts
Commutazione della CPU fra processiCommutazione della CPU fra processi
Silberschatz, Galvin and Gagne 20024.6Operating System Concepts
Code per lo scheduling di processiCode per lo scheduling di processi
Coda dei jobCoda dei job — Insieme di tutti i processi presenti nel sistema.
Ready queueReady queue (Coda dei processi pronti) — Insieme di tutti i processi pronti ed in attesa di esecuzione, che risiedono i memoria centrale.
Code dei dispositiviCode dei dispositivi — Insieme di processi in attesa per un dispositivo di I/O.
I processi si “spostano” fra le varie code.
Silberschatz, Galvin and Gagne 20024.7Operating System Concepts
Ready queue e code ai dispositivi di I/OReady queue e code ai dispositivi di I/O
Silberschatz, Galvin and Gagne 20024.8Operating System Concepts
Diagramma di accodamento per lo Diagramma di accodamento per lo scheduling dei processischeduling dei processi
Ogni riquadro rappresenta una coda. Le ellissi racchiudono le risorse che servono le code, mentre le frecce indicano il flusso dei processi nel sistema.
Silberschatz, Galvin and Gagne 20024.9Operating System Concepts
Tipi diTipi di schedulerscheduler
Scheduler a lungo terminelungo termine (o scheduler dei job): seleziona quali processi devono essere portati dalla memoria di massa alla ready queue (in memoria centrale).
Scheduler a breve terminebreve termine (o scheduler della CPU) : seleziona quale processo debba essere eseguito successivamente, ed alloca la CPU.
Scheduler a medio terminemedio termine (swapperswapper ): rimuove processi dalla memoria (e dalla contesa per la CPU) e riduce il grado di multiprogrammazione.
Scheduling a medio termine
Silberschatz, Galvin and Gagne 20024.10Operating System Concepts
Tipi di schedulerTipi di scheduler
Lo scheduler a breve termine viene chiamato molto spesso (100 millisecondi) deve essere veloce.
Lo scheduler a lungo termine viene chiamato raramente (secondi, minuti) può essere lento (ma efficiente).
Lo scheduler a lungo termine controlla il grado di multiprogrammazione.
I processi possono essere classificati in: ProcessiProcessi I/O– I/O–boundbound : impiegano più tempo effettuando I/O : impiegano più tempo effettuando I/O
rispetto al tempo impiegato per elaborazioni (in generale, rispetto al tempo impiegato per elaborazioni (in generale, si hanno molti si hanno molti burstburst di CPU di breve durata). di CPU di breve durata).
Processi Processi CPU–CPU–boundbound : impiegano più tempo effettuando : impiegano più tempo effettuando elaborazioni elaborazioni (in generale, si hanno pochi burst di CPU di (in generale, si hanno pochi burst di CPU di lunga durata).lunga durata).
Silberschatz, Galvin and Gagne 20024.11Operating System Concepts
Context SwitchContext Switch
Quando la CPU passa da un processo all’altro, il sistema deve salvare lo stato del vecchio processo e caricare lo stato precedentemente salvato per il nuovo processo.
Il tempo di context–switchcontext–switch è un sovraccarico (overhead ); il sistema non lavora utilmente mentre cambia contesto.
Il tempo di context–switch dipende dal supporto hardware (velocità di accesso alla memoria, numero di registri da copiare, istruzioni speciali, gruppi di registri multipli).
Silberschatz, Galvin and Gagne 20024.12Operating System Concepts
Creazione di processiCreazione di processi
Il processo padre crea processi figli che, a loro volta, creano altri processi, formando un albero di processi.
Condivisione di risorse Il padre e il figlio condividono tutte le risorse.Il padre e il figlio condividono tutte le risorse. I figli condividono un sottoinsieme delle risorse del padre.I figli condividono un sottoinsieme delle risorse del padre. Il padre e il figlio non condividono risorse.Il padre e il figlio non condividono risorse.
Esecuzione Il padre e i figli vengono eseguiti concorrentemente.Il padre e i figli vengono eseguiti concorrentemente. Il padre attende la terminazione dei processi figli.Il padre attende la terminazione dei processi figli.
Spazio degli indirizzi Il processo figlio è un duplicato del processo padre.Il processo figlio è un duplicato del processo padre. Nel processo figlio è stato caricato un diverso programma.Nel processo figlio è stato caricato un diverso programma.
In UNIXUNIX: la system call forkfork crea un nuovo processo, la execveexecve viene impiegata dopo una forkfork per sostituire lo spazio di memoria del processo originale con un nuovo programma.
Silberschatz, Galvin and Gagne 20024.13Operating System Concepts
Albero dei processi in un tipico sistema UNIXAlbero dei processi in un tipico sistema UNIX
Silberschatz, Galvin and Gagne 20024.14Operating System Concepts
Terminazione di processiTerminazione di processi
Il processo esegue l’ultima istruzione e chiede al sistema operativo di essere cancellato per mezzo di una specifica chiamata di sistema (exitexit in UNIX) che compie le seguenti operazioni: Può restituire dati (output) al processo padre (Può restituire dati (output) al processo padre (waitwait).). Le risorse del processo vengono deallocate dal SO.Le risorse del processo vengono deallocate dal SO.
Il padre può terminare l’esecuzione dei processi figli (abortabort) se… Il figlio ha ecceduto nell’uso di alcune risorse.Il figlio ha ecceduto nell’uso di alcune risorse. Il compito assegnato al figlio non è più richiesto.Il compito assegnato al figlio non è più richiesto. Il padre termina.Il padre termina.
Il sistema operativo non consente ad un processo figlio Il sistema operativo non consente ad un processo figlio di continuare l’esecuzione se il padre è terminato. Questo di continuare l’esecuzione se il padre è terminato. Questo fenomeno è detto fenomeno è detto terminazione a cascataterminazione a cascata e viene avviato e viene avviato dal SO.dal SO.
Silberschatz, Galvin and Gagne 20024.15Operating System Concepts
Processi cooperanti
Un processo è indipendenteindipendente se non può influire su altri processi nel sistema o subirne l’influsso.
Processi cooperanticooperanti possono influire su altri processi o esserne influenzati.
La presenza o meno di dati condivisi determina univocamente la natura del processo.
Vantaggi della cooperazione fra processi Condivisione di informazioni Condivisione di informazioni Accelerazione del calcolo (in sistemi multiprocessore)Accelerazione del calcolo (in sistemi multiprocessore) ModularitàModularità ConvenienzaConvenienza
Silberschatz, Galvin and Gagne 20024.16Operating System Concepts
Problema del produttore–consumatoreProblema del produttore–consumatore
È un paradigma classico per processi cooperanti. Il processo produttoreproduttore produce informazioni che vengono consumate da un processo consumatoreconsumatore. Buffer illimitato:Buffer illimitato: non vengono posti limiti pratici alla non vengono posti limiti pratici alla
dimensione del buffer.dimensione del buffer. Buffer limitato:Buffer limitato: si assume che la dimensione del buffer sia si assume che la dimensione del buffer sia
fissata.fissata. Esempio:Esempio: Un programma di stampa produce caratteri che
verranno consumati dal driver della stampante.
Silberschatz, Galvin and Gagne 20024.17Operating System Concepts
Soluzione con buffer limitato e memoria condivisaSoluzione con buffer limitato e memoria condivisa
Dati condivisi
#define BUFFER_SIZE 10
Typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
La soluzione ottenuta è corretta, ma consente l’utilizzo di soli BUFFER_SIZE–1 elementi.
Silberschatz, Galvin and Gagne 20024.18Operating System Concepts
Soluzione con buffer limitato e memoria condivisaSoluzione con buffer limitato e memoria condivisa
item nextProduced;
while (1) {
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
item nextConsumed;
while (1) {while (in == out)
; /* do nothing */nextConsumed = buffer[out];out = (out + 1) % BUFFER_SIZE;
}
ProcessoProcesso
ProduttoreProduttore
ProcessoProcesso
ConsumatoreConsumatore
Silberschatz, Galvin and Gagne 20024.19Operating System Concepts
ThreadThread
Un threadthread (o lightweight process, lightweight process, LWPLWP) è l’unità di base di utilizzo della CPU e consiste di: Program counterProgram counter Insieme dei registri Insieme dei registri Spazio dello stackSpazio dello stack
Un thread condivide con i thread ad esso associati: Segmento di codiceSegmento di codice Segmento datiSegmento dati Risorse del sistema operativoRisorse del sistema operativo
L’insieme dei thread e dell’ambiente da essi condiviso è chiamato tasktask.
Un processo tradizionale, o heavyweightheavyweight, corrisponde ad un task con un solo thread.
Silberschatz, Galvin and Gagne 20024.20Operating System Concepts
Processi a thread singolo e multithreadProcessi a thread singolo e multithread
Silberschatz, Galvin and Gagne 20024.21Operating System Concepts
ThreadThread
In un task multithread, mentre un thread è blocccato in attesa, un secondo thread nello stesso task può essere in esecuzione. La cooperazione di più thread nello stesso job fornisce un maggior La cooperazione di più thread nello stesso job fornisce un maggior
throughput.throughput. Applicazioni che richiedono la condivisione di un buffer (es. produttore–Applicazioni che richiedono la condivisione di un buffer (es. produttore–
consumatore) traggono beneficio dall’impiego di thread.consumatore) traggono beneficio dall’impiego di thread. I thread forniscono un meccanismo che permette a processi
sequenziali di effettuare chiamate di sistema bloccanti ottenendo allo stesso tempo un’esecuzione parallela.
Alcuni sistemi supportano i thread a livello kernelthread a livello kernel (OS/2OS/2). Thread a livello utenteThread a livello utente: il lavoro di gestione dei thread viene
effettuato dalle applicazioni ed il kernel non è conscio della loro presenza (AndrewAndrew).
Approcci ibridi implementano thread sia a livello kernel che a livello utente (Solaris 2Solaris 2).
Silberschatz, Galvin and Gagne 20024.22Operating System Concepts
Thread a livello utente (ULT)Thread a livello utente (ULT)
Vantaggi: Il cambio di contesto fra thread non richiede privilegi in modalità kernel Il cambio di contesto fra thread non richiede privilegi in modalità kernel
(risparmia il sovraccarico del doppio cambiamento di modalità).(risparmia il sovraccarico del doppio cambiamento di modalità). Lo scheduling può essere diverso per applicazioni diverse.Lo scheduling può essere diverso per applicazioni diverse. Gli Gli ULT ULT ((User Level Thread User Level Thread ) possono essere eseguiti su qualunque SO ) possono essere eseguiti su qualunque SO
senza cambiare il kernel sottostante. La libreria dei thread è un insieme di senza cambiare il kernel sottostante. La libreria dei thread è un insieme di utilità a livello di applicazione.utilità a livello di applicazione.
Svantaggi: In caso di system call bloccanti, quando un thread esegue una chiamata di In caso di system call bloccanti, quando un thread esegue una chiamata di
sistema, viene bloccato tutto il processo.sistema, viene bloccato tutto il processo. Un’applicazione multithread non può sfruttare il multiprocessing: in un dato Un’applicazione multithread non può sfruttare il multiprocessing: in un dato
istante un solo thread per processo è in esecuzione.istante un solo thread per processo è in esecuzione.
Silberschatz, Galvin and Gagne 20024.23Operating System Concepts
Thread a livello kernel (KLT)Thread a livello kernel (KLT)
Il kernel effettua lo scheduling a livello di thread: Può schedulare simultaneamente più thread;Può schedulare simultaneamente più thread; Se un thread di un processo è bloccato il kernel può Se un thread di un processo è bloccato il kernel può
schedulare un altro thread dello stesso processo.schedulare un altro thread dello stesso processo. Svantaggio dell’approccio KLTKLT (Kernel Level ThreadKernel Level Thread ):
Il trasferimento del controllo fra thread dello stesso processo richiede il passaggio in modalità kernel: l’aumento di prestazioni è molto meno rilevante rispetto all’approccio ULT.
Silberschatz, Galvin and Gagne 20024.24Operating System Concepts
Un esempio di KLT: LINUXUn esempio di KLT: LINUX
LINUXLINUX si riferisce ai thread chiamandoli tasktask. La creazione di thread in LINUX avviene tramite la
system call cloneclone. La system call clone clone permette al task figlio la
condivisione dello spazio degli indirizzi del task padre (il processo originario).
Silberschatz, Galvin and Gagne 20024.25Operating System Concepts
Comunicazione tra processi (IPC)Comunicazione tra processi (IPC)
IPC, IPC, Inter–Process CommunicationInter–Process Communication: Meccanismo per la comunicazione e la sincronizzazione fra processi.
Sistema di messaggi — i processi comunicano fra loro senza far uso di variabili condivise.
La funzionalità IPC consente due operazioni: sendsend((messaggiomessaggio) — la dimensione del messaggio può essere ) — la dimensione del messaggio può essere
fissa o variabile;fissa o variabile; receivereceive((messaggiomessaggio).).
Se I processi P e Q vogliono comunicare, devono: stabilire fra loro un canale di comunicazione; stabilire fra loro un canale di comunicazione; scambiare messaggi per mezzo di send/receive.scambiare messaggi per mezzo di send/receive.
Implementazione del canale di comunicazione: fisica (es. memoria condivisa, bus hardware);fisica (es. memoria condivisa, bus hardware); logica (proprietà logiche).logica (proprietà logiche).
Silberschatz, Galvin and Gagne 20024.26Operating System Concepts
Problemi di implementazioneProblemi di implementazione
Come vengono stabiliti i canali (connessioni)? È possibile assegnare un canale a più di due processi? Quanti canali possono essere stabiliti fra ciascuna coppia
di processi comunicanti? Qual è la capacità di un canale? Il formato del messaggio che un canale può gestire è
fisso o variabile? Stabilire canali monodirezionali o bidirezionali?
Silberschatz, Galvin and Gagne 20024.27Operating System Concepts
Comunicazione direttaComunicazione diretta
I processi devono “nominare” esplicitamente i loro interlocutori (modalità simmetrica): sendsend ( (P, messaggioP, messaggio) — invia un messaggio al processo ) — invia un messaggio al processo PP receivereceive((Q, messaggioQ, messaggio) — riceve un messaggio dal ) — riceve un messaggio dal
processoprocesso Q Q Proprietà del canale di comunicazione:
I canali vengono stabiliti automaticamente.I canali vengono stabiliti automaticamente. Ciascun canale è associato esattamente ad una coppia di Ciascun canale è associato esattamente ad una coppia di
processi.processi. Tra ogni coppia di processi comunicanti esiste esattamente Tra ogni coppia di processi comunicanti esiste esattamente
un canale.un canale. Il canale può essere unidirezionale (ogni processo Il canale può essere unidirezionale (ogni processo
collegato al canalecollegato al canale può soltanto trasmettere/ricevere), ma può soltanto trasmettere/ricevere), ma è normalmente bidirezionale.è normalmente bidirezionale.
Silberschatz, Galvin and Gagne 20024.28Operating System Concepts
Comunicazione indiretta
I messaggi vengono inviati/ricevuti da mailboxmailbox (porteporte). Ciascuna mailbox è idendificata con un Ciascuna mailbox è idendificata con un idid unico. unico. I processi possono comunicare solamente se condividono una mailbox.I processi possono comunicare solamente se condividono una mailbox.
Proprietà dei canali di comunicazione: Un canale viene stabilito solo se i processi hanno una mailbox in Un canale viene stabilito solo se i processi hanno una mailbox in
comune.comune. Un canale può essere associato a più processi.Un canale può essere associato a più processi. Ogni coppia di processi può condividere più canali di comunicazione.Ogni coppia di processi può condividere più canali di comunicazione. I canali possono essere unidirezionali o bidirezionali.I canali possono essere unidirezionali o bidirezionali.
Operazioni: creare una nuova mailboxcreare una nuova mailbox Inviare/ricevere messaggi attraverso mailboxInviare/ricevere messaggi attraverso mailbox distruggere una mailboxdistruggere una mailbox
Silberschatz, Galvin and Gagne 20024.29Operating System Concepts
Comunicazione indirettaComunicazione indiretta
Primitive di comunicazione: sendsend(A, messaggio) — invia un messaggio alla mailbox A receivereceive(A, messaggio) — riceve un messaggio dalla mailbox A
Condivisione di mailbox PP11, P, P22,, e e P P33 condividono la mailbox A. condividono la mailbox A.
PP11, invia; , invia; PP22 ee P P33 ricevono. ricevono.
Chi si assicura il messaggio?Chi si assicura il messaggio? Soluzioni:
Permettere ad un canale di essere associato ad al più due processi.Permettere ad un canale di essere associato ad al più due processi. Permettere ad un solo processo alla volta di eseguire un’operazione di Permettere ad un solo processo alla volta di eseguire un’operazione di
ricezione.ricezione. Permettere al SO di selezionare arbitrariamente il ricevente. Il Permettere al SO di selezionare arbitrariamente il ricevente. Il sistema sistema
comunica l’identità del ricevente al trasmittente.comunica l’identità del ricevente al trasmittente.
Silberschatz, Galvin and Gagne 20024.30Operating System Concepts
SincronizzazioneSincronizzazione
Lo scambio di messaggi può essere sia bloccantebloccante che non–bloccantenon–bloccante.
In caso di scambio di messaggi bloccante la comunicazione è sincronasincrona.
In caso di scambio di messaggi non–bloccante la comunicazione è asincronaasincrona.
Le primitive sendsend e receive receive possono essere sia bloccanti che non–bloccanti.
Silberschatz, Galvin and Gagne 20024.31Operating System Concepts
BufferingBuffering
La coda dei messaggi legata ad un canale può essere implementata in tre modi.1. Capacità zeroCapacità zero — Il canale non può avere messaggi in
attesa al suo interno. Il trasmittente deve attendere che il ricevente abbia ricevuto il messaggio (rendezvousrendezvous).
2. Capacità limitataCapacità limitata — Lunghezza finita pari a n messaggi.Se il canale è pieno, il trasmittente deve attendere.
3. Capacità illimitataCapacità illimitata — Lunghezza infinita. Il trasmittente non attende mai.
Silberschatz, Galvin and Gagne 20024.32Operating System Concepts
Condizioni di eccezioneCondizioni di eccezione
Terminazione del processoTerminazione del processo: un processo trasmittente o ricevente può terminare prima che un messaggio sia stato elaborato messaggi mai ricevuti, processi bloccati in attesa.
Messaggi perdutiMessaggi perduti: a causa di guasti sui canali di comunicazione; il SO o il processo trasmittente sono responsabili del rilevamento della condizione di eccezione e della ripetizione del messaggio.
Messaggi alteratiMessaggi alterati: a causa di disturbi sul canale di comunicazione; il messaggio deve essere ritrasmesso.