Systemes d'exploitation et Programmation systeme (RS)

Preview:

Citation preview

Systemes d’exploitation et Programmation systeme(RS)

Lucas Nussbaum <lucas.nussbaum@loria.fr>

Supports de cours, TD et TP largement bases sur ceux deMartin Quinson <martin.quinson@irisa.fr>

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/ (Lucas.Nussbaum@loria.fr)

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

Recommended