syst emes d’exploitation et programmation syst eme (rs) · 2021. 2. 7. · des syst emes...

11
Syst` emes d’exploitation et Programmation syst` eme (RS) Lucas Nussbaum <[email protected]> Supports de cours, TD et TP largement bas´ es sur ceux de Martin Quinson <[email protected]> Telecom Nancy – 2 i` eme ann´ ee http://members.loria.fr/lnussbaum/rs.html

Upload: others

Post on 16-Feb-2021

14 views

Category:

Documents


0 download

TRANSCRIPT

  • 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)