36
Silberschatz, Galvin and Gagne ©2009 perating System Concepts – 8 th Edition Processi

Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

Embed Size (px)

Citation preview

Page 1: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Processi

Page 2: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.2 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Outline

Concetto di processo

Stato di un processo

Scheduling dei processi

Cambio di contesto

Operazioni sui processi

Comunicazioni tra processi

Memoria condivisa

Scambio di messaggi

Comunicazione fra processi remoti

Page 3: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.3 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Outline

Concetto di processo

Stato di un processo

Scheduling dei processi

Cambio di contesto

Operazioni sui processi

Comunicazioni tra processi

Memoria condivisa

Scambio di messaggi

Comunicazione fra processi remoti

Page 4: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.4 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Definizione di processo - 1

Un SO esegue programmi di varia natura: Sistemi batch: job Sistemi time-sharing: processi utente o task

Normalmente si utilizzano i termini job o processo in maniera Intercambiabile

Processo è un programma in esecuzione L’esecuzione di un processo deve avvenire in modo sequenziale

I programmi sono passivi, i processi attivi I programmi diventano processi quando il loro file eseguibile viene caricato in memoria

Page 5: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.5 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Definizione di processo - 2

Un processo include: Una sezione di testo (il codice del programma da

eseguire) Una sezione dati (variabili globali) Uno heap (letteralmente mucchio, grande quantità -

memoria dinamicamente allocata durante l’esecuzione del task)

Lo stack (dati temporanei -parametri per i sottoprogrammi, indirizzi di rientro - e variabili locali)

Il program counter Il contenuto dei registri della CPU

Page 6: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.6 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Stato di un processo

Mentre viene eseguito, un processo è soggetto a transizioni di stato, definite in parte dall’attività corrente del processo ed in parte da eventi esterni, asincroni rispetto alla sua esecuzione:

Nuovo (new): Il processo è creato

Esecuzione (running): Le istruzioni di un processo sono eseguite

Attesa (waiting): Il processo attente che si verifichi qualche evento

Pronto (ready): Il processo attende che sia assegnato ad un processore

Terminato (terminated): Il processo ha terminato la sua esecuzione

Page 7: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.7 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Diagramma di transizione degli stati - 1

Transizione ammesso

Lo scheduler a lungo/medio termine ammette il nuovo processo alla contesa per la CPU

Transizione dispatch

Il dispatcher in seguito al blocco del processo in esecuzione sceglie il processo fra tutti quelli, per essere eseguito

Transizione interruzione (o revoca o pre rilascio)

…nello scheduling a priorità, avviene quando arriva un processo con priorità maggiore

…nei sistemi a partizione di tempo, avviene quando il quanto di tempo è esaurito

…avviene al verificarsi di un interrupt esterno

Page 8: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.8 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Diagramma di transizione degli stati - 2

Transizione attesa di I/O

Richiesta servizio di i/O o attesa di evento

Transizione completamento di I/O

Servizio completato

Transizione uscita

Terminazione normale

Terminazione anomala quando uso scorretto risorse (limiti memoria)

Page 9: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.9 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Blocco di controllo dei processi (PCB)

Informazione associata ad ogni processo che contiene:

Stato del processo

Nome (numero del processo)

Contesto del processo

Contatore di programma

Registri di CPU

Informazioni sulla gestione della memoria

Informazioni di contabilizzazione delle risorse

Tempo di utilizzo della CPU, limiti di tempo

Informazioni sullo stato dell’I/O

File aperti, dispositivi I/O assegnati

Memorizzata in un’area di memoria accessibile solo al SO

Page 10: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.10 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Commutazione della CPU fra processi

Page 11: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.11 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Outline

Concetto di processo

Stato di un processo

Scheduling dei processi

Cambio di contesto

Operazioni sui processi

Comunicazioni tra processi

Memoria condivisa

Scambio di messaggi

Comunicazione fra processi remoti

Page 12: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.12 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Scheduling: code di processi

In un sistema multi-programmato più processi possono essere eseguiti contemporaneamente per massimizzare l’utilizzo della CPU

