Politecnico di Torino
Politecnico di Torino
Politecnico di Torino
Academic Year 2016/17
System and device programming
Master of science-level of the Bologna process in Computer Engineering - Torino
Teacher Status SSD Les Ex Lab Tut Years teaching
Cabodi Gianpiero ORARIO RICEVIMENTO AC ING-INF/05 70 0 30 0 13
SSD CFU Activities Area context
ING-INF/05 10 B - Caratterizzanti Ingegneria informatica
Subject fundamentals
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.
Expected learning outcomes
- 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
Prerequisites / Assumed knowledge
- 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
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
Delivery modes
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
Texts, readings, handouts and other learning resources
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
Assessment and grading criteria
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.

Programma definitivo per l'A.A.2016/17

© Politecnico di Torino
Corso Duca degli Abruzzi, 24 - 10129 Torino, ITALY
WCAG 2.0 (Level AA)