Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese



Похожие документы
Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Sistemi Operativi (modulo di Informatica II)

Processi. Laboratorio Software C. Brandolese

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Pronto Esecuzione Attesa Terminazione

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

CAPITOLO 27 SCAMBIO DI MESSAGGI

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

Inter-Process Communication

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Sistemi Operativi. Processi GESTIONE DEI PROCESSI. Concetto di Processo. Scheduling di Processi. Operazioni su Processi. Processi Cooperanti

Il Sistema Operativo

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

Organizzazione Monolitica

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Programmazione multiprocesso

CREAZIONE PROCESSI IN UNIX 20

Esempio produttori consumatori. Primitive asincrone

File system II. Sistemi Operativi Lez. 20

IPC System V. Code di messaggi

Esercizio sulla gestione di file in Unix

CAPITOLO 7 - SCAMBIO DI MESSAGGI

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Il descrittore di processo (PCB)

ESERCIZI DI PROGRAMMAZIONE C IN AMBIENTE UNIX

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

SISTEMI OPERATIVI. Sincronizzazione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 30/05/2007

Java Virtual Machine

Sistemi Operativi (modulo di Informatica II) I processi

Il File System. Il file system

Il Concetto di Processo

Sistemi Operativi. 3 LEZIONE PROCESSI CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Sistema di protezione (1)

Modello dei processi. Riedizione delle slide della Prof. Di Stefano

Sistema di protezione (2) Protezione (1)

Drivers. Introduzione Tipologie Struttura Interazione con il kernel

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Transmission Control Protocol

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

STRUTTURE DEI SISTEMI DI CALCOLO

I/O su Socket TCP: read()

Sommario. G. Piscitelli

Protezione. Protezione. Protezione. Obiettivi della protezione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Esercitazione [8] Pipe e FIFO

Infrastrutture Software

Le system call: fork(), wait(), exit()

Interprocess Communications - II. Franco Maria Nardini

Comunicazione tra Processi

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Corso di Laboratorio di Sistemi Operativi

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Seminario di Sistemi Distribuiti RPC su SOAP

Capitolo Silberschatz

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

Cenni di programmazione distribuita in C++ Mauro Piccolo

MODELLO AD AMBIENTE GLOBALE

Programmazione concorrente in Java. Dr. Paolo Casoto, Ph.D

Processi e Sincronizzazione. Laboratorio Software C. Brandolese M. Grotto

Capitolo 7: Sincronizzazione

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Corso di Linguaggi di Programmazione

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Introduzione alle applicazioni di rete

1 Processo, risorsa, richiesta, assegnazione 2 Concorrenza 3 Grafo di Holt 4 Thread 5 Sincronizzazione tra processi

I processi Unix. Entry della tabella dei processi

Il costrutto monitor [Hoare 74]

Corso di Sistemi di Elaborazione delle informazioni

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario

Appunti di Sistemi Operativi. Enzo Mumolo address web address :

Tecnologia di un Database Server (centralizzato) Gestione del buffer

UDP. Livello di Trasporto. Demultiplexing dei Messaggi. Esempio di Demultiplexing

La Gestione delle risorse Renato Agati

Architettura del calcolatore

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Processi in Linux. Igino Corona 20 Ottobre 2009

Monitor. Introduzione. Struttura di un TDA Monitor

Definizione di processo 1

GESTIONE INFORMATICA DEI DATI AZIENDALI

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

I THREAD O PROCESSI LEGGERI Generalità

Laboratorio di Sistemi Operativi

SISTEMI OPERATIVI DISTRIBUITI

GESTIONE DEI PROCESSI

Approccio stratificato

Транскрипт:

Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese

Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione Comunicazione Memodia condivisa o shared memory Adatta a piccoli sistemi operativi e supporti runtime Adatta in caso di multi-threading IPC o Inter Process Communication Processi in che risiedono in spazi di memoria separati Applicabile anche in ambienti Distribuiti Multiprocessore Flessibile rispetto alla posizione dei processi 2 Laboratorio Software 2008-2009

Introduzione Diversi tipi di IPC Messaggi Process 3 Segnali Process 2 Pipe Named pipe o FIFO Process 1 Socket Remote Procedure Call o RPC OPERATING SYSTEM 3 Laboratorio Software 2008-2009

Messaggi Si tratta di un metodo molto generale di IPC che fornisce Sincronizzazione Comunicazione Mutua esclusione Si applica bene a Processi in esecuzione su una singola macchina Processi in un sistema distribuito Richiede due primitive di base send( destination, message ) received ( source, message ) Entrambe possono essere Bloccanti Non bloccanti 4 Laboratorio Software 2008-2009

