PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

PORTALE DELLA DIDATTICA

Elenco notifiche



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 IINF-05/A 35 0 18 30 15
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 (in aula); Progetto di gruppo;
Exam: Written test; Group project;
... 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.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
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.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.
Esporta Word