|Politecnico di Torino|
|Academic Year 2015/16|
Master of science-level of the Bologna process in Electronic Engineering - Torino
The course focuses on the basics of the operating systems architectures, with a particular emphasis on operating systems for embedded systems, along with their corresponding development frameworks. The course will also cover issues related with real-time embedded systems and their communication with dedicated hardware components.
Expected learning outcomes
Knowledge of the kernel structure and organization of an operating system
Knowledge of virtual memory mechanism
Knowledge of process scheduling and parallel execution threads
Skill for using system calls for the creation, synchronization and termination of processes and threads
Skill to understand device drivers
Skill to understand and implement programs based on system calls
Skill for using embedded systems development tools: cross-compilers, emulators, debuggers, profilers, virtualizers.
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
Operating system architecture (0.5 CFU)
- Operating systems classification
- Structure of an operating system in terms of resources and corresponding management modules.
- The OS Kernel: possible organizations.
- Process types
Processes and Threads (2.1 CFU)
- Processes: definition and types
- Concurrent processes
- Process management
- Process scheduling
- Process synchronization and synchronization primitives
- Inter-Process Communication
- The deadlock problem
Memory management, virtualization (0.4 CFU)
- Segmentation and Paging
- Virtual memory
Embedded Systems (1 CFU)
- Classification and peculiar characteristics vs desktop systems
- Introduction to Real Time systems
- Development tool-chains for embedded systems
- Challenges in device-drivers design
Laboratory activity (2 credits):
- Unix Shell
- Concurrent programming with processes and threads
- Virtual Macchine
- Driver Linux.
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
C. Hallinan, Embedded Linux Primer: A Practical Real-World Approach, Prentice-Hall, 2006
Assessment and grading criteria
The examination consists of a written test and an oral verification.
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 and on the verification of the program developed at the written exam. For the verification of the program, the student will have to provide the working code and a report.
The verification will be organized as a discussion in front of a PC where the student will be asked to:
Compile/Build the software
Run the software
Explain a piece of code taken at random from the source files
Possibly explain how and where to modify the code to change one of the program functionalities
- Discuss the results and the report.
Programma definitivo per l'A.A.2015/16