Messaggi Schema non bloccante Richiede Buffer di sistema Allocazione di memoria Gestione di risorse Process 1 Process 2 send OS BUFFER Fornisce Sincronizzazione minima a livello applicativo receive OS BUFFER receive send 5 Laboratorio Software 2008-2009

Messaggi Schema bloccante Richiede Nessun buffer di sistema Nessuna allocazione di memoria Nessuna risorsa aggiuntiva Process 1 Process 2 send Fornisce Sincronizzazione stretta a livello applicativo receive receive send 6 Laboratorio Software 2008-2009

Messaggi Schema bloccante Ad ogni stante, rispetto alla comunicazione, si distinguano Un sender Un receiver Sender È più naturale che non si blocchi dopo una send() Può mandare più messaggi in sequenza a destinatari diversi Normalmente si attende un messaggio di conferma Receiver Si sospende dopo una receive() in attesa dell arrivo di un messaggio Generalmente necessita del contenuto del messaggio per procedere Potrebbe rimanere bloccato indefinitamente se la send() fallisce 7 Laboratorio Software 2008-2009

Messaggi Schema bloccante Caso 1: Sincronizzazione send() non bloccante receive() bloccante Caso 2: Sincronizzazione stretta o rendez-vous send() bloccante receive() bloccante 8 Laboratorio Software 2008-2009

Messaggi Indirizzamento Un messaggio deve specificare Un indirizzo del sender Un indirizzo del receiver Dati Si hanno due possibilità per gestire l indirizzamento Indirizzamento dieretto Indirizzi del sender e del receiver strettamente associati ai processi Per sempio, PID Problema: potrebbero non essere noti entrambi a priori Indirizzamento indiretto I messaggi vengono inviati ad una mailbox condivisa La mailbox impementa una coda di messaggi I processi interessati prelevano i messagi a loro destinati 9 Laboratorio Software 2008-2009

Messaggi Mailbox Può essere Privata ad una coppia sender/receiver Condivisa sender 1 sender 2 MAILBOX receiver 1 receiver 2 In genere ha più sender e più receiver sender N receiver K Gestione Creata dal SO su richiesta di un processo Il processo ne diviene il proprietario Distrutta Su richiesta del proprietario Quando il proprietario termina 10 Laboratorio Software 2008-2009

Messaggi Port Port È una mailbox limitata sender 1 Realizza il modello client/server sender 2 PORT receiver Può avere sender N Più sender Un solo receiver Gestione Creata dal receiver Ne diviene il proprietario Distrutta Quando il proprietario termina 11 Laboratorio Software 2008-2009

Messaggi Struttura Si divide in Header, intestazione Body, corpo Contiene Source/destination ID Es. In UNIX, nessun ID Informazioni di controllo Cosa fare con buffer pieni? Numeri di sequenza Priorità... Politica di accodamento Generalmente FIFO Può supportare anche priorità HEADER BODY MESSAGE TYPE DESTINATION ID SOURCE ID MESSAGE LENGTH CONTROL INFORMATION PAYLOAD 12 Laboratorio Software 2008-2009

Messaggi e mutua esclusione Si crea una mailbox: mutex Condivisa da più processi Chiamate send() non bloccante receive() bloccante Si sospende se mutex è vuota Inizializzazione Ciclo send(mutex, go ); Il primo processo che esegue la receive Entra nella critical section Svuota la mailbox Al termine, rimette un messaggio nella mailbox Gli altri processi Attendono che un messaggio sia disponibile msg: message; for(;;) { receive( mutex, msg ); /* CS */ send( mutex, msg ); /* RS */ } 13 Laboratorio Software 2008-2009

Segnali Un seganle È un messaggio di un singolo bit È un modo per notifiacre un evento In modo asincrono Alcuni tipici eventi Timer Completamento di una operazione di I/O Eccezioni di programma Altri eventi definiti dall utente Non si ha sincronizzazione Sender asincrono Receiver asncrono 14 Laboratorio Software 2008-2009

Segnali UNIX Ogni segnale è indicato da un valore nuemrico intero 2 SIGINT Interrompe un processo 9 SIGKILL Termina un processo 3 SIGQUIT Abort 14 SIGALRM Interrupt del timer 18 SIGCLD Terminazione di un processo figlio Ogni segnale Memorizzato come un singolo bit nel descrittore del proceso ricevente Il bit viene posto ad 1 quando il segnale arriva Nessuna coda Il segnale viene elaborato non appena il processo diviene running Normalmente si procede con l azione di default, cioè la terminazione 15 Laboratorio Software 2008-2009

