50
I Processi I Processi

I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Embed Size (px)

Citation preview

Page 1: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

I ProcessiI Processi

Page 2: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.2

I processiI processi

Definizione di processo

Scheduling dei processi

Operazioni sui processi

Processi cooperanti

Comunicazione fra processi

Comunicazioni in sistemi clientserver

Page 3: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.3

Definizione di processo Definizione di processo 1 1Un SO esegue programmi di varia natura:

Sistemi batch: jobjob

Sistemi timesharing: programmi utenteprogrammi utente o tasktask

I libri di testo impiegano indifferentemente i termini jobjob o processoprocesso

ProcessoProcesso

Un programma in esecuzione; l’esecuzione di un processo deve avvenire in modo sequenziale

…o, in alternativa, la sequenza di eventi cui da luogo un elaboratore quando opera sotto il controllo di un particolare programma

Page 4: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.4

Definizione di processo Definizione di processo 2 2In realtà, un programma descrive non un processo, ma un insieme di processi istanze del programmaistanze del programma ognuno dei quali è relativo all’esecuzione del programma da parte dell’elaboratore per un particolare insieme di dati in ingresso

Un processo include:una sezione di testo (il codice del programma da eseguire)

il program counterprogram counter (ed il contenuto dei registri della CPU)

lo stack stack (dati temporanei e variabili locali)

una sezione dati (variabili globali)

uno heapheap (memoria dinamicamente allocata durante l’esecuzione del processo)

Page 5: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.5

Processo allocato in memoriaProcesso allocato in memoria

Page 6: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.6

Stato del processo Stato del processo 1 1

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

NewNew (nuovo): Il processo viene creato

RunningRunning (in esecuzione): Se ne eseguono le istruzioni

WaitingWaiting (in attesa): Il processo è in attesa di un evento

ReadyReady (pronto): Il processo è in attesa di essere assegnato ad un processore

TerminatedTerminated (terminato): Il processo ha terminato la propria esecuzione

Page 7: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.7

Diagramma di transizione di stato di un Diagramma di transizione di stato di un processoprocesso

Page 8: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.8

Stato del processo Stato del processo 2 2

Lo stato newnew corrisponde alla creazione di un nuovo processo

La transizione dallo stato newnew a readyready avviene quando il SO (scheduler a lungo/medio termine) ammette il nuovo processo alla contesa attiva per la CPU

La transizione dallo stato readyready a runningrunning avviene ad opera del dispatcherdispatcher quando, in seguito al blocco del processo in esecuzione, il processo viene scelto, fra tutti i processi pronti, per essere eseguito

Page 9: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.9

Stato del processo Stato del processo 3 3

La transizione da runningrunning a readyready, chiamata revocarevoca o prerilascioprerilascio avviene…

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

…nei sistemi a partizione di tempo, per esaurimento del quanto

…al verificarsi di un interrupt esterno

La transizione da runningrunning a waitingwaiting avviene per la richiesta di un servizio di I/O al SO, mentre il passaggio da waiting waiting a ready ready avviene al termine del servizio

Page 10: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.10

Stato del processo Stato del processo 4 4

Lo stato terminatedterminated si raggiunge per:

terminazione normale, con chiamata al SO per indicare il completamento delle attività

terminazione anomala

uso scorretto delle risorse (superamento dei limiti di memoria, superamento del tempo massimo di utilizzo della CPU, etc.)

esecuzione di istruzioni non consentite o non valide (trap)

Page 11: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.11

Process Control Block Process Control Block 1 1

Ad ogni processo è associata una struttura dati, il descrittore di processo Process Process Control Block Control Block (PCB)(PCB)

I dati utilizzati per descrivere i processi dipendono dal SO e dalla struttura della macchina fisica

Le informazioni contenute nei PCB sono vitali per il SO: devono essere memorizzate in un’area di memoria accessibile solo dal nucleo del SO

Page 12: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.12

Process Control Block Process Control Block 2 2

Informazione associata a ciascun processo:

Stato del processo

Nome (numero) del processo

Contesto del processoContesto del processo: program counter, registri della CPU (accumulatori, registri indice, stack pointer)

Informazioni sullo scheduling della CPU (priorità, puntatori alle code di scheduling)

Informazioni sulla gestione della memoria

Informazioni di contabilizzazione delle risorse: elenco dispositivi assegnati, file aperti, tempo di utilizzo della CPU

Page 13: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.13

Commutazione della CPU fra Commutazione della CPU fra processiprocessi

Page 14: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.14

Code per lo scheduling dei Code per lo scheduling dei processiprocessi

