Systèmes d’exploitation et Programmation système(RS)
Lucas Nussbaum
Supports de cours, TD et TP largement basés sur ceux deMartin Quinson
Telecom Nancy – 2ième année
http://members.loria.fr/lnussbaum/rs.html
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/
RemerciementsI Sacha Krakoviack pour son cours et Bryant et O’Hallaron pour leur livreI Les (autres) emprunts sont indiqués dans le corps du document
Aspects techniquesI 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.htmlI TD/TP, exams et projets (sources disponibles aux enseignants sur demande)
(2/217)
http://creativecommons.org/licenses/by-sa/3.0/fr/http://members.loria.fr/lnussbaum/rs.html
À propos de moi. . .
Lucas NussbaumI Formation : ingénieur ENSIMAG (2005), Doctorat (2008)I Depuis 2009 :
I Enseignant-chercheur (Mâıtre de conférences) à l’univ. de LorraineI 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 libreDebian (Project Leader 2013-2015, Quality Assurance), Ruby
I Plus d’infos :I http://members.loria.fr/lnussbaum/ ([email protected])
(3/217)
http://members.loria.fr/lnussbaum/[email protected]
Organisation pratique du module
Module en deux partiesI Partie système (intervenant en cours : Lucas Nussbaum)
I 5 cours, 3 TD, 3 TPI Examen sur table (mi octobre)
I Documents interdits sauf un A4 recto/verso manuscritI un projet (pour décembre)
I Binômes et Git obligatoiresI Le sujet arrive bientôt. . .
I Partie réseaux (intervenant en cours : Isabelle Chrisment)
ImplicationI Manipulation : programmez ! Expérimentez !I Questions bienvenues : pendant/après le cours, par mail, etc.
(4/217)
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 complexesI Wikipedia : 1145 serveurs, 30 900 CPUsI OVH : 250 000 serveursI OpenStack (pile logicielle permettant de créer un Cloud privé)
(5/217)
Pourquoi un cours de système ? (2)
I Noyau Linux (et outils d’observation)
(6/217)
Pourquoi un cours de système ? (3)
Machine (126GB total)
NUMANode P#0 (63GB)
Socket P#0
L3 (20MB)
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#0
PU P#0 PU P#16
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#1
PU P#2 PU P#18
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#2
PU P#4 PU P#20
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#3
PU P#6 PU P#22
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#4
PU P#8 PU P#24
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#5
PU P#10 PU P#26
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#6
PU P#12 PU P#28
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#7
PU P#14 PU P#30
PCI 1000:005f
sda sdb
PCI 8086:154d
eth2
PCI 8086:154d
eth3
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
NUMANode P#1 (63GB)
Socket P#1
L3 (20MB)
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#0
PU P#1 PU P#17
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#1
PU P#3 PU P#19
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#2
PU P#5 PU P#21
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#3
PU P#7 PU P#23
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#4
PU P#9 PU P#25
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#5
PU P#11 PU P#27
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#6
PU P#13 PU P#29
L2 (256KB)
L1d (32KB)
L1i (32KB)
Core P#7
PU P#15 PU P#31
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/217)
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 operationsI Infrastructure as Code : cloud, pet vs cattleI Itérations rapides, tests automatiques, déploiement automatiques et continus
Compétences nécessaires : développement logiciel, compréhension profondedes 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/217)
Objectif du module
Utiliser efficacement le système d’exploitation
Contenu et objectifs du moduleI 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)
MotivationsI OS = systèmes complexes les plus courants ; Concepts et abstractions clairesI Impossible de faire un programme efficace sans comprendre l’OSI Comprendre ceci aide à comprendre les abstractions supérieures
Prérequis : Pratique du langage C et du shell UNIX
(9/217)
Bibliographie succincte (pour cette partie)
LivresI Bryant, O’Hallaron : Computer Systems, A Programmer’s Perspective.
Autres cours disponibles sur InternetI 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’informationI http://systeme.developpez.com/cours/
Index de cours et tutoriels sur les systèmes
URL du cours : http://members.loria.fr/lnussbaum/rs.html
(10/217)
http://sardes.inrialpes.fr/~krakowia/Enseignement/L3/SR-L3.html/http://www.lifl.fr/~marquet/cnl/pds/http://cs140.stanford.edu/http://systeme.developpez.com/cours/http://members.loria.fr/lnussbaum/rs.html
Plan de cette partie du module :
Systèmes d’exploitation et programmation système1 Introduction
Système d’exploitation : interface du matériel et gestionnaire des ressources.
2 ProcessusProcessus et programme ; Utilisation des processus UNIX et Réalisation ; Signaux.
3 Fichiers et entrées/sortiesFichiers et systèmes de fichiers ; Utilisation ; Réalisation.
4 Exécution des programmesSchémas d’exécution : interprétation (shell) et compilation (liaison et bibliothèques)
5 Synchronisation entre processusProblèmes classiques (compétition, interblocage, famine) ; Schémas classiques.
6 Programmation concurrenteQu’est ce qu’un thread ; Modèles d’implémentation ; POSIX threads.
(11/217)