Pipe Realizzate come Una coda condivisa e limitata Scritta da un processo, letta da un altro Si bassa sul modello produttore/consumatore Mutua esclusione Garantita dal sistema operativo Solo un processo alla volta può accedervi Sincronizzazione Se la coda è piena si blocca il sender Se la coda è vuota si blocca il receiver Anche se si cerca di leggere più dati di quanti disponibili Mette in comunicazione solo pardri/figli 16 Laboratorio Software 2008-2009

Pipe UNIX La creazione di una pipe per la comunicazione Avviene nel processo padre I descrittori di file relativi alla pipe vengono copiati nel figlio Un buffer di sistema operativo implementa la pipe Si tratta di un canale di comunicazione bidirezionale Implementato come due canali monodirezionali Accessibile mediante le stesse funzioni di I/O usate per i file Descritto da un i-node Si usano solo i blocchi diretti gestiti come una coda circolare PROCESS 1 write BUFFER read PROCESS 2 read BUFFER write 17 Laboratorio Software 2008-2009

Pipe UNIX Esempio di implementazione: UNIX Creazione della pipe: pipe( fd[2] ) Lettura/scrittura: read(), write() main() { int fd[2]; char buf[max_dim] pipe( fd ); write( fd[1], Hello!, 6 ); read( fd[0], buf, 6 ); /* buf = Hello! */ } PROCESS 1 fd[1] fd[0] 18 Laboratorio Software 2008-2009

Pipe UNIX Comunicazione tra processi Il padre crea la pipe Il figlio la eredita main() { int fd[2], status; pipe( fd ); if( fork() == 0 ) { /* Child */ } /* Parent */;... PARENT fd[1] fd[0] fd[1] fd[0] CHILD } close( fd[0] ); close( fd[1] ); wait( &status ); 19 Laboratorio Software 2008-2009

Pipe UNIX Comunicazione tra processi I processi padre e figlio dell esempio precedente condividono le pipe Le pipe si riferiscono alle stesse entità (buffer) di I/O main() { int fd[2], status; pipe( fd ); if( fork() == 0 ) { /* Child */ close( fd[1] ); } /* Parent */; close( fd[0] );... PARENT fd[1] fd[0] fd[1] fd[0] CHILD } wait( &status ); 20 Laboratorio Software 2008-2009

Named Pipe o FIFO Simile ad una pipe Stesso meccanismo bassato su una coda condivisa Una volta creata Esiste nel file system Vi si accede come ad un normale file Sincronizzazione L apertura in lettura di una FIFO si sospende Fino a quando qualcuno non la apre in scrittura Se la coda è piena si blocca il sender Se la coda è vuota si blocca il receiver Anche se si cerca di leggere più dati di quanti disponibili Mette in comunicazione processi generici mkfifo fifo1 prog3 < fifo1 & prog1 < input_file tee fifo1 prog2 21 Laboratorio Software 2008-2009

Shared memory La memoria condivisa È uno dei meccanismi di comunicazione più efficienti Richiede il supporto del sistema operativo solo all atto dell inizializzazione Deve essere utilizzato con cautela poiché elimina (parzialmente) l indipendenza e la separazione tra i processi Per un corretto utilizzo Si deve garantire la mutua esclusione PROCESS 1 mem[0] = 10; x = mem[0]; MEMORY y = mem[22]; mem[22] = 5; PROCESS 2 22 Laboratorio Software 2008-2009

Shared memory Operazioni di base Creazione: shmget() Crea una zona dimemoria condivisa Ritorna un identificatore numerico univoco Controllo: shmctl() Controlla e configura una zona di memoria condivisa Legge informazioni, prepara per la rimozione, cambia i diritti,... Attach: shmat() Associa una zona di memoria condivisa al processo Ritorna un puntatore alla memoria Detach: shmdt() Sgancia una zona di memoria condivisa Se non vi sono più processi associati, una zona può essere rimossa 23 Laboratorio Software 2008-2009

Shared memory Dopo la creazione di un segmento di memoria condivisa la struttura logica della memoria di un processo è mostrata a lato Chiamata fork() La memoria è ereditata dal figlio Chiamata exec() La memoria condivisa è rilasciata ma non distrutta Chiamata exit() La memoria condivisa è rilasciata ma non distrutta ENVIRONMENT STACK SHARED MEMORY HEAP UNINITIALIZED DATA INITIALIZED DATA TEXT 24 Laboratorio Software 2008-2009