Servizi per la didattica
PORTALE DELLA DIDATTICA

Programmazione di sistema

02GRSOV

A.A. 2019/20

Lingua dell'insegnamento

Italiano

Corsi di studio

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

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

Didattica
SSD CFU Attivita' formative Ambiti disciplinari
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
2019/20
Il corso si articola in due parti: la prima affronta gli aspetti interni ("internals") di un sistema operativo, illustrandone l'architettura e la progettazione dei sotto-sistemi, nella seconda si trattano le interfacce di programmazione per l'utilizzo delle risorse di sistema e per la programmazione concorrente. La parte I (internals) affronta i moduli di un sistema operativo, e si approfondiscono i concetti e le tecniche di gestione efficiente delle risorse di un sistema di elaborazione (processori, memorie, dispositivi periferici, file, ecc.). Nella parte II (interfaccia al sistema e programmazione concorrente) si presentano le tecniche di programmazione di sistema mediante l'analisi e l'utilizzo delle chiamate di sistema, per sistemi operativi quali Unix/Linux e Windows. Vengono introdotte ed utilizzate tecniche avanzate di programmazione concorrente.
This course is organiszd in two parts: the first one ("internals") introduces the architecture and the design principles of an operating system, the second part describes programming interfaces for system programming and resource management, as well as concurrent programming. Part I (internals) deals with internal operating system modules, together with the main techniques and strategies for efficient management of resources such as processors, memories, peripheral devices, files, etc. Part II (system and concurrent programming) introduces system programming techniques, within the framework of state-of-the-art operating systems, such as Unix/Linux and Windows. Advances concurrend programming techniques are introduced and used.
Parte I - 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 - CapacitÓ di analizzare e implementare algoritmi di gestione della memoria virtuale - 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 Parte II - 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 con tecniche avanzate di interazione con un file system, quali accesso sequenziale, diretto e condiviso a file, e uso dei direttori - CapacitÓ di analizzare e realizzare programmi con tecniche di gestione di eccezioni e segnali - CapacitÓ di analizzare e realizzare programmi con tecniche di gestione avanzata della memoria, quali allocatori, mamory mapping di file, librerie dinamiche. - CapacitÓ di analizzare e realizzare programmi basati su processi e/o thread concorrenti - CapacitÓ di analizzare e realizzare programmi concorrenti con tecniche avanzate di sincronizzazione, scambio di messaggi, andivisione di dati
Part I - Knowledge of the operating systems architecture as a collection of resource managers - Knowledge of operating system kernel modules, and new module implementation skills - Skill to use system calls for creation, synchronization and termination of processes and threads - Knowledge of virtual memory mechanisms - Skill to understand and implement virtual memory management algorithms - Knowledge of peripheral device management techniques - Skill to understand and implement device drivers Part II - Knowledge of modern file system organizations and skill to manage file systems and file locking - Knowledge of system programming APIs (system calls) - Skill to understand and implement programs based on system calls - Skill to understand and implement programs with advanced file system interactions, such as sequential, random and/or shared file access, and directory manipulation - Skill to understand and implement reliable/robust programs exploiting exception and signal handling - Skill to understand and implement programs with advanced memory management tachniques, such as dynamic allocation, memory mapping of files, dynamic libraries - Skill to understand and implement concurrent programs based on processes/threads - Skill to understand and implement concurrent programs exploiging - advanced synchronization, message passing, and data sharing techniques
- 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, with a specific emphasys on the structure of the CPU and memory subsystem - Knowledge of the interrupt mechanism and basics of an assembly language - Knowledge of the foundations of data structures and algorithms - Good programming skill in C language - Knowledge of base concurrent programming techniques
Parte I Richiami di Architettura del Sistema Operativo (3 ore) - moduli di gestione delle risorse di un sistema di elaborazione - gestione di processi e thread (richiami) Gestione della memoria (9 ore) - indirizzi fisici e logici, MMU, TLB - paginazione - memoria virtuale e paginazione a richiesta Gestione delle unitÓ periferiche (3 ore) - driver e gestione dispositivi - gestione degli accessi a disco Gestione dei file (6 ore) - organizzazione di un file system, - organizzazione e operazioni su file e direttori Sistema operativo didattico OS161 (9 ore) - architettura del sistema, struttura dei sogenti, compilazione, esecuzione, debug - creazione si semplici system calls per input/output - gestione di thread e processi user - implementazione di primitive di sincronizzazione - implementazione di semplice supporto per I/O su file Parte II Introduzione al linguaggio C++ e alla programmazione concorrente in C11: (15 ore) - classi, ereditarietÓ e polimorfismo - gestione delle eccezioni e supporto runtime - programmazione generica - programmazione concorrente Programmazione di sistema e concorrente in Linux e Win32: (12 ore) - gestione di file e direttori - gestione di processi e thread - sincronizzazione - gestione di eccezioni e segnali - gestione della memoria - I/O sincrono e asincrono - comunicazione tra processi Esempi di applicazioni Win32 e/o Linux: (5 ore) - programmazione reattiva - progetto e implementazione di interfacce grafiche e gestione dell'interazione con l'utente Macchine Virtuali: (3 ore) - principi generali - l'ambiente .NET
Part I Review of Operating System Architecture (3 hours) - modules for the management of the resources of a computer system - process and thread management synchronization (recalls) Memory management (9 hours) - phisical and logical address spaces, MMU, TLB - Paging - Virtual memory and demand paging Peripheral Device management (3 hours) - drivers and IO device management - disk management File system management (6 hours) - file system organization and protection - management an operations on files and directories Teaching operating system OS161 (9 hours) - system level architecture, source files, compilation, execution, debug - implementation of simple system calls for standard I/O - thread and user process management - implementation of synchronization primitives - implementation of simple support for file I/O Part II Introduction to the C++ language and to concurrent programming in C11 (12 hours) - classes, inheritance and polymorphism - exception handling and runtime support - generic programming - concurrent programming Win32 and Linux system programming and concurrent programming: (12 hours) - file and directory management - process and thread management, - synchronization - exception and signal handling - memory management - synchronous and asynchronous I/O - interprocess communication Examoles of Win32 and/or Linux Application development: (5 hours) - reactive programming - graphical user interface design and implementation and user interaction handling Virtual Machines: (3 hours) - general principles - the .NET framework
A) Lezioni/esercitazioni in aula (64 ore) B) Esercitazioni in laboratorio (36 ore) Parte I - Modificare e installare il kernel OS161 (sistema operativo didattico ispirato a Unix) - Il bootstrap di un Sistema Operativo - Creare una system call - Supporto per gestione di processi e thread - Primitive di sincronizzazione - Creazione e terminazione di un processo - Supporto per file system e struttura dei device driver Parte II - Chiamate di sistema relativi a un file system, gestione di file e direttori - Programmazione concorrente basata su thread e processi - Primitive di sincronizzazione e schemi di programmazione concorrente - Programmi con gestione di eccezioni e/o segnali - Programmi con gestione avanzata di memoria dinamica, tecniche di memory mapping per file, librerie dinamiche, inter-process communication. C) Progetto: opzionale, realizzato in gruppi di lavoro, su approfondimenti relativi alla prima o alla seconda perte del corso
A) Class lectures (64 hours) B) Laboratory practice (36 hours) Part I - Customizing and installing the OS161 (Unix-like teaching operating system) kernel - OS booting - Writing a system call - OS support for process and thread management - Synchronization primitives - creating and terminating a user process - Support for file system management and structure of a device driver Part II (system call interface and concurrent programming) - System calls for file system interface, file and directory management - Concurrent programming based on thread and processes - Synchronization primitives and concurrent programming templates - Programs with exception and/or signal handling - Programs with advanced dynamic memory management, memory mapping of files, dynamic libraries, inter-process communication C) Course project: optional, achieved in working groups, on advanced topics from either of the two partr of the course
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;
Esame L'esame Ŕ costituito da una prova scritta, della durata di 150 minuti, relativa alle 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 Entrambe le parti dell'esame si propongono di accertare tutti i relativi obiettivi formativi, sia in termini di conoscenze che di capacitÓ acquisite. Durante lo svolgimento dellĺesame non Ŕ possibile consultare testi o appunti. Le due parti possono essere sostenute in appelli diversi. L'esame non Ŕ superato se il punteggio relativo ad una delle due parti non Ŕ sufficiente. Ognuna delle due parti della prova scritta contribuisce a un punteggio massimo di 13 punti, per un punteggio totale fino a un massimo di 26. Allo scritto si aggiunge un progetto (lavoro di gruppo) facoltativo su una delle due parti del corso, con punteggio fino a un massimo di 6. Un voto complessivo di 31 o 32 porta a 30 con Lode. Il progetto accerta prevamentemente gli obiettivi cormativi in termini di capacitÓ acquisite.
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 (that can be taken at different dates): - operating system internals - system calls and concurrent programming Both parts of the exam verify the related expected learning outcomes in terms of knowledge as well as skills. A sufficient grade is required in both parts. The final grade is obtained by summing the grades of the two parts (maximun grade for each part: 13, maximun total grade: 26). A final optional (group) project, on either of the two course parts, can ad an extra (up to 6) grade. A final total grade of 31 or 32 is converted to 30 cum laude. The optional project mainly verifies the expected learning outcomes in terms of skills.


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