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

 

Context

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.

Goals

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.

Skills

Concepts

   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

   Functions

   Array, structures and unions

   Pointers

   Preprocessor, libraries, modular programming, make

   Multitask system, process and task scheduler

   Memory management

   File system

   Processes and threads

   signaling

   Interprocess communication (IPC) : shared memory, semaphores

Skills

   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.

Bibliography

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