CAPITOLO 7 - SCAMBIO DI MESSAGGI



Похожие документы
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Il problema del produttore e del consumatore. Cooperazione tra processi

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

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

Sistemi Operativi Esercizi Sincronizzazione

Soluzione dell esercizio del 2 Febbraio 2004

1.0 GUIDA PER L UTENTE

Manuale Terminal Manager 2.0

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

Introduzione alla programmazione in C

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

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

Esempio produttori consumatori. Primitive asincrone

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

Mutua esclusione distribuita

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

flusso delle informazioni... 2 password... 3 password/ inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

Funzioni in C. Violetta Lonati

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Procedura SMS. Manuale Utente

Approccio stratificato

Guida Operativa per Singolo Atleta Si raccomanda di utilizzare Explorer versione 9 o superiore, Firefox o Chrome aggiornati alle ultime versioni.

Dropbox di classe. É un servizio internet fornito gratuitamente (funzioni base).

Protezione. Protezione. Protezione. Obiettivi della protezione

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE


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

INDIRIZZI IP ARCHITETTURA GENERALE DEGLI INDIRIZZI IP FORME DI INDIRIZZI IP CINQUE FORME DI INDIRIZZI IP

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

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

Posta Elettronica Certificata. dott. Andrea Mazzini

Studio Legale. Guida operativa

Invio SMS. DM Board ICS Invio SMS

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Monitor. Introduzione. Struttura di un TDA Monitor

MANUALE UTENTE. TeamPortal Liste Distribuzioni

Manuale Servizio NEWSLETTER

ARCHITETTURA DI RETE FOLEGNANI ANDREA

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Il Sistema Operativo

Note Operative per Accedere alla Posta Elettronica Certificata (PEC) Obbligo Iscrizioni 2011

Registratori di Cassa

Gestione della memoria centrale

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

LCMobile Restaurant. Guida su come usare il software per palmare LCMobile Restaurant.

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

Database. Si ringrazia Marco Bertini per le slides

per scrivere un articolo da prima pagina! per inviare una newsletter Come si crea Comunicazione Anfaa Edizione 4a.2013

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Gestione Risorse Umane Web

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

CAPITOLO 24 I MONITOR

RISOLUTORE AUTOMATICO PER SUDOKU

Leggere un messaggio. Copyright 2009 Apogeo

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

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

File, Modifica, Visualizza, Strumenti, Messaggio

Interfaccia di base di GroupWise WebAccess

ALBO PRETORIO WEB MANUALE DELLA PROCEDURA SOMMARIO. Uso del manuale. Informazioni generali. Interfaccia grafica. Guida di riferimento

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Guida informatica per l associazione #IDEA

Ingegneria del Software 11. Esercizi riassuntivi. Dipartimento di Informatica Università di Pisa A.A. 2014/15

Esempi di algoritmi. Lezione III

Fasi di creazione di un programma

STAMPA UNIONE DI WORD

GUIDA OPERATIVA. per la corretta preparazione. di un DECRETO INGIUNTIVO TELEMATICO

GUIDA OPERATIVA. per la corretta preparazione. di un DECRETO INGIUNTIVO TELEMATICO

CAPITOLO 27 SCAMBIO DI MESSAGGI

SERVIZIO DI MESSAGGISTICA ALL UTENTE. Manuale per l operatore

MODELLISTICA DI IMPIANTI E SISTEMI 2

Copyright ZYCOO All rights reserved. V1.0. Manuale Utente by. Indice

Il calendario di Windows Vista

MANUALE PORTALE UTENTE IMPRENDITORE

Pronto Esecuzione Attesa Terminazione

Reti di Telecomunicazione Lezione 7

POSTA ELETTRONICA CERTIFICATA Manuale operativo. Manuale operativo Posta Elettronica Certificata (PEC) del Comune di Como

CREAZIONE ARCHIVI 2014

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

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

Soluzione dell esercizio del 12 Febbraio 2004

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

Libero Emergency PC. Sommario

COME CREARE UNA COMUNICAZIONE / NEWSLETTER

Il database management system Access

Guida all uso di Java Diagrammi ER

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

