1 Esercitazione finale per il corso di Sistemi Operativi (A.A. 2001/2002)

Slides:



Advertisements
Presentazioni simili
Guida pratica per gli studenti
Advertisements

Meccanismi di IPC Problemi classici di IPC
Programmazione concorrente
PHP.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
File System Cos’è un File System File e Directory
Java: programmazione concorrente con condivisione di memoria
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Mantenimento dello stato Laboratorio Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Esercitazione 2 Array, funzioni, form
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Programmazione Concorrente
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Portale delle competenze Presentazione Eugenio Stelliferi.
Struttura dei sistemi operativi (panoramica)
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Sincronizzazione fra thread
Sistemi Operativi GESTIONE DEI PROCESSI.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Lezione VII Laboratorio di Programmazione. Simulazione esame Scrivere in C++ una funzione di nome RICERCA che, presi come parametri. un array A di numeri.
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ASP. Net Web Part e controlli di login Elaborazione di Franco Grivet Chin.
Reti di Calcolatori L-S Un Sistema Decentrato di Allocazione del Carico per Applicazioni di Calcolo Distribuito Mauro Bampo.
Distributed File System Service Dario Agostinone.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
Monitoraggio Pratiche Didattiche della provincia di Reggio Calabria Copyright©2007 DARGAL Web Solutions. È vietata la riproduzione anche parziale.
STRUTTURA GENERALE DI UN ELABORATORE
BIOINFO3 - Lezione 24 ARRAY
66. Rubrica La Rubrica vi consente di raccogliere gli indirizzi di posta elettronica. Potete accedere dalla rubrica dallinterno del programma di posta.
BraDypUS è un sistema che risolve il sempre più urgente problema della corretta gestione e immagazzinamento dei dati archeologici di scavo e topografici.
1 Scheduling in Windows 2000 Un thread entra in modalità kernel e chiama lo scheduler quando: Si blocca su un oggetto di sincronizzazione (semaforo, mutex,
Processi e Thread Job: Insieme di processi che condividono quote e limiti. Processo: Contenitore di risorse (una lista di thread, una lista di handle e.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Sincronizzazione dei processi
Threads.
Costruzione di una semplice Agenda telefonica Elettronica Esercizio sull'uso delle principali system call Unix.
1 Il Sistema Operativo: Esempio n Le operazioni effettuate sembrano abbastanza semplici ma … n Provocano una serie di eventi in cui vengono coinvolte sia.
POSTA ELETTRONICA La posta elettronica è un’innovazione utilissima offerta da Internet. E’ possibile infatti al costo di una telefonata urbana (cioè del.
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
Prima di iniziare… Durata attività: due lezioni frontali + una lezione laboratorio + compiti per casa Prerequisiti: elementi base architettura dei calcolatori.
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Lezione 11 Riccardo Sama' Copyright  Riccardo Sama' Excel.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Progetto Finale Laboratorio di Progettazione Web AA 2009/2010 Chiara Renso ISTI- CNR -
Gestione del processore (Scheduler)
Modulo didattico “Disegno Tecnico Navale”
Tutorial Rehabilitation Reference Center support.ebsco.com.
Archivi Esempi Movimenti contabili di un’azienda
INSERIMENTO FILE XML PER UTENTI CAF Procedura di Inserimento di File XML per le utenze CAF Università degli Studi Roma Tre (A.A. 2007/08)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Processi e Thread Processi e thread in Windows 2000.
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
1 Risorse e Stallo 2 Risorse (1) Esempi di risorse –stampanti –nastri –tabelle I processi devono accedere alle risorse in un ordine ragionevole Supponiamo.
Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati.
Psicometria A – I semestre
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
1 IL TUTOR Alessio Guerri Alessio Guerri Tel Ricevimento In ufficio su appuntamento (Lab2) Giovedì.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Laboratorio di Ingegneria del Software Laboratorio di Ingegneria del Software Primo Incontro Titolare Prof. Pierluigi Sanpietro.
Transcript della presentazione:

1 Esercitazione finale per il corso di Sistemi Operativi (A.A. 2001/2002)

2 Descrizione dell’esercitazione L’esercitazione consiste nello svilppare un insieme di programmi concorrenti che simulano un sistema formato da due code su cui gli utenti possono inviare delle richieste che verranno poi processate da un demone servitore. Nei casi reali, la presenza di due code puo’ essere motivata da esigenze “amministrative”: ad esempio, le due code possono rappresentare due code di stampa, ricerca e didattica, i cui costi devono essere imputati separatamente. Oppure possono essere associate a due classi di utenti diversi che però usano la stessa risorsa (rappresentata dal demone servitore)

3 demoneAdemoneB codaA codaB Array di dieci elementi in memoria condivisa ad accesso controllato da un semaforo binario servitore wait/signal inserisci jobrimuovi jobinserisci jobrimuovi jobvisualizza wait/signal

4 Funzionamento del Sistema Il cuore del sistema è rappresentato da un un array di 10 interi contenuto in memoria condivisa. L’accesso all’array e’regolato da un semaforo binario: un solo processo alla volta può leggere/scrivere nell’array. Il demone servitore ha il compito di consultare periodicamente l’array e di servire le richieste che contiene. I demoni demoneA e demoneB hanno il compito di inserire nell’array le richieste provenienti dagli utenti e di rimuovere dall’array eventuali richieste (se non sono ancora state processate dal demone servitore) demoneA e demoneB ricevono le richieste degli utenti attraverso due code di messaggi A e B. Un file di log e’ usato per tenere traccia di tutte le operazioni.

5 Comandi a disposizione degli utenti per gestire le richieste: inserisci coda-x job –Invia su coda-x la richiesta di inserimento di job. –Se l’array e’ pieno inserisci deve restituire un messaggio di errore. Questo funzionamento implica che il processo inserisci rimanga in attesa su coda-x di una risposta da parte di demoneX: job inserito oppure ritenta più tardi, oppure job già presente nell’array. rimuovi coda-x job –Invia su coda-x la richiesta di rimozione di job dall’array Visualizza – Stampa in output l’elenco dei jobs da processare (attualmente presenti nell’area di memoria condivisa)

6 Funzionamento di demoneA/B: DemoneA/B rimane in attesa sulla coda delle richieste inviate dagli utenti su quella coda. Il demone puo’ ricevere un messaggio di tipo inserisci o di tipo rimuovi: –Richiesta inserisci job: il demone accede all’array in memoria condivisa e: Se non esiste una entry vuota in cui inserire job restituisce al processo inserisci un messaggio di array pieno, ritenta piu’ tardi. Se c’è una entry vuota e nessun’altra entry contiene job, inserisce il job nella entry e resituisce al processo inserisci il messaggio job inserito Se job e’ già presente in coda resituisce al processo inserisci il messaggio job già presente nell’array. Nel file di log scrive la richiesta ricevuta e l’esito del suo processamento

7 Funzionamento di demoneA/B: –Richiesta rimuovi job: rimuove dall’array l’entry contentente il job specificato. Se non esiste un tale job, non succede nulla. –Nel file di log scrive la richiesta ricevuta e il suo processamento. I demoni A e B tengono una traccia delle azioni che compiono registrandole in un file di log che puo’ essere consultato per controllare l’evoluzione del sistema al sopraggiungere dei comandi degli utenti. N.B.: il programma visualizza puo’ accedere direttamente all’area di memoria condivisa e stampare sul terminale l’elenco dei job attualmente in attesa di essere processati dal servitore.

8 Funzionamento di servitore: Servitore: all’infinito esegue le seguenti operazioni: 1.attende n secondi (n definito allo start-up del demone) 2.Scorre l’array in memoria condivisa, e per ogni entry non vuota (contentente un valore  da 0) il servitore si forka e ogni figlio: –Scrive nel file di log che sta per processare l’entry –Rimuove l’entry dall’array (scrive 0 nell’entry) –Processa l’entry (aspetta 1  x  10 secondi random) –Scrive nel file di log che ha processato l’entry e termina 3.Appena ha scandito l’intero array, il processo padre esce dall’area di mutua esclusione della memoria condivisa e si mette in attesa della terminazione dei figli. 4.Quando tutti i figli sono terminati ripete tutte le operazioni dal punto 1

9 Esempio di output del file di log: –DemoneA: inserisci 43 –DemoneB: inserisci 994 –DemoneA: inserito 43 –DemoneA: inserisci 123 –DemoneB: inserisci 112 –DemoneA: inserito 123 –demoneB: inserito 994 –….. –Servitore: inizio processamento job n. 43: 6 secondi –Servitore: inizio processamento job n. 123: 8 secondi –Servitore: inizio processamento job n. 994: 1 secondi –… –DemoneA: rimuovi 43 –Servitore: terminato processamento job n. 994 –Servitore: terminato processamento job n. 43 –…..

10 Che cosa dovete fare: Dovete sviluppare dei programmi C che implementino i due demoni A e B, il servitore, ed i tre programmi inserisci, rimuovi e visualizza. Potete far uso di qualsiasi system call, programma d’esempio, comandi shell visti a lezione, e di qualsiasi strumento software messo a disposizione dall’ambiente Unix.

11 Alcuni dettagli implementativi Il primo passo della simulazione consiste nel far partire in background i 3 demoni, i quali sono responsabili di allocare le risorse (code, semaforo, memoria condivisa) necessarie al funzionamento della simulazione. Servitore deve essere lanciato con un argomento intero che indica quanti secondi aspettare tra una visita all’array e la successiva. I programmi utente (rimuovi, inserisci, visualizza) e i demoni devono tutti essere contenuti in una qualche cartella della vostra home, ma i programmi utente devono funzionare anche se lanciati da un’altra cartella. Opzionale: prevedere un meccanismo (ad esempio un segnale speciale da inviare al demone servitore) per terminare automaticamente la simulazione, rimuovendo tutte le risorse e uccidendo i demoni delle code e il servitore stesso).

12 Alcuni suggerimenti implementativi (non sono obbligatori) Un comando inserisci/rimuovi puo’ avere la forma: inserisci A xy oppure inserisci B xy Dove A o B indica la coda su cui inviare la richiesta, e xy, che rappresenta il job, e’ un qualsiasi numero intero. E’ anche accettabile che xy sia un numero compreso tra 1 e 255. Una entry vuota dell’array puo’ essere rappresentata dal valore 0 Anziche’ un valore random, per simulare il processamento di un job dell’array da parte di uno dei figli di servitore si puo’ usare un valore che e’ calcolato sulla base del numero xy. (ma deve essere sempre un numero di secondi compreso tra 1 e 10 secondi)

13 Informazioni generali sull’esame: Scadenza per la consegna dell’esercitazione: inizio del secondo trimestre AA 2002/2003 (circa gennaio 2003) Cosa si consegna: listati del codice, possibilmente commentati in maniera chiara. Quando: su appuntamento. Almeno 3 giorni prima del giorno fissato per veder girare il programma dell’esercitazione, consegnatemi i listati del codice. Esame orale: se i programmi funzionano in modo corretto, e non sono richieste modifiche, l’esame orale puo’ essere sostenuto subito dopo, o in altra data (sempre su appuntamento).

14 Contenuti dell’esame orale: All’orale dovete dimostrare di aver acquisito una dimestichezza di base nell’uso del sistema operativo Unix. Quindi sarete interrogati su questi argomenti: –Il kernel del S.O. Unix: Implementazione del File System, Buffer Cache, gestione dei processi. –Conoscenza di base dei comandi della shell, e capacita’ di risolvere semplici problemi che richiedono di usare e /o combinare fra loro i comandi della shell (se avete provato a risolvere gli esercizi dati a lezione, non dovreste avere problemi). – Conoscenza dei programmi sviluppati per l’esercitazione finale del corso (per cui, fate attenzione, se lavorate in gruppo, a non far fare tutto il lavoro ad uno solo)