Servizi per la didattica
PORTALE DELLA DIDATTICA

Programmazione di sistema

02GRSOV

A.A. 2018/19

Lingua dell'insegnamento

Italiano

Corsi di studio

Corso di Laurea Magistrale in Ingegneria Informatica (Computer Engineering) - Torino

Organizzazione dell'insegnamento
Didattica Ore
Lezioni 70
Esercitazioni in laboratorio 30
Tutoraggio 60
Docenti
Docente Qualifica Settore h.Lez h.Es h.Lab h.Tut Anni incarico
Cabodi Gianpiero Professore Associato ING-INF/05 35 0 18 30 10
Collaboratori
Espandi

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
2018/19
Il modulo illustra l'architettura dei sistemi operativi analizzandone i moduli interni, e approfondisce i concetti e le tecniche di gestione efficiente delle risorse di un sistema di elaborazione (processori, memorie, dispositivi periferici, file, ecc.). Sono presentate inoltre le tecniche di programmazione di sistema mediante l'analisi e l'utilizzo delle chiamate di sistema di Unix e Windows. Vengono infine introdotte ed utilizzate tecniche avanzate di programmazione concorrente.
This course is characterizing for the Master of Science in Computer Engineering, and it is held at the second semester of the first year. This course analyzes the operating system architecture, and its internal modules. It introduces concepts and techniques for an effective management of the resources of a computer system (processors, memories, devices, files, etc.). System programming techniques are illustrated through the analysis and use of Unix and Windows system calls. Advanced concurrent programming techniques are also introduced.
- Conoscenza dell'architettura dei sistemi operativi come insieme di gestori di risorse - Conoscenza dei moduli del nucleo del sistema operativo, e capacitā di implementare nuovi moduli - Capacitā di usare system call per la creazione, sincronizzazione e terminazione di processi e thread - Conoscenza del meccanismo della memoria virtuale - Conoscenza delle tecniche di schedulazione dei processi con e senza vincoli di tempo reale - Capacitā di analizzare e implementare algoritmi di gestione della memoria e di schedulazione - Conoscenza delle tecniche di gestione dei dispositivi periferici - Capacitā di analizzare ed implementare device drivers - Conoscenza dell'organizzazione dei moderni file system e capacitā di gestione degli stessi - Conoscenza delle principali tecniche di protezione delle risorse e delle informazioni - Conoscenza di interface (API) per programmazione di sistema (system calls) - Capacitā di analizzare e realizzare programmi basati su system call - Capacitā di analizzare e realizzare programmi basati su processi e/o thread concorrenti
- Knowledge of the operating systems architecture as a collection of resource managers - Knowledge of operating system kernel modules, and skill to implement new modules - Skill for using system calls for the creation, synchronization and termination of processes and threads - Knowledge of virtual memory mechanism - Knowledge of process scheduling with and without real-time constraints - Skill to understand and implement memory management and scheduling algorithms - Knowledge of device management - Skill to understand and implement device drivers - Knowledge of modern file system organizations and skill to manage file systems and file locking - Knowledge of the main mechanisms for resource and information protection - Knowledge of system programming APIs (system calls) - Skill to understand and implement programs based on system calls - Skill to understand and implement concurrent programs based processes/threads
- Conoscenza dell'architettura dei sistemi di elaborazione: in particolare struttura del processore e organizzazione della memoria - Conoscenza del meccanismo delle interruzioni e dei fondamenti di un linguaggio Assembler - Conoscenza dei fondamentali tipi di strutture dati ed algoritmi - Capacitā di sviluppare programmi in linguaggio C - Conoscenza delle tecniche di base per la programmazione concorrente.
- Knowledge of a computer system architecture: in particular structure of the CPU and memory - Knowledge of the interrupt mechanism and basics of an Assembler language - Knowledge of the main data type structures and algorithms - Good programming skill in C language - Knowledge of base concurrent programming techniques
Architettura Sistema Operativo (3 ore) - moduli di gestione delle risorse di un sistema di elaborazione - gestione di processi e thread (richiami) Gestione della memoria (12 ore) - segmentazione - paginazione - memoria virtuale Sistema operativo didattico OS161 (8 ore) Gestione delle unitā periferiche (6 ore) - driver e gestione dispositivi - gestione degli accessi a disco Gestione dei file (6 ore) - organizzazione di un file system, gestione e protezione degli archivi Introduzione al linguaggio C++: (12 ore) - Classi, ereditarietā e polimorfismo - Gestione delle eccezioni e supporto runtime - Programmazione generica Sviluppo di applicazioni Win32: (5 ore) - programmazione reattiva - progetto e implementazione di interfacce grafiche - gestione dell'interazione con l'utente Programmazione di sistema in Linux e Win32: (12 ore) - Gestione di processi and thread - sincronizzazione - gestione di file and direttori - gestione della memoria - I/O sincrono and asincrono - Comunicazione tra processi Macchine Virtuali: (6 ore) - principi generali - l'ambiente .NET
Operating System architecture (3 hours) - Modules for the management of the resources of a computer system - Process and thread synchronization (recalls) Memory management (12 hours) - Segmentation - Paging - Virtual memory Teaching operating system OS161 (8 hours) Device management (6 hours) - drivers and IO device management - Disk management File system management (6 hours) - File system organization and protection - File locking Introduction to C++ (12 hours) - Classes, inheritance and polymorphism - Exception handling and runtime support - Generic programming Win32 Application development: (5 hours) - reactive programming - graphical user interface design and implementation - user interaction handling Win32 and Linux System Programming: (12 hours) - process and thread management, - synchronization - file and directory management - memory management - synchronous and asynchronous I/O - interprocess communication Virtual Machines: (6 hours) - general principles - the .NET framework
Esercitazioni in laboratorio (30 ore) - realizzare un allocatore di memoria - Modificare e installare un kernel - Il bootstrap del un Sistema Operativo - Creare una system call - Dettagli interni e chiamate di sistema relativi a un file system - I moduli del Kernel e i daemon - Struttura dei device driver - Progetto
Laboratory practice (30 hours) - writing a dynamic memory handler - Kernel customization and install - OS booting - Writing a system call - File system internals - Kernel modules and daemons - Device drivers - Course project: developing a wearable I/O peripheral and implement corresponding device driver and configuration and management software
I testi, scelti tra quelli elencati, saranno comunicati a lezione dal docente titolare dell'insegnamento Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5 W.R. Stevens "Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company Johnson M. Hart, 'Windows System Programming', Addison-Wesley Publishing Company - Materiale didattico a disposizione su Web - Trasparenze proiettate in aula - Esercizi e soluzioni
Silberschatz, Galvin, Gagne: 'Operating System Concepts', 7th Edition, John Wiley & son, 2003, ISBN: 0-471-69466-5 W.R. Stevens "Advanced programming in the UNIX Environment", Addison-Wesley Publishing Company Johnson M. Hart, 'Windows System Programming', Addison-Wesley Publishing Company - teaching resouses available on Web - class slides - Exercises and solutions
Modalitā di esame: prova scritta; progetto di gruppo;
L'esame č costituito da una prova scritta, della durata di 150 minuti, č costituita da due parti, con esercizi e/o domande sugli argomenti svolti a lezione, relativi a: - realizzazione e moduli interni di un sistema operativo - chiamate di sistema e programmazione concorrente Durante lo svolgimento dell’esame non č possibile consultare testi o appunti. L'esame non č superato se il punteggio relativo ad una delle due parti non č sufficiente. Il progetto svolto al termine del corso contribuisce al voto finale.
Exam: written test; group project;
The exam consists in a written (150 min) part with exercises/questions on theoretical and practical aspects of the course. The exam is split in two parts: - operating system internals - system calls and concurrent programming A sufficient grade is required in both parts. The final grade includes an evaluation of the project.


© Politecnico di Torino
Corso Duca degli Abruzzi, 24 - 10129 Torino, ITALY
m@il