Number of hours
- Lectures 16.0
- Projects 0
- Tutorials 0
- Internship 0
- Laboratory works 12.0
ECTS
ECTS 1.0
Goal(s)
To understand machine resource management (time, memory);
To understand the link with machine hardware (atomic instructions, MMU, privilege level, etc.);
To provide basic system programming tools (process, thread, signal, synchronization);
To use a standard API (POSIX).
Content(s)
Lectures:
- When an OS is needed
- Processes and threads
- Events: interrupts and signals
- CPU management
- Memory management
- Synchronization (mutex, spinlock, semaphores, non-locking algorithms)
The goal of the practical labs is to strengthen both practice and general knowledge of system programming, using examples that are as useful and realistic as possible. Such examples include: Unix filters, Unix daemons, a memory protection framework, a plugin system using the dynamic loader, an introduction to high performance computing and the pitfalls of multi-threads programming, and a time-sharing simulator.
Prerequisites
- Decent basic C programming, including compilation chain, unions and structures, (function) pointers, basisc preprocessor.
- Basic exposition to the Unix environment (files and directories management, simple commands, basic usage of a C compiler and make)
EXAM: 2hrs written exam, no document nor any electronic devices allowed.
•10 points on course questions
•6 points on lab questions
•4 points on more involved topics
- MCC en présentiel **
N1=EXAM1
N2=EXAM2
- MCC en présentiel **
- MCC en distanciel **
N1 = TP à distance
N2 = TP2 à distance
- MCC en distanciel **
"Principes des Systèmes d'Exploitation", Abraham Silberschatz, Peter B. Galvin, Greg Gagne
"Programmation Système en C sous Linux", Christophe Blaess