P.C.T. Il Processo Civile Telematico Guida operativa all utilizzo del sistema GEO-C.T.U. (GEOWEB-LEXTEL) Versione 28 Giugno 2014 Release 2.0.

Транскрипт:

CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni sistemi, i processi depositano e recuperano i messaggi da cosiddetti pickup points ; in altri, ogni messaggio deve essere indirizzato direttamente al processo. Tale tecnica è sia conveniente che potente, e molti sistemi la usano come base per tutte le comunicazioni. Per esempio, operazioni come inviare dati a un terminale o attraverso la rete ad un altra macchina possono essere sviluppate usando primitive dello scambio di messaggi. I messaggi forniscono anche una forma di sincronizzazione tra processi perché il ricevente può sospendersi fino all arrivo del prossimo messaggio. La principale differenza tra la sincronizzazione con l uso dei messaggi e quella con i semafori consiste nel fatto che questi ultimi necessitano un preciso cooridnamento tra processi che effettuano operazioni di wait e quelli che usano invece la signal, perché ci deve essere una chiamata a wait(s) per ogni chiamata a signal(s). Differentemente, lo scambio di messaggi può essere effettuato anche senza alcuna sincronizzazione. Quest ultima è una tecnica più semplice da usare se un processo non può conoscere il numero di messaggi che riceverà, quando gli saranno inviati, o quali processi glieli spediranno. Per esempio, un processo che guida il display del video usa messaggi mandati da altri processi per sapere quando un carattere è disponibile per essere visualizzato. 7.1 Scambio di messaggi in PC-Xinu PC-Xinu supporta due forme di scambio di messaggi. Questo capitolo tratta della prima forma: messaggi passati da un processo direttamente a un altro. Il Capitolo 15 discute invece la seconda: messaggi lasciati in punti di incontro. Separare in due classi i messaggi ha il vantaggio di renderne lo scambio più efficiente, ma richiede all utente la conoscenza della destinazione dei messaggi quando scrive i programmi. (I lettori con un interesse speciale potrebbero pensare i potenziali benefici e responsabilità nell unificare lo scambio dei messaggi dopo aver letto questo materiale.) Lo scambio di messaggi tra processi è stato progettato con cura per garantire che i processi non si blocchino (ad es. sospendersi) mentre inviano messaggi, e i messaggi sospesi non consumino tutta la memoria. Per garantire ciò, ogni messaggio è stato limitato a una word (la dimensione di un intero o un puntatore) ed è permesso solo l invio di un messaggio per processo a volta. L implementazione di queste restrizioni è stata ben definita: se parecchi messaggi sono inviati ad un processo prima che esso provi a riceverne uno di essi, solo il primo sarà ricevuto. Così, un processo può usare lo scambio di messaggi per determinare quale tra gli eventi viene completato per primo, spedendo un messaggio dopo il completamento. Cinque chiamata di sistema manipolano i messaggi in PC-Xinu: receive, recvclr, send, sendf and sendn. Send prende un messaggio e un identificatore di processo come argomenti e spedisce il messaggio ad un processo specificato. Receive attende l arrivo di un messaggio che poi viene ritornato al suo chiamante; essa non richiede argomenti. Recvclr è l analoga receive asincrona; essa non attende mai che arrivi un messaggio. Se un processo ha un messaggio pendente quando chiama recvclr, la chiamata ritorna il messaggio esattamente come una receive. Ma se nessun messaggio è in attesa, recvclr ritorna il valore OK al suo chiamante senza sospendersi per l arrivo di un messaggio. Come il nome indica recvclr è spesso usata per pulire i vecchi messaggi che dovrebbero essere in attesa. Sendf e sendn sono simili a send; sendf forza l invio del messaggio anche se ce ne sono altri sospesi, (distruggendo ogni messaggio esistente), mentre sendn si comporta esattamente 1