Coda dei jobCoda dei job — Insieme di tutti i processi presenti nel sistema

Ready queueReady queue (Coda dei processi prontiCoda dei processi pronti) — Insieme dei processi pronti ed in attesa di essere eseguiti, che risiedono in memoria centrale

Code dei dispositiviCode dei dispositivi — Insieme dei processi in attesa per un dispositivo di I/O

I processi migrano fra le varie code

Page 15: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.15

Ready queue e code ai dispositivi di Ready queue e code ai dispositivi di I/OI/O

Page 16: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.16

Diagramma per lo scheduling dei Diagramma per lo scheduling dei processiprocessi

I riquadri rappresentano le code

Le ellissi rappresentano le risorse che servono le code

Le frecce indicano il flusso dei processi nel sistema

Page 17: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.17

Tipi di schedulerTipi di scheduler

Scheduler a lungo termineScheduler a lungo termine (o scheduler dei job): seleziona quali processi devono essere portati dalla memoria di massa alla ready queue (in memoria centrale)

Scheduler a breve termineScheduler a breve termine (o scheduler della CPU): seleziona quale processo debba essere eseguito successivamente ed alloca la CPU

Page 18: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.18

Scheduler a medio termineScheduler a medio termine

Lo scheduler a medio termine scheduler a medio termine (o swapperswapper ) rimuove i processi dalla memoria (e dalla contesa per la CPU) e riduce il grado di multiprogrammazione

Page 19: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.19

Tipi di schedulerTipi di scheduler (Cont.) (Cont.)

Lo scheduler a breve termine viene chiamato molto spesso (intervalli misurabili in millisecondi) deve essere veloceLo scheduler a lungo termine viene chiamato molto raramente (secondi, minuti) può essere lento, ma efficienteLo scheduler a lungo termine controlla il grado grado didi multiprogrammazionemultiprogrammazioneI processi possono essere classificati in:

ProcessiProcessi I/O– I/O–boundbound : impiegano più tempo effettuando I/O rispetto al tempo impiegato per elaborazioni (in generale, si hanno molti burstburst di CPU di breve durata)ProcessiProcessi CPU–CPU–boundbound : impiegano più tempo effettuando elaborazioni (in generale, si hanno pochi burst di CPU di lunga durata)

Page 20: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.20

Context SwitchContext SwitchQuando la CPU passa da un processo all’altro, il sistema deve salvare il contestocontesto del vecchio processo e caricare il contesto, precedentemente salvato, per il nuovo processo in esecuzione

Il contesto è rappresentato all’interno del PCB del processo e comprende i valori dei registri della CPU, lo stato del processo e le informazioni relative all’occupazione di memoria

Il tempo di contextcontextswitchswitch è un sovraccarico (overheadoverhead ); il sistema non lavora utilmente mentre cambia contesto

Il tempo di contextswitch (msec) dipende dal supporto hardware (velocità di accesso alla memoria, numero di registri da copiare, istruzioni speciali, gruppi di registri multipli)

Page 21: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.21

Creazione di processi Creazione di processi 1 1Il processo padre crea processi figli che, a loro volta, creano altri processi, formando un albero di processi

Condivisione di risorseCondivisione di risorse

Il padre e i figli condividono tutte le risorse

I figli condividono un sottoinsieme delle risorse del padre

Il padre e i figli non condividono risorse

EsecuzioneEsecuzione

Il padre e i figli vengono eseguiti in concorrenza

Il padre attende la terminazione dei processi figli

Spazio degli indirizziSpazio degli indirizzi

Il processo figlio è un duplicato del processo padre

Nel processo figlio è stato caricato un diverso programma

Page 22: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.22

Albero dei processi in SolarisAlbero dei processi in Solaris

Page 23: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.23

In UNIXUNIX…

…la system call fork()fork() crea un nuovo processo

quindi, la exec()exec() viene impiegata dopo la fork()fork() per sostituire lo spazio di memoria del processo originale con un nuovo programma

Creazione di processi Creazione di processi 2 2

Page 24: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.24

#include <sys/types.h> /*Primitive system data types */#include <stdio.h>#include <unistd.h> /*Standard symbolic constants and types */

int main(){

pid_t pid;

pid fork(); /* genera un nuovo processo */if (pid < 0) { /* errore*/

fprintf(stderr, “Generazione del nuovo processo fallita”);

exit(-1); }else if (pid 0) /* Processo figlio */

execlp(“/bin/ls”, “ls”, NULL);else { /* Processo padre */

wait(NULL);printf(“Il processo figlio ha terminato”);exit(0);

}}

