Vous êtes sur la page 1sur 12

Systèmes d’exploitation et Programmation système

(RS)

Lucas Nussbaum <lucas.nussbaum@loria.fr>


Supports de cours, TD et TP largement basés sur ceux de
Martin Quinson <martin.quinson@irisa.fr>

Telecom Nancy – 2ième année

http://members.loria.fr/lnussbaum/rs.html
À propos de ce document

Document diffusé selon les termes de la licence


Licence Creative Commons version 3.0 France (ou ultérieure)
Attribution ; Partage dans les mêmes conditions
http://creativecommons.org/licenses/by-sa/3.0/fr/

Remerciements
I Sacha Krakoviack pour son cours et Bryant et O’Hallaron pour leur livre
I Les (autres) emprunts sont indiqués dans le corps du document

Aspects techniques
I Document LATEX (classe latex-beamer), compilé avec latex-make
I Schémas : Beaucoup de xfig, un peu de inkscape

Site du cours : http://members.loria.fr/lnussbaum/rs.html


I TD/TP, exams et projets (sources disponibles aux enseignants sur demande)

(2/218)
À propos de moi. . .
Lucas Nussbaum
I Formation : ingénieur ENSIMAG (2005), Doctorat (2008)
I Depuis 2009 :
I Enseignant-chercheur (Maı̂tre de conférences) à l’univ. de Lorraine
I Principalement en licence professionnelle ASRALL
(Administration de Systèmes, Réseaux et Applications à base de Logiciel Libre)
I Chercheur dans l’équipe RESIST du LORIA
I Recherche : Systèmes distribués, calcul à haute performance, Cloud

I Contributeur au logiciel libre


Debian (Project Leader 2013-2015, Quality Assurance), Ruby
I Plus d’infos :
I http://members.loria.fr/lnussbaum/ (Lucas.Nussbaum@loria.fr)
(3/218)
Organisation pratique du module

Module en deux parties


I Partie système (intervenant en cours : Lucas Nussbaum)
I 5 cours, 3 TD, 3 TP
I Examen sur table (mi octobre)
I Documents interdits sauf un A4 recto/verso manuscrit
I un projet (pour décembre)
I Binômes et Git obligatoires
I Le sujet arrive bientôt. . .
I Partie réseaux (intervenant en cours : Isabelle Chrisment)

Implication
I Manipulation : programmez ! Expérimentez !
I Questions bienvenues : pendant/après le cours, par mail, etc.

(4/218)
Pourquoi un cours de système ?
I Quatre concepts fondamentaux de l’Informatique (G. Dowek) :
Information, Machine, Algorithme, Langage
I Les architectures et infrastructures modernes sont complexes
I Wikipedia : 1145 serveurs, 30 900 CPUs
I OVH : 250 000 serveurs
I OpenStack (pile logicielle permettant de créer un Cloud privé)

(5/218)
Pourquoi un cours de système ? (2)
I Noyau Linux (et outils d’observation)

(6/218)
Pourquoi un cours de système ? (3)
Machine (126GB total)

NUMANode P#0 (63GB) NUMANode P#1 (63GB)

Socket P#0 PCI 1000:005f Socket P#1

L3 (20MB) sda sdb L3 (20MB)

L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB) L2 (256KB)
PCI 8086:154d

L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) eth2 L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB) L1d (32KB)

L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB) L1i (32KB)
PCI 8086:154d

Core P#0 Core P#1 Core P#2 Core P#3 Core P#4 Core P#5 Core P#6 Core P#7 eth3 Core P#0 Core P#1 Core P#2 Core P#3 Core P#4 Core P#5 Core P#6 Core P#7

PU P#0 PU P#16 PU P#2 PU P#18 PU P#4 PU P#20 PU P#6 PU P#22 PU P#8 PU P#24 PU P#10 PU P#26 PU P#12 PU P#28 PU P#14 PU P#30 PU P#1 PU P#17 PU P#3 PU P#19 PU P#5 PU P#21 PU P#7 PU P#23 PU P#9 PU P#25 PU P#11 PU P#27 PU P#13 PU P#29 PU P#15 PU P#31
PCI 8086:10fb

eth0

PCI 8086:10fb

eth1

PCI 8086:8d62

PCI 8086:1521

eth4

PCI 8086:1521

eth5

PCI 102b:0534

PCI 8086:8d02

Host: grisou-9.nancy.grid5000.fr

Indexes: physical

Date: Mon 05 Sep 2016 01:38:32 PM CEST

I Système dual-socket Intel récent (2x Intel E5-2630v3, 8 cœurs/CPU)


I Hiérarchie de caches entre les processeurs et la mémoire
I Partagés (L3) ou non (L1, L2) entre cœurs physiques
I Plusieurs files d’attente pour le même cœur physique (Hyperthreading )
I Mémoire séparée en deux, chaque moitié reliée à un processeur différent
I Architecture NUMA : Non-Uniform Memory Access
I Périphériques PCI reliés à un seul des deux processeurs
I Pour l’exploiter pleinement, il faut en comprendre les détails

