Sommario. G. Piscitelli



Похожие документы
Sistemi Operativi (modulo di Informatica II)

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

CAPITOLO 27 SCAMBIO DI MESSAGGI

I processi. Concetto di processo Scheduling dei processi Operazioni sui processi Processi cooperanti Comunicazione fra processi

Introduzione alle applicazioni di rete

Pronto Esecuzione Attesa Terminazione

Reti di Telecomunicazione Lezione 8

Cenni di programmazione distribuita in C++ Mauro Piccolo

GESTIONE DEI PROCESSI

Esempio produttori consumatori. Primitive asincrone

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

Comunicazione tra Processi

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

I Socket. Laboratorio Software M. Grotto R. Farina

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

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

Socket & RMI Ingegneria del Software - San Pietro

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

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

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

CAPITOLO 7 - SCAMBIO DI MESSAGGI

Informatica per la comunicazione" - lezione 13 -

TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Comunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI

Interprocess Communications - II. Franco Maria Nardini

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

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

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

Siti web centrati sui dati (Data-centric web applications)

Approccio stratificato

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Sistemi Operativi Esercizi Sincronizzazione

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

Programmazione dei socket con TCP #2

Lezione n.10 LPR- Informatica Applicata RMI CallBacks

Reti di Telecomunicazione Lezione 6

Multithreading in Java. Fondamenti di Sistemi Informativi

Gestione della memoria centrale

Esercitazione [6] Client/Server con Socket

Transmission Control Protocol

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited

Capitolo 5: I thread

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

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

MODELLO AD AMBIENTE GLOBALE

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Applicazioni web centrati sui dati (Data-centric web applications)

Protezione. Protezione. Protezione. Obiettivi della protezione

Manuale Servizio NEWSLETTER

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Il Sistema Operativo

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Organizzazione Monolitica

Inter Process Communication. Laboratorio Software C. Brandolese

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

2.1 Configurare il Firewall di Windows

appunti delle lezioni Architetture client/server: applicazioni client

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

Una minaccia dovuta all uso dell SNMP su WLAN

Introduzione alla programmazione in C

NOTIFICAZIONE E PUBBLICITÀ LEGALE DEGLI ATTI NELL AMMINISTRAZIONE PUBBLICA DIGITALE

HTTP adaptation layer per generico protocollo di scambio dati

ARP (Address Resolution Protocol)

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Seminario di Sistemi Distribuiti RPC su SOAP

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

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Strutturazione logica dei dati: i file

MANUALE UTENTE. In questo manuale verranno descritte tutte le sue funzioni. Il sistema OTRS è raggiungibile al seguente link:

Introduzione. Livello applicativo Principi delle applicazioni di rete. Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio 2-1

Collegamento remoto vending machines by do-dots

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Java Remote Method Invocation

Il problema del produttore e del consumatore. Cooperazione tra processi

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.

SDD System design document

Applicazioni distribuite

Versione 1. (marzo 2010)

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Il costrutto monitor [Hoare 74]

Le caselle di Posta Certificata attivate da Aruba Pec Spa hanno le seguenti caratteristiche:

Protocolli applicativi: FTP

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

RMI Remote Method Invocation

Università Politecnica delle Marche. Progetto Didattico

3. Introduzione all'internetworking

SISTEMI OPERATIVI DISTRIBUITI

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Транскрипт:

Sommario Interprocess Communication Processi (e thread) cooperanti Il paradigma produttore-consumatore Shared Memory e Inter Process Communication (IPC) facility Proprietà caratteristiche della comunicazione Comunicazione diretta e comunicazione indiretta Mailbox: condivisione, proprietà Comunicazione: sincronizzazione e bufferizzazione Comunicazione client-server: Socket, Remote Procedure Call (RPC), Remote Method Invocation (RMI) in Java Marshalling e stub G. Piscitelli

Processi (e thread) Cooperanti Processi indipendenti non possono modificare o essere modificati dall esecuzione di un altro processo. Processi cooperanti possono modificare o essere modificati dall esecuzione di altri processi. Vantaggi della cooperazione tra processi: Condivisione delle informazioni più utenti possono essere interessati alle stesse porzioni di informazioni Aumento della velocità di computazione (parallelismo) Modularità Suddivisione di un job in sotto-attività per una esecuzione in parallelo (in caso di multiplazione di una o più risorse) Praticità di realizzazione/utilizzo Un singolo utente può lavorare su più attività contemporaneamente 8. Comunicazione tra processi G. Piscitelli 2 / 20