Lo scheduler dei processi ha il compito di selezionare il processo da mandare in esecuzione

Code:

Coda dei job: l’insieme di tutti i processi presenti nel sistema

Ready queue (coda dei processi pronti): l’insieme di tutti i processi che si trovano in memoria e pronti per essere mandati in esecuzione

Coda ai dispositivi: l’insieme dei processi in attesa dell’I/O da un dispositivo

Durante la sua vita un processo migra nelle diverse code

Page 13: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.13 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Ready queue e code ai dispositivi di I/O

Page 14: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.15 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Scheduler Gli scheduler si dividono generalmente in due tipi:

Scheduler a lungo termine (job scheduler)

Seleziona quale processo deve essere prelevato dalla memoria di massa ed inserito nella coda dei processi pronti

Scheduler della CPU (CPU scheduler)

Seleziona quale è il prossimo processo da mandare in esecuzione sulla CPU

Lo scheduler della CPU è invocato molto più frequentemente, ad esempio una volta ogni 100 millisecondi

Deve essere molto veloce altrimenti si sprecano cicli di CPU

Lo scheduler a lungo termine è invocato meno frequentemente, ad esempio ogni secondo o minuto

Controlla il grado di multiprogrammazione ovvero il numero di processi presenti in memoria

I processi possono essere descritti come:

Processi I/O bound

Il tempo è speso in prevalenza in attesa di I/O da un dispositivo

Processi CPU bound

Il tempo è speso in prevalenza in computazione e quindi sulla CPU

Uno scheduler a medio termine è impiegato per eliminare momentaneamente processi dalla memoria per ridurre il grado di multiprogrammazione

Il meccanismo è chiamato avvicendamento dei processi in memoria (swapping)

Il processo viene rimosso dalla memoria per poi essere ricaricato in memoria (scheduler a lungo termine)

Page 15: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.16 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Cambio di contesto: context switch

Il cambio di contesto (context switch) è il momento in cui la CPU passa all’esecuzione di un altro processo

Il sistema deve salvare lo stato del processo (rappresentato dal suo PCB) corrente e caricare lo stato del prossimo processo

Salva e carica i PCB

Il cambio di contesto deve avvenire velocemente perché è pura fase di overhead

Ovvero il sistema non fa nulla di utile in quel momento

Il tempo di context switch (msec) dipende dal supporto hardware

Velocità di accesso alla memoria, numero di registri da copiare, istruzioni speciali, gruppi di registri multipli

Page 16: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.17 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Outline

Concetto di processo

Stato di un processo

Scheduling dei processi

Cambio di contesto

Operazioni sui processi

Comunicazioni tra processi

Memoria condivisa

Scambio di messaggi

Comunicazione fra processi remoti

Page 17: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.18 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Creazione di processi

La creazione dei processi inizia da un processo padre che crea dei processi figli che a loro volta creano altri processi formando un albero di processi

Risorse:

Padre e figlio condividono tutte le risorse

Il figlio condivide solo un sottoinsieme delle risorse

Padre e figlio non condividono risorse

Esecuzione:

Padre e figlio sono eseguiti in maniera concorrente

Il padre attende la fine del figlio

Lo spazio di indirizzamento:

Il figlio è un duplicato esatto del padre

Il figlio carica un programma nel suo spazio di memoria

Generalmente un processo è identificato e gestito attraverso un identificativo di processo (process identifier - pid)

Page 18: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.19 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Un albero di processi

Page 19: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.20 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Creazione di processi in UNIX/Linux

La system call fork() crea un nuovo processo

Il processo figlio è una copia identica del padre

Il figlio può utilizzare la exec() per sostituire lo spazio di memoria del processo originale con un nuovo programma

Page 20: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.21 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Terminazione di processi

Un processo termina quando termina l’esecuzione della sua ultima istruzione ed il processo invoca la chiamata exit() che compie le azioni:

Restituisce dati (output) al processo padre (attraverso la system call wait())

Dealloca le risorse del processo

Un processo padre può terminare l’esecuzione di un processo figlio nei seguenti modi (abort()):

Il figlio ha ecceduto nell’uso delle risorse allocate

