32
Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi

Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

Embed Size (px)

Citation preview

Page 1: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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

Page 2: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi 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

Page 3: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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

Page 4: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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)

Page 5: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

Silberschatz, Galvin and Gagne 20024.5Operating System Concepts

Commutazione della CPU fra processiCommutazione della CPU fra processi

Page 6: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi 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.

Page 7: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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

Page 8: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 9: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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

Page 10: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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).

Page 11: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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).

Page 12: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 13: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

Silberschatz, Galvin and Gagne 20024.13Operating System Concepts

Albero dei processi in un tipico sistema UNIXAlbero dei processi in un tipico sistema UNIX

Page 14: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 15: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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

Page 16: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 17: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 18: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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

Page 19: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 20: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

Silberschatz, Galvin and Gagne 20024.20Operating System Concepts

Processi a thread singolo e multithreadProcessi a thread singolo e multithread

Page 21: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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).

Page 22: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 23: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 24: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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).

Page 25: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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).

Page 26: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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?

Page 27: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 28: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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

Page 29: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 30: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 31: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.

Page 32: Silberschatz, Galvin and Gagne 2002 4.1 Operating System Concepts I processi Concetto di processo Scheduling dei processi Operazioni sui processi Processi

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.