come send ma non forza la schedulazione. Sendf è usata per i messaggi urgenti che non dovrebbero essere ignorati. Sendn è usata nelle routine di servizio di interrupt quando la schedulazione può non essere appropriata. Una questione sorge: in quale stato dovrebbe essere un processo che attende un messaggio? Poiché l attesa di un messaggio differisce da quella per un semaforo o della CPU, differisce dallo stato sospeso e in esecuzione, nessuno di essi ci soddisfa. Perciò è arrivato il momento di aggiungere un nuovo stato al nostro progetto. Il nuovo stato attesa per la ricezione di un messaggio è riferito nel software dalla costante simbolica PRRECV. Aggiungendola agli altri si produce il diagramma di transizione mostrato in figura 7.1 Figura 7.1 Transizione di stato per una receiving 7.2 Implementazione di Send Send deve memorizzare i messaggi in un luogo dove il destinatario possa riceverli. Essi non possono essere tenuti nella memoria del mittente perché tale processo deve uscire prima che il messaggio sia ricevuto. Inoltre non possono essere tenuti in nella memoria del destinatario perché sorgerebbero problemi di sicurezza. Abbiamo risolto il problema allocando spazio per i messaggi nell elemento della tabella dei processi. Per depositare un messaggio, send prima controlla che il processo destinatario specificato esista. Esso verifica che il destinatario non abbia messaggi straordinari esaminando il campo phasmsg nel corrispondente elemento della tabella dei processi. Se non ve ne sono, send deposita il nuovo messaggio nel campo pmsg e mette un valore diverso da zero nel campo phasmsg per indicare che un messaggio è in attesa. Se il processo stava aspettando l arrivo di un messaggio, send lo rimette nella lista dei processi pronti, gli permette l accesso al messaggio e il proseguimento dell esecuzione. /* send.c - send 2

/* -------------------------------------------------------------------- * send -- spedisce un messaggio a un altro processo SYSCALL send(pid, msg) struct pentry *pptr; /* indirizzo della tabella dei /* processi del ricevente if (isbadpid(pid) ((pptr=&proctab[pid]->pstate==prfree) pptr->phasmsg!=0) pptr->pmsg = msg; /* deposita il messaggio pptr->phasmsg++; if (pptr->pstate == PRRECV) /* se il ricevente era in ready(pid); /* attesa, lo inizializza L implementazione di sendf e sendn sono delle modifiche di send. /* sendf.c - sendf / * sendf -- spedisce un messaggio a un processo forzando la consegna SYSCALL sendf(pid, msg) struct pentry *pptr; if (isbadpid(pid) (pptr=&proctab[pid])->pstate==prfree) /* manca il controllo su phasmsg pptr->pmsg = msg; 3

if (pptr->pstate == PRRECV) ready(pid); /* sendn.c - sendn /* / * sendn -- spedisce un messaggio a un altro processo, ma non effettua * la schedulazione SYSCALL sendn(pid, msg) struct pentry *pptr; /* indirizzo del ricevente nella /* tabella dei processi if (isbadpid(pid) ((pptr=&proctab[pid]->pstate==prfree) pptr->phasmag!= 0) pptr->pmsg = msg; /* deposita il messaggio pptr->phasmsg++; if (pptr->pstate == PRRECV) /* se il ricevente attende ready(pid); /* il messaggio, lo inizializza 7.3 Implementazione di Receive Un processo P chiama receive (o recvclr) per ottenere un messaggio che gli è stato mandato. Receive esamina il campo phasmsg nell elemento della tabella dei processi per determinare se c è un messaggio inviato al processo. Se non ve ne sono, mette P nello stato di receiving e chiama resched, permettendo l esecuzione di altri processi. Eventualmente, quando un altro processo Q spedisce un messaggio a P, send lo rimette nella lista dei processi pronti. Quando P esegue (la chiamata di ritorno da resched) receive prende il messaggio e lo ritorna al suo chiamante. SYSCALL receive() struct pentry *pptr; 4

pptr = &proctab[currpid]; if (pptr->phasmsg == 0) /* se non vi sono messaggi, pptr->pstate = PRRECV; /* attendine uno msg = pptr->pmsg; /* riottiene il messaggio pptr->phasmsg = 0; return(msg); Recvclr opera come receive tranne per il fatto che essa ritorna immediatamente. Eccone l implemetazione: /* recvclr.c - recvclr /- * recvclr -- riceve un messaggio, se ve ne sono, e ritorna - SYSCALL recvclr() if (proctab[currpid].phasmsg) /* esistono messaggi? proctab[currpid].phasmsg = 0; msg = proctab[currpid].pmsg; else msg = OK; restor(ps); return(msg); 5