(7/218)
Pourquoi un cours de système ? (4)

Comment les utiliser efficacement ? Comment les concevoir ?


; Performances, sécurité, résilience, efficacité énergétique

Métiers (à la sortie de TELECOM Nancy) :


I IT Operations / Administration système et réseaux
; Assurer le maintien en conditions opérationnelles d’une infrastructure
(suivi des incidents, montées de version, etc.)
I Mouvement vers le modèle DevOps (≈Google Site Reliability Engineers)
I Suppression des silos software development vs operations
I Infrastructure as Code : cloud, pet vs cattle
I Itérations rapides, tests automatiques, déploiement automatiques et continus
Compétences nécessaires : développement logiciel, compréhension profonde
des systèmes (combinaison très recherchée sur le marché du travail)
I Systèmes embarqués / enfouis : domotique, automobile, appliances
I Sécurité informatique (souvent lié à des aspects système/réseau)
I Même comme pur développeur, savoir ce qui se passe sous le capot est utile !
(8/218)
Pourquoi un cours de système ? (5)
Extrait de The Mythical Man-Month, Frederick P. Brooks, Jr. (1975) :
Why is programming fun ?
What delights may its practitioner expect as his reward ?
First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things,
especially things of his own design. I think this delight must be an image of God’s delight in making things, a
delight shown in the distinctiveness of each leaf and each snowflake.
Second is the pleasure of making things that are useful to other people.Deep within, we want others to use our
work and to find it helpful. In this respect the programming system is not essentially different from the child’s
first clay pencil holder ”for Daddy’s office.”
Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching
them work in subtle cycles, playing out the consequences of principles built in from the beginning. The
programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to
the ultimate.
Fourth is the joy of always learning, which springs from the nonrepeating nature of the task. In one way or
another the problem is ever new, and its solver learns something : sometimes practical, sometimes theoretical,
and sometimes both.
Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only
slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of
the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of
realizing grand conceptual structures. (...) Yet the program construct, unlike the poet’s words, is real in the
sense that it moves and works, producing visible outputs separately from the construct itself. It prints
results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our
time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that
never were nor could be.
Programming then is fun because it gratifies creative longings built deep within us and delights sensibilities we
have in common with all men.
(9/218)
Objectif du module
Utiliser efficacement le système d’exploitation
Contenu et objectifs du module
I Grandes lignes du fonctionnement d’un système d’exploitation (OS)
Focus sur UNIX (et Linux) par défaut, mais généralisations
I Concepts clés des OS : processus, fichier, édition de liens, synchronisation
I Utilisation des interfaces système : programmation pratique, interface POSIX
I Programmation système (et non programmation interne du système)
Plutôt du point de vue de l’utilisateur (conception d’OS en RSA)

Motivations
I OS = systèmes complexes les plus courants ; Concepts et abstractions claires
I Impossible de faire un programme efficace sans comprendre l’OS
I Comprendre ceci aide à comprendre les abstractions supérieures

Prérequis : Pratique du langage C et du shell UNIX

(10/218)
Bibliographie succincte (pour cette partie)

Livres
I Bryant, O’Hallaron : Computer Systems, A Programmer’s Perspective.
Autres cours disponibles sur Internet
I Introduction aux systèmes et aux réseaux (S. Krakowiak, Grenoble)
Source de nombreux transparents présentés ici.
http://sardes.inrialpes.fr/~krakowia/Enseignement/L3/SR-L3.html/
I Programmation des systèmes (Ph. Marquet, Lille)
http://www.lifl.fr/~marquet/cnl/pds/
I Operating Systems and System Programming (B. Pfaff, Stanford)
http://cs140.stanford.edu/
Sites d’information
I http://systeme.developpez.com/cours/
Index de cours et tutoriels sur les systèmes

URL du cours : http://members.loria.fr/lnussbaum/rs.html

(11/218)
Plan de cette partie du module :

Systèmes d’exploitation et programmation système


1 Introduction
Système d’exploitation : interface du matériel et gestionnaire des ressources.

2 Processus
Processus et programme ; Utilisation des processus UNIX et Réalisation ; Signaux.

3 Fichiers et entrées/sorties
Fichiers et systèmes de fichiers ; Utilisation ; Réalisation.

4 Exécution des programmes


Schémas d’exécution : interprétation (shell) et compilation (liaison et bibliothèques)

5 Synchronisation entre processus


Problèmes classiques (compétition, interblocage, famine) ; Schémas classiques.

6 Programmation concurrente
Qu’est ce qu’un thread ; Modèles d’implémentation ; POSIX threads.

(12/218)

Vous aimerez peut-être aussi