Lo studente acquisirà conoscenze relative ai concetti principali dei sistemi operativi e della loro implementazione, e alla programmazione concorrente.
Il corso intende fornire le conoscenze di base relative alla programmazione C con chiamate di sistema Unix/POSIX. In particolare, vengono prese in considerazione le chiamate standard per il trattamento di file e directory, processi, thread, segnali, pipe, socket e vari meccanismi di sincronizzazione.
The student who successfully completes the course will demonstrate a solid knowledge of the fundamental concepts related to the operating systems and of the aspects related to their implementation. Furthermore, the student will have the ability to write concurrent programs that use system calls for the interaction with the devices and with the operating system.
La valutazione avverrà tramite una prova scritta e la discussione di un progetto.
Nella prova scritta verrà valutata la capacità dello studente di comprendere e di risolvere alcuni esercizi che presentano situazioni ipotetiche in un sistema operativo e verrà valutata la capacità di presetare contenuti del corso usando una terminologia appropriata.
Con il progetto verrà valutata la capacità dello studente di mettere in pratica le conoscenze acquisite, tramite la realizzazione di un progetto funzionante.
Prova scritta, e progetto in C e sua discussione.
Metodi:
- The student will be assessed on his/her demonstrated ability to discuss the main course contents using the appropriate terminology. - During the written and oral exam the student must be able to demonstrate his/her knowledge of the course material and be able to solve exercises and to discuss the reading matter thoughtfully and with propriety of expression. - The student must demonstrate the ability to put into practice and to execute, with critical awareness, the activities illustrated or carried out under the guidance of the teacher during the laboratory.
Methods:
Further information:
Students must produce a working project as result of the laboratories. The weighting of the different parts of the exam is: - project (50%) - final written and oral exam (50%)
Lo studente acquisirà la capacità di scrivere programmi concorrenti che utilizzano chiamate di sistema per l'uso dei dispositivi e per l'interazione con il sistema operativo
Programmazione POSIX. Conoscenza degli aspetti fondamentali del Sistema Operativo UNIX.
Posix Programming. Knwledge of the main aspects of the UNIX operating system.
Progetto in C e sua discussione.
Non sono previste prove per la verifica dei comportamenti.
C project (with discussion).
Il corso non si pone obiettivi di apprendimento in termini di comportamenti attesi.
Una buona conoscenza di C. sono utili basi di architetture degli elaboratori e di programmazione
Good knowledge of the C language.
Le lezioni avvengono in aula o in laboratorio alla presenza del docente. Le attività di apprendimenti comprendono:
Non c'è obbligo di presenza alle lezioni
Lezioni frontali.
Attivita' di apprendimento:
Frequenza non obbligatoria.
Metodi di insegnamento:
Delivery: face to face
Learning activities:
Attendance: Not mandatory
Teaching methods:
Il corso è strutturato in due moduli: il primo modulo presenta i fondamenti dei sistemi operativi e il secondo modulo di laboratorio mostra un’applicazione concreta dei concetti teorici presentati nel primo modulo.
Il primo modulo introduce i principi ed i concetti su cui si basano i sistemi operativi e analizza la loro realizzazione nei sistemi reali. In particolare, vengono presentate le tecniche che consentono di coordinare e gestire le risorse di un sistema di elaborazione e che permettono di trasformare la macchina fisica in una macchina astratta, dotata di funzionalità più convenienti per l'utente. Il corso lascia ampio spazio alla descrizione e all'esemplificazione di come i vari concetti presentati sono realizzati nei sistemi Unix/Linux e in quelli della famiglia Microsoft Windows. Il secondo modulo fornisce le conoscenze di base relative alla programmazione C con chiamate di sistema Unix/POSIX. In particolare, vengono prese in considerazione le chiamate standard per il trattamento di file e directory, processi, thread, segnali, pipe, socket e vari meccanismi di sincronizzazione.
The course is organized in two moduli: one theoretical (named Operating Systems), and one practical (named laboratory). The Operating Systems module introduces the main concepts of operating systems and discusses their implementation in real systems. Specific topics covered are concurrency and the management of processor, memory and device management, the file system and the case studies of Unix/Linux and Windows. The module of laboratory gives a broad view of standard tools for sequential C programs addressing debugging, testing, compiling, making libraries, using makefiles to manage large programs. Precisely, the module presents the Bash shell scripting language and develop simple scripts for routine tasks. In the last part of the course we present Posix programming and develop a small client-server system using Posix threads.
T. Anderson, M. Dahlin : "Operating Systems: principles and practice", Recursive Books Ltd, 2013 Marc J. Rochkind. Advanced UNIX Programming 2nd Edition, Addison-Wesley Professional Computing Series, 2004.
T. Anderson, M. Dahlin : "Operating Systems: principles and practice", Recursive Books Ltd, 2013 Marc J. Rochkind. Advanced UNIX Programming 2nd Edition, Addison-Wesley Professional Computing Series, 2004.
gli studenti non frequentanti hanno accesso a tutto il materiale didattico (inclusa la registrazione delle lezioni) al sito web del corso
Completamento progetto in C e sua discussione.
La valutazione avverrà tramite la discussione di un progetto assegnato durante il corso e realizzato dagli studenti, e tramite una prova scritta che verterà sugli argomenti di entrambi i moduli di laboratorio e di teoria. In ogni appello d’esame, l’ammissione alla prova scritta è vincolata alla presentazione (almeno 5 giorni prima della data dell’appello) di un progetto che deve essere valutato ammissibile per poter proseguire l'esame. Nel caso di un numero limitato di iscritti all’appello i docenti si riservano di sostituire la prova scritta con una prova orale equivalente, avvisando preventivamente gli iscritti tramite l’e-mail indicata dagli stessi all’iscrizione.
Nella prova scritta verrà valutata la capacità dello studente di comprendere e di risolvere alcuni esercizi che presentano situazioni ipotetiche in un sistema operativo e verrà valutata la capacità di presentare contenuti del corso usando una terminologia appropriata.
Con il progetto verrà valutata la capacità dello studente di mettere in pratica le conoscenze acquisite, tramite la realizzazione di un progetto funzionante.
Durante il corso si svolgeranno inoltre due prove (scritte) di verifica intermedia (orientativamente a metà del corso e alla fine del corso). Lo studente che ottiene un voto sufficiente alle prove di verifica intermedia è esentato dalla prova scritta, e dovrà solo discutere il progetto realizzato in uno degli appelli dello stesso anno accademico.
La validità del voto conseguito con le prove di verifica intermedia cessa al termine dell’anno accademico (quindi dopo l’ultimo appello straordinario, che si svolge normalmente ad Aprile dell’anno successivo). Ogni prova di verifica intermedia consiste nello svolgimento di alcuni esercizi riguardanti entrambi i moduli (di teoria e di laboratorio) e può essere sostenuta prima della presentazione del progetto.
Si fa presente che per l’ammissione a tutte le prove d’esame, incluse le prove di verifica intermedia, è obbligatoria l’iscrizione secondo le modalità stabilite dal corso di laurea.
C project (with discussion).