Commmunicating cooperating processes Il paradigma produttore-consumatore La concorrenza implica la presenza di memorie tampone (buffer) riempite dal produttore e vuotate dal consumatore. Il buffer di comunicazione può essere fornito dal SO tramite la Inter Process Communication (IPC) facility o può essere esplicitamente codificato dal programmatore facendo uso di una Shared Memory. Il parallelismo è determinato dalla possibilità che il produttore produca un elemento mentre il consumatore ne sta consumando uno prodotto in precedenza. Buffer illimitato (unbounded-buffer): non c è un limite teorico alla dimensione del buffer. Il solo limite è costituito dal fatto che il consumer può dover attendere che il producer introduca nuovi elementi nel buffer Buffer limitato (bounded-buffer): la dimensione del buffer è fissata. Il consumer deve attendere se il buffer è vuoto, mentre il producer deve attendere se il buffer è pieno Il paradigma producer-consumer implica l adozione di meccanismi di sincronizzazione tra i processi coinvolti. 8. Comunicazione tra processi G. Piscitelli 3 / 20

Cooperating Processes: Shared-Memory Shared data #define BUFFER_SIZE 10 typedef struct {... } item; item buffer[buffer_size]; int in = 0; int out = 0; int counter = 0; Producer process item nextproduced; while (1) { while (counter == BUFFER_SIZE); /* do nothing */ buffer[in] = nextproduced; in = (in + 1) % BUFFER_SIZE; counter++; } Consumer process Item nextconsumed; while (1) { while (counter == 0); /* do nothing */ nextconsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; } 8. Comunicazione tra processi G. Piscitelli 4 / 20

Cooperating Processes: Inter Process Communication (IPC) IPC è una facility di comunicazione e interazione tra processi (e thread) Come può un processo passare informazioni ad un altro? Message-Passing un processo comunica con un altro senza ricorrere a dati condivisi (non si condivide lo spazio di indirizzi) Se i processi P e Q vogliono comunicare, devono stabilire un canale di comunicazione (fisica o logica) tra di loro e usare le due operazioni: send (messaggio) la dimensione del messaggio può essere fissa o variabile. receive (messaggio) Come evitare accessi inconsistenti a risorse condivise? Come sequenzializzare gli accessi alle risorse secondo la causalità? Mantenere la consistenza dei dati richiede dei meccanismi per assicurare l esecuzione ordinata dei processi cooperanti. 8. Comunicazione tra processi G. Piscitelli 5 / 20

Cooperating Processes: Inter Process Communication (IPC) Problematiche dello scambio di messaggi Affidabilità: i canali possono essere inaffidabili (es: reti). Bisogna implementare appositi protocolli fault-tolerant (basati su acknowledgment e timestamping). Autenticazione: come autenticare i due partner? Sicurezza: i canali utilizzati possono essere intercettati. Efficienza: se prende luogo sulla stessa macchina, il passaggio di messaggi è sempre più lento della memoria condivisa e dei semafori. 8. Comunicazione tra processi G. Piscitelli 6 / 20

Cooperating Processes: Inter Process Communication (IPC) Dal punto di vista logico, un link di comunicazione può essere realizzato in diversi modi: Comunicazione Diretta (tramite i nomi dei processi) o Indiretta (tramite mailbox o porta) Comunicazione Simmetrica o Asimmetrica (il ricevente conosce il mittente o no) Comunicazione Sincrona o Asincrona (primitive bloccanti o non bloccanti) Comunicazione Estesa o a rendez-vous limitato (se sia la send che la receive sono bloccanti o no) Comunicazione Con coda Non bufferizzata o Bufferizzata (con capacità limitata o no). 8. Comunicazione tra processi G. Piscitelli 7 / 20