Il compito assegnato al figlio non è più richiesto

Il processo padre termina e di conseguenza anche il figlio viene terminato

In alcuni sistemi operativi questa operazione di terminazione di tutti i figli a partire dal padre è chiamata terminazione a cascata

Page 21: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.22 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Outline

Concetto di processo

Stato di un processo

Scheduling dei processi

Cambio di contesto

Operazioni sui processi

Comunicazioni tra processi

Memoria condivisa

Scambio di messaggi

Comunicazione fra processi remoti

Page 22: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.23 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Comunicazione fra processi

I processi di un Sistema Operativo possono essere

Indipendenti

Ogni processo non può influire ne subire l’influenza di un altro processo

Cooperanti

Un processo può influire o essere influenzato dall’esecuzione di un altro processo

La presenza o meno di dati condivisi determina univocamente la natura del processo

Vantaggi della cooperazione fra processi

Condivisione di informazioni: ambienti con accesso concorrente a risorse condivise

Accelerazione del calcolo: possibilità di elaborazione parallela (in presenza di più CPU)

Modularità: funzioni distinte che accedono a dati condivisi

La comunicazione fra processi viene chiamata IPC (interprocess communication)

Page 23: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.24 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Meccanismi per IPC

Affinché i processi possano cooperare necessitano di un meccanismo per la comunicazione tra processi (IPC - interprocess communication)

I meccanismi fondamentali sono:

Memoria condivisa: massima efficienza nella comunicazione

Richiede l’intervento del kernel solo per l’allocazione della memoria

Gli accessi successivi sono gestiti (/arbitrati) dai processi

Scambio di messaggi: utile per trasmettere piccole quantità di dati, nessuna conflittualità, utilizzo di system call

Page 24: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.25 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Memoria condivisa

Un processo alloca parte del suo spazio di indirizzamento

Costituisce la memoria condivisa

I processi cooperanti annettono la zona di memoria al loro spazio di indirizzi

La gestione della memoria condivisa, una volta allocata, non dipende dal SO

Il tipo e la collocazione dei dati sono determinati dai processi

…che hanno anche la responsabilità di non scrivere nella stessa locazione simultaneamente

Page 25: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.26 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Scambio di messaggi

I processi comunicano fra loro senza far uso di variabili condivise Meccanismo per la comunicazione fra processi particolarmente utile in ambiente distribuito

Il meccanismo di scambio dei messaggi prevede due primitive di comunicazione: send(message) receive(message)

Se due processi P e Q vogliono comunicare Stabiliscono un canale di comunicazione tra di loro Inviano e ricevono messaggi tra loro tramite send/receive

Page 26: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.27 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Questioni implementative

In fase di progettazione occorre decidere:

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?

Sono preferibili canali monodirezionali o bidirezionali?

Esistono due tipologie realizzative:

Comunicazione diretta

Comunicazione indiretta

Page 27: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.28 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Comunicazione diretta

Nella comunicazione diretta i processi devono conoscere la reciproca identità

Le primitive sono definite nel seguente modo:

send(P, message) – invia un messaggio al processo P

receive(Q, message) – riceve un messaggio dal processo Q

Le caratteristiche della comunicazione diretta sono:

I collegamenti sono stabiliti automaticamente

Un canale è associato esattamente a due processi

Esiste un canale tra ogni coppia di processi

Il link deve essere uni‐direzione ma solitamente è bi-direzionale

Page 28: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.29 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Comunicazione indiretta - 1

I messaggi vengono inviati/ricevuti da mailbox (porte)

Ciascuna mailbox è identificata con un id unico

I processi possono comunicare solamente se condividono una mailbox

Proprietà dei canali di comunicazione:

Tra una coppia di processi si stabilisce una comunicazione se e solo se condividono una mailbox

Un canale può essere associato a più processi

Ogni coppia di processi può condividere più canali di comunicazione

I canali possono essere unidirezionali o bidirezionali

Page 29: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.30 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Comunicazione indiretta - 2

Le operazioni previste nella comunicazione indiretta sono:

Crea una nuova porta

Invia e ricevi un messaggio attraverso una porta