Creazione di processi Creazione di processi 3 3

Page 25: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.25

Terminazione di processi Terminazione di processi 1 1

Il processo esegue l’ultima istruzione e chiede al sistema operativo di essere cancellato per mezzo di una specifica chiamata di sistema (exit()exit() in UNIXUNIX) che compie le seguenti operazioni:

Può restituire dati (output) al processo padre (attraverso la system call wait()wait() )

Le risorse del processo vengono deallocate dal sistema operativo

Page 26: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.26

Terminazione di processi Terminazione di processi 2 2

Il padre può terminare l’esecuzione dei processi figli (abortabort ) se…

Il figlio ha ecceduto nell’uso delle risorse ad esso allocate

Il compito assegnato al figlio non è più richiesto

Il padre termina

Alcuni sistemi operativi non consentono ad un processo figlio di continuare l’esecuzione se il padre è terminato Questo fenomeno è detto terminazione a cascataterminazione a cascata e viene avviato dal SO

Nel caso di UNIX, i processi “orfani” non vengono terminati, ma diventano figli di init()init(), che è il progenitore di tutti i processi utente

Page 27: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.27

Thread Thread 1 1

Alla base del concetto di threadthread sta la constatazione che il concetto di processo è basato su due aspetti:

Possesso delle risorse

Esecuzione

I due aspetti sono indipendenti e come tali possono essere gestiti dal SO

L’elemento che viene eseguito è il thread

L’elemento che possiede le risorse è il processo

Page 28: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.28

Thread Thread 2 2Il termine multithreadingmultithreading è utilizzato per descrivere la situazione in cui ad un processo sono associati più thread

Tutti i thread condividono le risorse del processo, risiedono nello stesso spazio di indirizzamento ed hanno accesso agli stessi dati

Ad ogni thread è però associato uno stato di esecuzione, uno spazio di memoria per le variabili locali, uno stack, un contesto un descrittore

Le informazioni associate al thread sono poche: le operazioni di cambio di contesto, di creazione e terminazione sono più semplici

Page 29: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.29

Processi cooperanti Processi cooperanti 1 1

Un processo è indipendenteindipendente se la sua esecuzione non può influire sull’esecuzione di altri processi nel sistema o subirne gli effetti

I processi cooperanticooperanti possono influire sull’esecuzione di altri processi o esserne influenzati

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

Vantaggi della cooperazione fra processiCondivisione di informazioni

Accelerazione del calcolo

Modularità

Convenienza

Page 30: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.30

Processi cooperanti Processi cooperanti 2 2

Due meccanismi di comunicazione fra processi (IPCIPC, Inter-Process CommunicationInter-Process Communication):

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

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

Page 31: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.31

Modelli di comunicazioneModelli di comunicazione

(a) Scambio di messaggi (b) Condivisione della memoria

Page 32: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.32

Sistemi a memoria condivisaSistemi a memoria condivisaMemoria condivisa: parte dello spazio di indirizzamento del processo che la alloca

I processi cooperanti che la usano per comunicare dovranno annettere 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 33: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.33

Problema del Problema del produttoreproduttoreconsumatoreconsumatore

È un paradigma classico per processi cooperanti: il processo produttoreproduttore produce informazioni che vengono consumate da un processo consumatoreconsumatore

Buffer illimitatoBuffer illimitato: non vengono posti limiti pratici alla dimensione del buffer

Il consumatore può trovarsi ad attendere nuovi oggetti, ma il produttore può sempre produrne

Buffer limitatoBuffer limitato: si assume che la dimensione del buffer sia fissata

Il consumatore attende se il buffer è vuoto, il produttore se è pieno

Page 34: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.34

Dati condivisi

#define DIM_VETTORE 10

typedef struct {

. . .

} elemento;

elemento vettore[DIM_VETTORE];

int inserisci = 0;

int preleva = 0;

La soluzione ottenuta è corretta, ma consente l’utilizzo di soli DIM_VETTORE1 elementi

Buffer limitato e memoria Buffer limitato e memoria condivisa condivisa 1 1

Page 35: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.35

elemento appena_prodotto;

while (1) {

while (((inserisci + 1) % DIM_VETTORE) preleva)

; /* do nothing */

vettore[inserisci] = appena_prodotto;

inserisci = (inserisci + 1) % DIM_VETTORE;

}

elemento da_consumare;

while (1) {while (inserisci preleva)

; /* do nothing */da_consumare = vettore[preleva];preleva = (preleva + 1) % DIM_VETTORE;

}