Direct communication I processi devono conoscere esplicitamente il nome del destinatario o del mittente della comunicazione: Indirizzamento simmetrico send (P, message) manda un messaggio al processo P receive(q, message) riceve un messaggio dal processo Q Indirizzamento asimmetrico send (P, message) manda un messaggio al processo P receive(id, message) riceve un messaggio da un processo qualunque (la variabile id conterrà di volta in volta il nome del processo con cui si comunica) Proprietà di un canale di comunicazione: Le connessioni sono stabilite automaticamente. Una connessione è associata esattamente a due processi. Fra ogni coppia di processi esiste esattamente una connessione. La connessione può essere unidirezionale, ma di norma è bidirezionale. 8. Comunicazione tra processi G. Piscitelli 8 / 20

Indirect Communication I messaggi sono mandati e ricevuti attraverso mailbox (o porte). Ciascuna mailbox ha un identificatore univoco. I processi possono comunicare solo se hanno una mailbox condivisa. Il canale di comunicazione ha le seguenti proprietà: viene stabilita una connessione fra due processi solo se entrambi hanno una mailbox condivisa. una connessione può essere associata a più di due processi. fra ogni coppia di processi comunicanti possono esserci più connessioni. Ciascuna di esse corrisponde ad una mailbox. la connessione può essere unidirezionale o bidirezionale. Operazioni: creare una mailbox; mandare e ricevere messaggi per mezzo della mailbox; cancellare una mailbox. Le primitive sono definite come: send (A, messaggio): manda un messaggio alla mailbox A; receive (A, messaggio): riceve un messaggio dalla mailbox A. 8. Comunicazione tra processi G. Piscitelli 9 / 20

Condivisione di una mailbox La send si blocca se la mailbox è piena; la receive si blocca se la mailbox è vuota. S'immagini che P 1, P 2, e P 3 condividano una mailbox A. P 1 invia un messaggio ad A; P 2 e P 3 eseguono una receive da A. Quale processo riceverà il messaggio spedito da P 1? La risposta dipende dallo schema che si sceglie: permettere che una connessione sia associata con al più due processi. permettere ad un solo processo alla volta di eseguire un operazione di receive. permettere al sistema di decidere arbitrariamente quale processo riceverà il messaggio. Il sistema può anche notificare il ricevente al mittente. 8. Comunicazione tra processi G. Piscitelli 10 / 20

Proprietà di una mailbox Una mailbox può appartenere: al sistema operativo ha una esistenza indipendente non correlata ad alcun processo ad un processo è parte dello spazio di indirizzi di un processo si distingue tra proprietario di una mailbox (può solo riceverne i messaggi) e utente (può solo inviarvi messaggi) una mailbox ha come UNICO proprietario il processo che la crea non esiste possibilità di confusione tra i destinatari di un messaggio alla terminazione di un processo viene meno la mailbox ad esso associata i processi che inviano messaggi ad una mailbox non più esistente ricevono una notifica di errore dal sistema operativo. 8. Comunicazione tra processi G. Piscitelli 11 / 20

Communication synchronization Il passaggio di messaggi può essere bloccante..... oppure Invio/ricezione bloccanti: sono considerati sincroni. Invio bloccante: il processo che invia viene bloccato finché il messaggio viene ricevuto dal processo che riceve o dalla mailbox. Ricezione bloccante: il ricevente si blocca sino a quando un messaggio non è disponibile. In caso di send() e receive() bloccanti si parla di rendez vous esteso fra mittente e destinatario. 8. Comunicazione tra processi G. Piscitelli 12 / 20

Communication synchronization...... il passaggio di messaggi può essere non bloccante. Invio/ricezione non bloccanti: sono considerati asincroni. Invio non bloccante: il processo che invia manda il messaggio e riprende l attività. Ricezione non bloccante: il ricevente acquisisce un messaggio o valido o nullo. In caso di send() e receive() non bloccanti si parla di rendez vous limitato fra mittente e destinatario. 8. Comunicazione tra processi G. Piscitelli 13 / 20

