Processi
Operating System Concepts – 8th Edition
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.2
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.3
Silberschatz, Galvin and Gagne ©2009
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

Operating System Concepts – 8th Edition
3.4
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.5
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.6
Silberschatz, Galvin and Gagne ©2009
Diagramma di transizione degli stati - 1

Transizione ammesso


Transizione dispatch


Lo scheduler a lungo/medio
termine ammette il nuovo
processo alla contesa per la CPU
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
Operating System Concepts – 8th Edition
3.7
Silberschatz, Galvin and Gagne ©2009
Diagramma di transizione degli stati - 2

Transizione attesa di I/O


Transizione completamento di I/O


Richiesta servizio di i/O o attesa
di evento
Servizio completato
Transizione uscita

Terminazione normale

Terminazione anomala quando
uso scorretto risorse (limiti
memoria)
Operating System Concepts – 8th Edition
3.8
Silberschatz, Galvin and Gagne ©2009
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


Informazioni sullo stato dell’I/O


Tempo di utilizzo della CPU, limiti di tempo
File aperti, dispositivi I/O assegnati
Memorizzata in un’area di memoria accessibile solo al SO
Operating System Concepts – 8th Edition
3.9
Silberschatz, Galvin and Gagne ©2009
Commutazione della CPU fra processi
Operating System Concepts – 8th Edition
3.10
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.11
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.12
Silberschatz, Galvin and Gagne ©2009
Ready queue e code ai dispositivi di I/O
Operating System Concepts – 8th Edition
3.13
Silberschatz, Galvin and Gagne ©2009
Scheduler

Gli scheduler si dividono generalmente in due tipi:

Scheduler a lungo termine (job scheduler)


Scheduler della CPU (CPU scheduler)


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


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


Seleziona quale processo deve essere prelevato dalla memoria di massa ed inserito
nella coda dei processi pronti
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)
Operating System Concepts – 8th Edition
3.15
Silberschatz, Galvin and Gagne ©2009
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


Il cambio di contesto deve avvenire velocemente perché è pura fase di overhead


Salva e carica i PCB
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
Operating System Concepts – 8th Edition
3.16
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.17
Silberschatz, Galvin and Gagne ©2009
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)
Operating System Concepts – 8th Edition
3.18
Silberschatz, Galvin and Gagne ©2009
Un albero di processi
Operating System Concepts – 8th Edition
3.19
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.20
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.21
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.22
Silberschatz, Galvin and Gagne ©2009
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)
Operating System Concepts – 8th Edition
3.23
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.24
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.25
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.26
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.27
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.28
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.29
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.30
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.31
Silberschatz, Galvin and Gagne ©2009
Sincronizzazione


La comunicazione tra processi può essere

Sincrona (bloccante)

Asincrona (non‐bloccante)
Nella comunicazione sincrona

Invio


Ricezione


blocca il mittente finché il destinatario non ha ricevuto il messaggio
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
Operating System Concepts – 8th Edition
3.32
Silberschatz, Galvin and Gagne ©2009
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

2.
Capacità limitata – la coda ha lunghezza n

3.
Il mittente deve attendere che il destinatario prenda il messaggio (rendezvous)
Il mittente attende se la coda è piena
Capacità illimitata ‐ la coda ha lunghezza infinita

Il mittente non attende mai
Operating System Concepts – 8th Edition
3.33
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.34
Silberschatz, Galvin and Gagne ©2009
Comunicazioni nei sistemi distribuiti

Socket

Chiamate di procedure remote (Remote Procedure Call - RPC)

Invocazione di metodi remoti (Remote Method Invocation - RMI, Java)
Operating System Concepts – 8th Edition
3.35
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.36
Silberschatz, Galvin and Gagne ©2009
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
Operating System Concepts – 8th Edition
3.37
Silberschatz, Galvin and Gagne ©2009
Scarica

comunicazione tra processi