Buffer limitato e memoria Buffer limitato e memoria condivisa condivisa 2 2

Processo Processo consumatorconsumatoree

Processo Processo produttorproduttoree

Page 36: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.36

Scambio di messaggiScambio di messaggiMeccanismo per la comunicazione e la sincronizzazione fra processi particolarmente utile in ambiente distribuito

Sistema di messaggi i processi comunicano fra loro senza far uso di variabili condivise

La funzionalità IPC consente due operazioni:send(messaggio)send(messaggio) la dimensione del messaggio può essere fissa o variabile

receive(messaggio)receive(messaggio)

Se i processi P e Q vogliono comunicare, devono:stabilire fra loro un canale di comunicazione

scambiare messaggi per mezzo di send/receive

Implementazione del canale di comunicazione:fisica (es. memoria condivisa, bus, rete)

logica (proprietà logiche)

Page 37: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.37

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?

Sono preferibili canali monodirezionali o bidirezionali?

Page 38: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.38

Comunicazione direttaComunicazione diretta

I processi devono “nominare” esplicitamente i loro interlocutori (modalità simmetrica):

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

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

Proprietà del canale di comunicazione:I canali vengono stabiliti automaticamente

Ciascun canale è associato esattamente ad una coppia di processi

Tra ogni coppia di processi comunicanti esiste esattamente un canale

Il canale può essere unidirezionale (ogni processo collegato al canale può soltanto trasmettere/ricevere), ma è normalmente bidirezionale

Page 39: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.39

Comunicazione indiretta Comunicazione indiretta 1 1

I messaggi vengono inviati/ricevuti da mailboxmailbox (porteporte)

Ciascuna mailbox è identificata con un id id unico

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ù processi

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

I canali possono essere unidirezionali o bidirezionali

Page 40: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.40

Operazioni:

Creare una nuova mailbox

Inviare/ricevere messaggi attraverso mailbox

Distruggere una mailbox

Primitive di comunicazione:

send(A, messaggio)send(A, messaggio) invia un messaggio alla mailbox A

receive(A, messaggio)receive(A, messaggio) riceve un messaggio dalla mailbox A

Comunicazione indiretta Comunicazione indiretta 2 2

Page 41: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.41

Condivisione di mailbox

P1, P2 e P3 condividono la mailbox A

P1 invia; P2 e P3 ricevono

Chi si assicura 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 SO di selezionare arbitrariamente il ricevente; il sistema comunica l’identità del ricevente al trasmittente

Comunicazione indiretta Comunicazione indiretta 3 3

Page 42: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.42

SincronizzazioneSincronizzazioneLo scambio di messaggi può essere sia bloccantebloccante che non–bloccantenon–bloccante

In caso di scambio di messaggi bloccante la comunicazione è sincronasincrona

Il processo mittente si blocca nell’attesa che il processo ricevente, o la porta, riceva il messaggio

Il ricevente si blocca nell’attesa dell’arrivo di un messaggio

RendezvousRendezvous tra mittente e ricevente

In caso di scambio di messaggi non–bloccante la comunicazione è asincronaasincrona

Il processo invia il messaggio e riprende la propria esecuzione

Il ricevente riceve un messaggio valido o un valore nullo

Page 43: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.43

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

2.Capacità limitataCapacità limitata Il canale può avere al più n messaggi in attesa; se il canale è pieno, il trasmittente deve attendere

3.Capacità illimitataCapacità illimitata Il canale può “contenere” infiniti messaggi; il trasmittente non attende mai

Page 44: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.44

Comunicazioni nei sistemi Comunicazioni nei sistemi clientclientserverserver

Socket

Chiamate di procedure remote (Remote Remote Procedure CallProcedure Call RPC)

Invocazione di metodi remoti (Remote Method Remote Method InvocationInvocation RMI, Java)

Page 45: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.45

SocketSocket 1 1

Una socket è definita come l’estremità di un canale di comunicazione

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

Esempio: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)

Page 46: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.46

SocketSocket 2 2

In una architettura clientserver……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

Page 47: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.47

SocketSocket 3 3

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 48: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.48

Comunicazione via socketComunicazione via socket

Page 49: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.49

Chiamate di procedure remoteChiamate 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 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

Page 50: I Processi. Sistemi Operativi a.a. 2007-08 3.2 I processi Definizione di processo Scheduling dei processi Operazioni sui processi Processi cooperanti

Sistemi Operativi a.a. 2007-083.50

Invocazione di metodi remotiInvocazione di metodi remotiL’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