Politecnico di Torino
Politecnico di Torino
Politecnico di Torino
Academic Year 2015/16
System programming
Master of science-level of the Bologna process in Computer And Communication Networks Engineering - Torino
Teacher Status SSD Les Ex Lab Tut Years teaching
Montrucchio Bartolomeo ORARIO RICEVIMENTO A2 ING-INF/05 39 20 21 0 7
SSD CFU Activities Area context
ING-INF/05 8 C - Affini o integrative Attivitΰ formative affini o integrative
Subject fundamentals
The course aims at introducing the basic elements of the Operating Systems architecture, describing the basic
structure of OSs and the working principles from the point of view of both the advanced user and the system programmer.
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.
System programming techniques are illustrated through the analysis and use of Unix system calls.
The course is taught in English.
Expected learning outcomes
• Skill for using system calls for the creation, synchronization and termination of processes and threads
• Knowledge of virtual memory mechanism
• Knowledge of process scheduling
• Skill to understand device drivers
• Skill to understand and implement programs based on system calls
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 Assembly language
• Knowledge of the main data type structures and algorithms
• Good programming skill in C language
1. Computer Architecture and Programming (0.75 credits):
o Recalls on programming languages
o Architecture and behavior of a processor
o Peripheral management and control
2. Operating System Structures (0.3 credits):
o Operating System Services and User Interface
o Kernel
3. Unix shell (0.3 credits):
o Bash
o Debugger
o Profiler
4. Processes and Threads (1.4 credits):
o multitasking and scheduling
o Concurrent Programming
o Threads
5. Process and Threads Synchronization (2,1 credits):
o Semaphores
o Inter-Process Communication
o Deadlock
o System call
o Posix Threads
6. Memory Management and Virtual Memory (0.45 credits)
7. Virtual machines (0,3 credits)
8. Linux kernel and Linux drivers (0,45 credits)
o Managing and compiling Linux kernel
o Creating a Linux device driver
Delivery modes
Laboratory activity (1.95 credits):
o Unix Shell
o Concurrent programming with processes and threads
o Virtual Machines
o Linux kernel
o Linux device drivers
The students are required to submit four homeworks, at defined deadlines. The homeworks will be evaluated.
Texts, readings, handouts and other learning resources
The slides used for the course will be made available to the students, through the official page of the course on the web site.

The textbooks are the following:
• Silberschatz, Galvin, Gagne, Operating System Concepts, 8th Edition, John Wiley & Son, 2009
• J. Cooperstein, Linux Program Development, 2009
• J. Cooperstein, Writing Linux Device Drivers, 2009
Assessment and grading criteria
The examination consists of a written test and an oral verification. Homeworks correctness and completeness
will be also considered in the final result.

The written test (duration of 120 minutes) consists of two parts:
• exercises and questions on the topics of the lectures
• the solution to a problem using threads or concurrent programming in C language.

The oral verification will be on the topics of the lectures, on the homeworks and on the verification
of the program developed at the written exam.

Programma definitivo per l'A.A.2015/16

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