Communication buffering I messaggi scambiati in fase di comunicazione risiedono in una coda temporanea. Esistono tre possibilità per implementare il buffer dei messaggi relativo ad un link: 1) Capacità zero lunghezza massima della coda: 0 messaggi. La connessione non potrà avere nessun messaggio in attesa nella coda. Il mittente deve bloccarsi finché il destinatario riceve il messaggio (rendez vous). 2) Capacità limitata coda a lunghezza finita di n messaggi. Se la coda non è piena, un nuovo messaggio viene inserito nella coda. Il messaggio viene copiato o ne viene mantenuto un puntatore. Il mittente deve bloccarsi solo se la coda di comunicazione è piena, altrimenti può continuare l esecuzione senza attendere. 3) Capacità illimitata coda di lunghezza potenzialmente illimitata. Un qualunque numero di messaggi può essere accodato. Il mittente non si blocca mai. 8. Comunicazione tra processi G. Piscitelli 14 / 20

Client-Server Communication La comunicazione nei sistemi client-server può essere implementata secondo gli schemi canonici oppure mediante ulteriori strategie: Socket Chiamata di procedura remota --- Remote Procedure Call (RPC) Invocazione di metodo remoto --- Remote Method Invocation (RMI Java) 8. Comunicazione tra processi G. Piscitelli 15 / 20

Client-Server Communication: il Socket Un socket è definito come un estremo (endpoint) di un canale di comunicazione ed è associato a un indirizzo IP: esso è identificato da un indirizzo IP concatenato con un numero di porta. Il socket 146.86.5.2:1625 fa riferimento alla porta 1625 on host 146.86.5.2 Una comunicazione consiste in una coppia di socket. Un server resta in ascolto su di una data porta per l arrivo di richieste da un client, accetta la connessione richiesta dal client e completa la connessione. I server che implementano servizi specifici (telnet, ftp, http) ascoltano sulle cosiddette well-known ports (port < 1024). 8. Comunicazione tra processi G. Piscitelli 16 / 20

Client-Server Communication nei multicomputer La Remote Procedure Call (RPC) La chiamata di procedura remota (RPC) è il modello di computazione distribuita più astratto, che estende il meccanismo di chiamata di procedura al caso di sistemi connessi in rete. Idea di base: un processo su una macchina può richiedere l'esecuzione di codice su una CPU remota. L esecuzione di procedure remote deve apparire simile a quella di procedure locali. La RPC è, infatti, una IPC basata su scambio di messaggi ben strutturati. Ciascun messaggio è indirizzato verso un demone RPC che ascolta su una porta del sistema remoto. Esso contiene: un identificativo della funzione da eseguire; i parametri da passare. L output della procedura viene restituito al client. Nasconde (in parte) all utente la delocalizzazione del calcolo: l utente non esegue mai send/receive, ma deve solo scrivere e invocare procedure come al solito. Ivan Scagnetto 8. Comunicazione tra processi G. Piscitelli 17 / 20

Client-Server Communication: La Remote Procedure Call (RPC) Stub terminale remoto sul lato client della procedura lato server. Ogni procedura remota mantiene uno stub client. Lo stub del lato client localizza il server, gestisce l agreement della connessione attraverso la porta sul server e compie la traduzione (marshalling) dei parametri secondo un formato comprensibile dal destinatario. Lo stub dal lato server riceve il messaggio, estrae i parametri tradotti ed invoca la procedura sul server. criteri realizzativi non si possono passare puntatori call by reference diviene call by copy-restore linguaggi debolmente tipizzati non è sempre possibile stabilire i tipi dei parametri non si possono usare variabili globali marshalling 8. Comunicazione tra processi G. Piscitelli 18 / 20

Client-Server Communication Remote Procedure Call 8. Comunicazione tra processi G. Piscitelli 19 / 20

Client-Server Communication: La Remote Method Invocation (RMI) Invocazione di metodo remoto L invocazione di metodo remoto è un meccanismo di Java simile alla RPC. RMI permette ad un programma Java di invocare metodi relativi a oggetti remoti. RMI vs. RPC RPC supporta solo programmazione procedurale; RMI rende possibile passare come parametri dei metodi remoti oltre che strutture dati ordinarie. La RMI implementa i metodi remoti usando: Stub (componente lato client del metodo remoto, responsabile della creazione di un codice contenente nome del metodo da invocare e parametri su cui è eseguito il marshalling) Skeleton (componente lato server responsabile della traduzione dei parametri e dell invocazione del metodo desiderato) 8. Comunicazione tra processi G. Piscitelli 20 / 20