4.1 sistemi operativi processi concetto di processo scheduling dei processi operazioni sui processi...
TRANSCRIPT
![Page 1: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/1.jpg)
Sistemi Operativi 4.1
Processi
• Concetto di processo
• Scheduling dei processi
• Operazioni sui processi
• Processi cooperanti
• Comunicazioni fra processi
![Page 2: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/2.jpg)
Sistemi Operativi 4.2
Concetto di processo
• Un sistema operativo esegue vari programmi:
– Sistemi batch: job
– Sistemi time-sharing: programmi utente o task
• I libri di testo impiegano indifferentemente il termine job o processo.
• Processo – un programma in esecuzione; l’esecuzione di un processo deve avvenire in modo sequenziale.
• Un processo include:
– il program counter
– lo stack
– una sezione di dati
![Page 3: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/3.jpg)
Sistemi Operativi 4.3
Stato del processo
• Mentre viene eseguito un processo cambia stato
– Nuovo (new): Il processo viene creato.
– In esecuzione (running): Le istruzioni vengono eseguite.
– In attesa (waiting): Il processo è in attesa per qualche evento che deve avvenire.
– Pronto (ready): Il processo è in attesa di essere assegnato ad un processore.
– Terminato (terminated): Il processo ha finito l’esecuzione.
![Page 4: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/4.jpg)
Sistemi Operativi 4.4
Process Control Block (PCB)
Contiene le informazioni associate ad un processo.
• Stato del processo
• Program counter
• Registri della CPU
• Informazioni sullo scheduling della CPU
• Informazioni sulla gestione della memoria
• Informazioni di contabilizzazione delle risorse
• Informazioni sullo stato di I/O
![Page 5: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/5.jpg)
Sistemi Operativi 4.5
Switch della CPU da processo a processo
![Page 6: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/6.jpg)
Sistemi Operativi 4.6
Code per lo scheduling di processi
• Coda dei job – Insieme di tutti i processi presenti nel sistema.
• Coda dei processi pronti – Insieme di tutti i processi pronti ed in attesa di esecuzione, che risiedono i memoria.
• Code dei dispositivi – Insieme di processi in attesa per un dispositivo di I/O.
• I processi si “spostano” fra le varie code.
![Page 7: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/7.jpg)
Sistemi Operativi 4.7
Tipi di scheduler
• Scheduler a lungo termine (o scheduler dei job) – seleziona quali processi devono stare nella coda dei processi pronti.
• Scheduler a breve termine (o scheduler della CPU) – seleziona quali processi debbano essere eseguiti successivamente, ed alloca la CPU.
• Scheduler a medio termine (swapping) – rimozione dei processi dalla memoria (e dalla contesa per la CPU) e riduzione del grado di multiprogrammazione.
![Page 8: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/8.jpg)
Sistemi Operativi 4.8
Tipi di scheduler
• Lo scheduler a breve termine viene chiamato molto spesso (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 descritti come:
– Processo I/O-bound – impiega più tempo effettuando I/O rispetto al tempo impiegato per elaborazioni (in generale, si hanno molti burst di CPU di breve durata).
– Processo CPU-bound – impiega più tempo effettuando elaborazioni (in generale, si hanno pochi burst di CPU di lunga durata).
![Page 9: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/9.jpg)
Sistemi Operativi 4.9
Context 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-switch è un sovraccarico; il sistema non lavora utilmente mentre cambia processo.
• Il tempo dipende dal supporto hardware.
![Page 10: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/10.jpg)
Sistemi Operativi 4.10
Creazione di processi• Il processo padre crea processi figli che, a loro volta, creano altri processi, formando un albero di
processi.
• Condivisione di risorse (possibilità)– Il padre e il figlio condividono tutte le risorse.– Il figlio condivide un sottoinsieme delle risorse del padre.– Il padre e il figlio non condividono risorse.
• Esecuzione– Il padre e il figlio vengono eseguiti concorrentemente.– Il padre attende fino al termine del processo figlio.
• Spazio degli indirizzi– Il processo figlio è un duplicato del processo padre.– Nel processo figlio è stato caricato un programma.
• Esempio UNIX: la chiamata fork crea un nuovo processo, la chiamata execve viene impiegata dopo una fork per rimpiazzare lo spazio di memoria del processo con un nuovo programma.
![Page 11: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/11.jpg)
Sistemi Operativi 4.11
Un albero di processi in un tipico sistema UNIX
![Page 12: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/12.jpg)
Sistemi Operativi 4.12
Terminazione di un processo
• Il processo esegue l’ultima istruzione e chiede al sistema operativo di essere cancellato per mezzo di una specifica chiamata di sistema (exit in UNIX) che compie le seguenti operazioni:
– Può restituire dei dati (output) al processo padre (wait).
– Le risorse del processo vengono liberate.
• Un padre può terminare l’esecuzione di processi figli (abort) per diversi motivi:
– Il figlio ha ecceduto nell’uso di alcune risorse.
– Il compito assegnato al figlio non è più richiesto.
– Il padre termina. Il sistema operativo non consente ad un figlio di
continuare se suo padre è terminato. Questo fenomeno è detto terminazione a cascata e dipende dal SO.
![Page 13: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/13.jpg)
Sistemi Operativi 4.13
Processi cooperanti
• Un processo è indipendente se non può influire su altri processi nel sistema o esserne influenzato.
• Processi cooperanti possono influire su altri processi o esserne influenzati
• Vantaggi della cooperazione fra processi
– Condivisione di informazioni
– Accelerazione del calcolo
– Modularità
– Convenienza
![Page 14: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/14.jpg)
Sistemi Operativi 4.14
Problema produttore–consumatore
• E’ un paradigma classico per processi cooperanti. Il processo produttore produce informazioni che vengono consumate da un processo consumatore.
– Buffer illimitato: non vengono posti limiti pratici alla dimensione del buffer.
– Buffer limitato: si assume che la dimensione del buffer sia fissata.
![Page 15: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/15.jpg)
Sistemi Operativi 4.15
Soluzione con buffer limitato e memoria condivisa
• Dati condivisi
var n;
type item = … ;
var buffer: array [0..n–1] of item;
in, out: 0..n–1;
• Processo produttore
repeat
…
produce un elemento in nextp
…
while in+1 mod n = out do no-op;
buffer [in] := nextp;
in := in+1 mod n;
until false;
![Page 16: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/16.jpg)
Sistemi Operativi 4.16
Soluzione con buffer limitato
• Processo consumatore
repeat
while in = out do no-op;
nextc := buffer [out];
out := out+1 mod n;
…
consuma l’elemento in nextc
…
until false;
• La soluzione è corretta, ma lo schema permette di avere al massimo n -1 elementi contemporaneamente contenuti nel buffer.
![Page 17: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/17.jpg)
Sistemi Operativi 4.17
Thread
• Un thread (o lightweight process, LWP) è l’unità di base di utilizzo della CPU e consiste di :
– Program counter– Insieme dei registri – Spazio dello stack
• Un thread condivide con i thread ad esso associati:– sezioni di codice– sezioni dati– risorse del sistema operativo
L’insieme dei tread e dell’ambiente da essi condiviso è chiamato task.
• Un processo tradizionale, o heavyweight corrisponde ad un task con un solo thread
![Page 18: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/18.jpg)
Sistemi Operativi 4.18
Thread
• In un task con più thread, mentre un thread è blocccato e in attesa, un secondo thread nello stesso task può essere in esecuzione.
– La cooperazione di più thread nello steso job fornisce un più grande throughput e prestazioni migliorate.
– Applicazioni che richiedono la condivisione di un buffer comune (es. produttore-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 di kernel (OS/2).
• Thread a livello di utente: supportato sopra al kernel, per mezzo di chiamate di libreria a livello utente.
• Approcci ibridi implementano thread sia a livello di kernel che a livello utente (Solaris 2).
![Page 19: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/19.jpg)
Sistemi Operativi 4.19
Interprocess Communication (IPC)
• Meccanismo per la comunicazione e sincronizzazione fra processi.
• Sistema di messaggi – i processi comunicano fra di loro senza far uso di variabili condivise.
• IPC consente due operazioni:– send(messaggio) – la dimensione del messaggio può essere fissa o
variabile– receive(messaggio)
• Se P e Q vogliono comunicare, hanno bisogno di:– stabilire un canale di comunicazione fra di loro– scambiare messaggi per mezzo di send e receive
• Implementazione del canale di comunicazione– fisica (es. memoria condivisa, bus hardware)– logica (es. proprietà logiche)
![Page 20: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/20.jpg)
Sistemi Operativi 4.20
Informazioni di implementazione
• Come vengono stabiliti i canali (connessioni)?
• Si può assegnare un canale a più di due processi?
• Quanti canali possono esserci fra ciascuna coppia di processi comunicanti?
• Qual è la capacità di un canale?
• Dimensione del messaggio che può gestire un canale fissa o variabile?
• Canale monodirezionale o bi-direzionale?
![Page 21: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/21.jpg)
Sistemi Operativi 4.21
Comunicazione diretta
• I processi devono “nominare” esplicitamente i loro interlocutori:
– send (P, messaggio) – invia un messaggio al processo P
– receive(Q, messaggio) – riceve un messaggio dal processo Q
• Proprietà del canale di comunicazione
– I canali vengono stabiliti automaticamente.
– Un canale è associato esattamente a due processi.
– Tra ogni coppia di processi comunicanti esiste esattamente un canale.
– Il canale può essere unidirezionale, ma usualmente è bidirezionale.
![Page 22: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/22.jpg)
Sistemi Operativi 4.22
Comunicazione indiretta
• I messaggi vengono inviati a delle mailbox (indicate anche come porte) e da esse ricevuti.
– Ciascuna mailbox è idendificata con un unico id.– 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 comune– Un canale può essere associato a più di un processo.– Ogni coppia di processi può condividere più canali di comunicazione.– I canali possono essere unidirezionali o bidirezionali.
• Operazioni– creare una nuova mailbox– inviare e ricevere messaggi attraverso la mailbox– distruggere una mailbox
![Page 23: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/23.jpg)
Sistemi Operativi 4.23
Comunicazione indiretta
• Condivisione di mailbox
– P1, P2, e P3 condividono la mailbox A.
– P1, invia; P2 e P3 ricevono.
– Chi prende il messaggio?
• Soluzioni
– Permettere ad un canale di essere associato ad al più due processi.
– Permettere ad un solo processo alla volta di eseguire un’operazione di ricezione.
– Permettere al sistema di selezionare arbitrariamente il ricevente. Il sistema può comunicare l’identità del ricevente al trasmittente.
![Page 24: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/24.jpg)
Sistemi Operativi 4.24
Buffering
• La coda dei messaggi legati ad un canale può essere implementata in tre modi.
1. Capacità zero – il canale non può avere messaggi in attesa al suo interno. Il trasmittente deve attendere che il ricevente abbia ricevuto il messaggio (rendezvous).
2. Capacità limitata – lunghezza finita: n messaggi.Il trasmittente deve attendere se il canale è pieno.
3. Capacità illimitata – lunghezza infinita. Il trasmittente non attende mai.
![Page 25: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/25.jpg)
Sistemi Operativi 4.25
Condizioni di eccezione
• Terminazione del processo
• Messaggi perduti
• Messaggi alterati
![Page 26: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/26.jpg)
Sistemi Operativi 4.26
Thread supportati sotto Solaris 2
• Solaris 2 è una versione di UNIX con supporto per thread a livello kernel e utente, con multprocessing simmetrico, e scheduling in tempo reale.
• LWP – è ad un livello intermedio fra thread di utente e thread di kernel.
• Requisiti di risorse a seconda dei tipi di thread:– Kernel thread: piccola struttura dati e uno stack; il cambiamento di
thread non richiede di cambiare le informazioni di accesso alla memoria. Relativamente veloce.
– LWP: PCB con dati dei registri, informazioni di contabilizzazione e informazioni di memoria. Cambiamento fra LWP è relativamente lento.
– User–level thread: ha bisogno solamente dello stack e del program–counter; non essendo impiegato il kernel, è più veloce. Il kernel vede solo LWP che supportano thread a livello utente.
![Page 27: 4.1 Sistemi Operativi Processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazioni fra processi](https://reader035.vdocuments.site/reader035/viewer/2022062701/5542eb4e497959361e8bc82f/html5/thumbnails/27.jpg)
Sistemi Operativi 4.27
Thread di Solaris 2