Cancella una porta

Le primitive di comunicazione sono definite nel seguente modo:

send(A, message) – invia un messaggio alla porta A

receive(A, message) – ricevi un messaggio dalla porta A

Page 30: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.31 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Comunicazione indiretta - 3

Un porta può essere condivisa tra più processi:

P1, P2, ane P3 condividono la porta A

P1 invia un messaggio

P2 e P3 leggono il messaggio dalla porta A

Chi dei due riceverà il messaggio?

Il Sistema Operativo si incarica di scegliere un solo processo a cui consegnare il messaggio. La scelta sarà comunicata al Mittente

Per evitare quanto sopra:

Si permette un solo canale tra due processi

Si permette a un solo processo alla volta di eseguire una operazioni di ricezione

Page 31: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.32 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Sincronizzazione

La comunicazione tra processi può essere

Sincrona (bloccante)

Asincrona (non‐bloccante)

Nella comunicazione sincrona

Invio

blocca il mittente finché il destinatario non ha ricevuto il messaggio

Ricezione

blocca il destinatario nell’attesa della ricezione del messaggio

Nella comunicazione asincrona

Invio

il processo invia il messaggio e riprende la sua esecuzione

Ricezione

il destinatario legge un messaggio oppure un valore nullo

Page 32: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.33 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Code di messaggi (Buffering)

I messaggi scambiati tra processi risiedono all’interno di un buffer di memoria

Il buffer è normalmente una coda di messaggi

La coda dei messaggi può essere implementata in diversi modi:

1. Capacità zero – 0 messaggi

Il mittente deve attendere che il destinatario prenda il messaggio (rendezvous)

2. Capacità limitata – la coda ha lunghezza n

Il mittente attende se la coda è piena

3. Capacità illimitata ‐ la coda ha lunghezza infinita

Il mittente non attende mai

Page 33: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.34 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Outline

Concetto di processo

Stato di un processo

Scheduling dei processi

Cambio di contesto

Operazioni sui processi

Comunicazioni tra processi

Memoria condivisa

Scambio di messaggi

Comunicazione fra processi remoti

Page 34: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.35 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Comunicazioni nei sistemi distribuiti

Socket

Chiamate di procedure remote (Remote Procedure Call - RPC)

Invocazione di metodi remoti (Remote Method Invocation - RMI, Java)

Page 35: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.36 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Socket

Una socket è definita come l’estremità (end-point) di un canale di comunicazione

Ogni socket è identificata da un indirizzo IP concatenato ad un numero di porta

Esempio: la socket 161.25.19.8:1625 si riferisce alla porta 1625 sull’host 161.25.19.8

La comunicazione si stabilisce fra coppie di socket (una per ogni processo)

In una architettura client-server…

…il server attende la richiesta del client, stando in ascolto ad una porta specificata

Quando il server riceve una richiesta, se accetta la connessione proveniente dalla socket del client, si stabilisce la comunicazione

I server che svolgono servizi specifici stanno in ascolto su porte note (per esempio, 23: telnet, 21: ftp, 80: http)

Tutte le porte al di sotto del valore 1024 sono considerate note e si usano per realizzare servizi standard

La comunicazione tramite socket è una forma di comunicazione fra sistemi distribuiti a basso livello

Le socket permettono la trasmissione di un flusso non strutturato di byte:

È responsabilità del client e del server interpretare ed organizzare i dati

Page 36: Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processi

3.37 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Chiamate di procedure remote

Il concetto di chiamata a procedura remota estende il paradigma della chiamata di procedura a processi residenti su sistemi remoti collegati in rete

La semantica delle RPC (Remote Procedure Calls) permette ad un client di invocare una procedura presente su un sistema remoto nello stesso modo in cui esso invocherebbe una procedura locale

Il sistema delle RPC nasconde i dettagli necessari alla comunicazione

In Java RMI

L’invocazione di metodi remoti è una funzione del linguaggio Java simile alla RPC

L’RMI permette ad un processo Java residente su una data JVM l’invocazione di un metodo su un oggetto remoto, dove per remoto si intende un oggetto residente su una diversa macchina virtuale