.. meta:: :language: it :description language=it: esempi di domande riguardo i sistemi distribuiti :description language=en: questions examples about distributed systems :keywords: distributed system, questions examples :author: Luciano De Falco Alfano .. index:: esempi di domande riguardo i sistemi distribuiti .. _ref_esempi_di_domande_riguardi_i_sistemi_distribuiti: Esempi di domande riguardo i sistemi distribuiti ================================================== .. contents:: :local: *Lezione del 2019-04-03 mer*. Domanda 1 ----------- *qual'è il ruolo del middleware in un sistema distribuito*? Il middleare è uno strato software posto tra il sistema operativo e lo strato architetturale. Può fornire trasparenza riguardo l'accesso ai dati. Ad esempio un client scritto in *C*, che deve interagire con un server scritto in *Java*. La *Java virtual machine* assicura una definizione omogenea di un dato numerico intero. Invece il compilatore *C* ottimizza l'accesso alla memoria di un dato numerico intero, di conseguenza in generale ha strutture diverse per sistemi hardaware diversi. Così come può essere diverso il formato tra sistemi hardware *Little Endian* rispetto i *Big Endian*. Il middleware può indirizzare queste differenze riguardo l'accesso ai dati. Ma può fornire anche altri servizi. Ad esempio una *Common API* per programmare altri servizi, ad es. transazioni. *Risposta*. Per migliorare la trasparenza della distribuzione, che normalmente manca nel sistema operativo di rete. Ovvero, il middleware aumenta quella visione unitaria che il sistema distribuito deve avere. Domanda 2 ----------- *che cosa si intende per trasparenza (della distribuzione)*? *Dare degli esempi di trasparenza*. *Risposta*. Per trasparenza della distribuzione si intende la capacità di nascondere ad utenti e applicazioni il fatto che il sistema abbia aspetti distribuiti. Esempi possono essere * trasparenza nell'accesso ai dati, * trasparenza nella localizzazione, * trasparenza nella migrazione, * trasparenza alla rilocazione * trasparenza nella replica, * trasparenza alla concorrenza, * trasparenza ai guasti, * trasparenza alla persistenza. Domanda 3 ----------- *perchè a volte in un sistema distribuito è difficile nascondere l'accadere di un guasto e il relativo recupero*? Perché usualmente non è possibile distingure tra una lunga attesa della risposta perché il server è guasto, rispetto la stessa attesa perché il server è lento nel rispondere. Di consegunza un sistema può dire che il servizio non è disponibile, quando in realtà il server richiede tempo per rispondere. Domanda 4 ----------- *perché a volte non è il caso di implementare il massimo livello di trasparenza possibile*? Se un utente è conscio che il sistema è distribuito, può essere più disposto ad accettare una performance inferiore. *Risposta*. Avere il più elevato livello possibile di trasparenza può comportare un degrado di prestazioni che gli utenti non accetterebbero. Domanda 5 ----------- *descrivere che si intende per sistema scalabile*. *la scalabilità si può ottenere con tecniche diverse. quali*? Un sistema è scalabile quando aumenta le performance all'aumentare delle risorse. Oppure: la scalabilità è la capacità di un sistema, rete o processo, di gestire richieste crescenti di attività in modo lineare, o la sua capacità di essere ampliato per soddisfare la crescita (di richieste). Questa si può interpretare anche in modo inverso: all'aumentare delle richieste, il sistema degrada (ovvero: presenta tempi di risposta superiori) in modo lineare. Per ottenere la scalabilità vi sono tre modi. Uno è l'uso di *cache* o di *replica*. Un altro è *hiding communication*. L'ultimo è la *distribuzione dei task* [#]_. *Risposta*. Un sistema è scalabile in relazione al suo numero di componenti, alla sua grandezza geografica, o al numero e alla grandezza di domini amministrativi, se può crescere in una o più di queste dimensioni senza una inaccettabile perdita di prestazioni. La scalabilità si può ottenere tramite la distribuzione, la replica e il caching. Domanda 6 ----------- *dare un esempio in cui non sia possibile effettuare il reset dell'ambiente anche se è stata richiesta l'interruzione della transazione* Se vi è stata un'attività di output, è possibile non possa essere disfatta. *Risposta*. Ogni situazione in cui vi è stato I/O fisico non può essere resettata. Ad es. se è stato stampato un output. Ancora: se il sistema controlla qualche tipo di processo industriale, di solito è impossibile disfare il lavoro effettuato. Domanda 7 ----------- *per sistemi pervasivi può non essere possibile ottenere trasparenza della distribuzione. Questa affermazione non è vera per tutti i tipi di trasparenza. Dare un esempio*. *Risposta*. Si consideri la *migrazione*. In molti sistemi pervasivi le componenti sono mobili, e devono ristabilire le connessioni quando si spostano da un punto di accesso ad un altro. Queste variazioni devono essere trasparenti per l'utente. Analogamente si può pensare di ottenere altri tipi di trasparenze. Ma non si può pensare di nascondere all'utente l'accesso a risorse che sono direttamente connesse al suo ambiente corrente. Domanda 8 ----------- *un programma server scritto in C++ fornisce l'implementazione di un oggetto BLOB che può essere acceduto da un programma client scritto in Java. Server e client possono avere harware diversi, ma sono tutti connessi ad una internet. Descrivere quali problemi è necessario risolvere affichè un client possa invocare un metodo dell'oggetto sul server*. Esistono problemi da affrontare sia a livello hardware che software. Gli hardware possono avere diverse tipologie di memorizzazione dei dati (MSB vs LSB), e i software usare strutture diverse la loro gestione (ad es. gli oggetti C++ sono diversi dagli stessi oggetti scritti in Java). Di conseguenza in questi casi è necessario utilizzare un framework che si occupi dei relativi dettagli implementativi. *Risposta*. Avendo differenti hardware potremo avere diverse rappresentazioni dei dati nei messaggi di richiesta e di risposta da client ad oggetto. Bisogna definire uno standard comune per ogni dipo di dato che deve essere trasmesso tra client e oggetto e viceversa. Inoltre i computers possono avere diversi sistemi operativi. Quindi è necessario trattare diversi tipi di operazioni per inviare e ricevere messagggi o per effettuare invocazioni di metodi. Nel programma C++/Java sarà definita una operazione comune che sarà tradotta nella particolare operazione necessaria nell'ambito del sistema operativo utilizzato. Avendo due diversi linguaggi di programmazione, C++ e Java, abbiamo due diversi modi di rappresentare le strutture dati. È necessario definire uno standard comune per ogni tipo di struttura dati che deve essere trasmessa, e un modo di interpretarla per ognuno dei linguaggi. Domanda 9 ----------- *distinguere tra cache e replica. descrivere pro e contro della replica*. La *cache* copia una parte dei dati, e usualmente lo fa su client. La *replica* copia integralmente un nodo, e lo fa sul server. *Pro* della replica: scalabilità del sistema. *Contro* della replica: in caso di update frequenti dei dati, il traffico dati e i tempi necessari per l'aggiornamento delle repliche può divenire insostenibile. Domanda 10 ----------- *quando è opportuno usare un cluster invece di un grid computing*? Si usa un cluster quando il rateo di comunicazione tra i diversi computer è elevato. I server sono connessi con una rete dati ad alta velocità. Il grid computing è orientato alla esecuzione di attività tipo client/server: viene assegnato un task, e questo viene eseguito. I server sono connessi tramite Internet, possono appartenere ad organizzazioni diverse e i nodi possono avere funzioni diverse. Domanda 11 ----------- *fornire una breve descrizione dei seguenti tipi di sistemi distribuiti: enterprise information systems e pervasive systems* Gli enterprise information system gestiscono insiemi diversi di dati distribuiti su nodi diversi, con lo scopo di rendere l'insieme totale dei dati trasparente, ovvero come se fosse tutto accentrato in un unico nodo. I pervasive systems sono insiemi di nodi autonomi, distribuiti nell'ambiente, che collaborano per raggiungere uno scopo comune. ------------------------- .. [#] Qui la chiave di volta è l'analisi dei dati. Se i dati possono essere partizionati, probabilmente lo può essere anche l'algoritmo che li gestisce. Se i dati sono solo centralizzabili, probabilmente anche l'algoritmo che li gestisce lo è.