Systemes d’exploitation et Programmation systeme(RS)
Lucas Nussbaum <[email protected]>
Supports de cours, TD et TP largement bases sur ceux deMartin Quinson <[email protected]>
Telecom Nancy – 2ieme annee
http://members.loria.fr/lnussbaum/rs.html
A propos de ce document
Document diffuse selon les termes de la licence
Licence Creative Commons version 3.0 France (ou ulterieure)
Attribution ; Partage dans les memes conditions
http://creativecommons.org/licenses/by-sa/3.0/fr/
RemerciementsI Sacha Krakoviack pour son cours et Bryant et O’Hallaron pour leur livre
I Les (autres) emprunts sont indiques dans le corps du document
Aspects techniquesI Document LATEX (classe latex-beamer), compile avec latex-make
I Schemas : 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)
A propos de moi. . .
Lucas NussbaumI Formation : ingenieur ENSIMAG (2005), Doctorat (2008)
I Depuis 2009 :I Enseignant-chercheur (Maıtre de conferences) a l’univ. de Lorraine
I Principalement en licence professionnelle ASRALL(Administration de Systemes, Reseaux et Applications a base de Logiciel Libre)
I Chercheur dans l’equipe RESIST du LORIA
I Recherche : Systemes distribues, calcul a 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)
Organisation pratique du module
Module en deux partiesI Partie systeme (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 decembre)
I Binomes et Git obligatoiresI Le sujet arrive bientot. . .
I Partie reseaux (intervenant en cours : Isabelle Chrisment)
ImplicationI Manipulation : programmez ! Experimentez !
I Questions bienvenues : pendant/apres le cours, par mail, etc.
(4/217)
Pourquoi un cours de systeme ?
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 creer un Cloud prive)
(5/217)
Pourquoi un cours de systeme ? (2)
I Noyau Linux (et outils d’observation)
(6/217)
Pourquoi un cours de systeme ? (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 Systeme dual-socket Intel recent (2x Intel E5-2630v3, 8 cœurs/CPU)I Hierarchie de caches entre les processeurs et la memoire
I Partages (L3) ou non (L1, L2) entre cœurs physiques
I Plusieurs files d’attente pour le meme cœur physique (Hyperthreading)I Memoire separee en deux, chaque moitie reliee a un processeur different
I Architecture NUMA : Non-Uniform Memory Access
I Peripheriques PCI relies a un seul des deux processeurs
I Pour l’exploiter pleinement, il faut en comprendre les details
(7/217)
Pourquoi un cours de systeme ? (4)
Comment les utiliser efficacement ? Comment les concevoir ?; Performances, securite, resilience, efficacite energetique
Metiers (a la sortie de TELECOM Nancy) :I IT Operations / Administration systeme et reseaux
; Assurer le maintien en conditions operationnelles d’une infrastructure(suivi des incidents, montees de version, etc.)
I Mouvement vers le modele DevOps (≈Google Site Reliability Engineers)I Suppression des silos software development vs operationsI Infrastructure as Code : cloud, pet vs cattleI Iterations rapides, tests automatiques, deploiement automatiques et continus
Competences necessaires : developpement logiciel, comprehension profondedes systemes (combinaison tres recherchee sur le marche du travail)
I Systemes embarques / enfouis : domotique, automobile, appliances
I Securite informatique (souvent lie a des aspects systeme/reseau)
I Meme comme pur developpeur, savoir ce qui se passe sous le capot est utile !
(8/217)
Objectif du module
Utiliser efficacement le systeme d’exploitation
Contenu et objectifs du moduleI Grandes lignes du fonctionnement d’un systeme d’exploitation (OS)
Focus sur UNIX (et Linux) par defaut, mais generalisations
I Concepts cles des OS : processus, fichier, edition de liens, synchronisation
I Utilisation des interfaces systeme : programmation pratique, interface POSIX
I Programmation systeme (et non programmation interne du systeme)Plutot du point de vue de l’utilisateur (conception d’OS en RSA)
MotivationsI OS = systemes complexes les plus courants ; Concepts et abstractions claires
I Impossible de faire un programme efficace sans comprendre l’OS
I Comprendre ceci aide a comprendre les abstractions superieures
Prerequis : 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 systemes et aux reseaux (S. Krakowiak, Grenoble)
Source de nombreux transparents presentes ici.http://sardes.inrialpes.fr/~krakowia/Enseignement/L3/SR-L3.html/
I Programmation des systemes (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 systemes
URL du cours : http://members.loria.fr/lnussbaum/rs.html
(10/217)
Plan de cette partie du module :
Systemes d’exploitation et programmation systeme1 Introduction
Systeme d’exploitation : interface du materiel et gestionnaire des ressources.
2 ProcessusProcessus et programme ; Utilisation des processus UNIX et Realisation ; Signaux.
3 Fichiers et entrees/sortiesFichiers et systemes de fichiers ; Utilisation ; Realisation.
4 Execution des programmesSchemas d’execution : interpretation (shell) et compilation (liaison et bibliotheques)
5 Synchronisation entre processusProblemes classiques (competition, interblocage, famine) ; Schemas classiques.
6 Programmation concurrenteQu’est ce qu’un thread ; Modeles d’implementation ; POSIX threads.
(11/217)