Person in charge: Gilles Carpentier

Pre-requisites:  II.1102 / II.1202 Algorithmics et programming

Organization: 14 lectures

Assessment: 1 final written examination

ECTS: 5 credits



The operating systems are the fundaments on which electronic, informatic and telecommunication applicative systems live and are deployed. They are the link between the applicative and  hardware layers and they provide the essential services upon which efficient applications can be build, maximally exploiting the hardware. It is capital for an operational engineer in charge of the aforementioned applicative systems to have a fundamental knowledge of the operating systems.

Many systems are written in C language , particularly embedded systems.


The course has two main objectives: learn the basic concepts of operating systems (internal aspects) and system programming: to be able to write an application in C language under Linux that interacts with the OS.



   In which context should we use the C language today ?

   Overall structure of a program, syntax, data types, compiling and linking.

   Operators and expressions

   Instructions, blocks and conditions


   Array, structures and unions


   Preprocessor, libraries, modular programming, make

   Multitask system, process and task scheduler

   Memory management

   File system

   Processes and threads


   Interprocess communication (IPC) : shared memory, semaphores


   Design and development of a C program.

   Use of the gcc compiler and make.

Teaching method

A lecture followed by a laboratory session per week.


The C language (Kernighan & Ritchie)
Pratique performante du langage C (Emmanuel Lazard)
Linux man pages