Systèmes et réseaux

publicité
Systèmes et réseaux
Marc Pouzet et Timothy Bourke
Introduction, 16 février 2017
1 / 18
Système digital
Langages de programmation et compilation
Système digital
Langages de programmation et compilation
Systèmes et réseaux
> 15 800 000 LOC
Système digital
2 / 18
3 / 18
4 / 18
seL4 < 10K LoC
5 / 18
Plan du cours
Le cours de systèmes présente les concepts fondamentaux des systèmes
d’exploitation, leur utilisation et leur mise en œuvre dans un système Unix.
Ce cours abordera, entre autres, les points suivants :
I système de fichiers ;
I gestion des processus ;
I communication et synchronisation entre processus concurrents
(mémoire partagée, signaux, sémaphores, sockets) ;
I ordonnancement préemptif et non-préemptif ; OS temps-réel ;
I processus légers (threads) ;
I modèles de concurrence de haut niveau ;
I micro-noyaux—leur modélisation et leur vérification.
I Langages dédiés pour modéliser/implémenter des systèmes réactifs
I Modélisation et vérification avec le langage Lustre
Les notions introduites seront illustrées par l’écriture d’applications en C
ou en OCaml, en utilisant l’interface POSIX.
6 / 18
Approche du cours
I
Il ne s’agit pas
I
I
de la programmation détaillée à très bas niveau,
ni de la manipulation de bits sur une architecture spécifique.
I
Mais rien n’empêche les hackers parmi vous d’aller plus loin !
I
Il s’agit des concepts (POSIX) et de leur modélisation (en OCaml).
I
On verra des méthodes modélisation/vérification de certaines parties
de systèmes, et ce qui se pratique couramment dans le domaine des
systèmes critiques.
I
Cette approche vise à vous donner une vision limpide des éléments
importants d’un OS dans son ensemble.
Elle est en accord avec la recherche moderne.
I
I
seL4, par ex., 3 codes sources : C, Haskell, HOL.
7 / 18
Informations pratiques
I
Les jeudis :
I
I
I
I
Nous commençons le jeudi 16 févr.
16 févr., 23 févr., 2 mars, 9 mars, 16 mars, 23 mars, 30 mars,
vacances 20 avr., 27 avr., 4 mai, 11 mai (soutenances du projet), 18
mai, 1 juin (examen).
Projet de programmation par groupes de deux.
I
I
I
13h15–15h15 Cours (Pouzet ; salle U/V)
15h15–17h15 Travail Pratique (Bourke ; salle Info 4)
Rock’n’Roll : programmation d’un petit OS (par ex., Raspberry PI)
Vanille : réseaux de processus de Kahn ; plus conceptuel
Site web : http://www.di.ens.fr/~pouzet/cours/systeme/
8 / 18
Références (système Unix)
Livres :
I
Systèmes d’exploitation
Andrew Tanenbaum. Pearson Education.
I
Unix, programmation et communication
Jean-Marie Rifflet et Jean-Baptiste Yunès. Dunod.
I
Programmation Linux 2.0
Rémy Card, Eric Dumas et Franck Mével. Eyrolles.
Cours (disponibles sur le web) :
I
Principes et Programmation des Systèmes d’exploitation
Didier Rémy. http://pauillac.inria.fr/~remy/poly/system/
I
Programmation des systèmes
Philippe Marquet. http://www2.lifl.fr/~marquet/cnl/pds/
I
Computer Systems : A Programmer’s Perspective
Randal E.Bryant and David R.O’Hallaron, CMU
http://csapp.cs.cmu.edu
9 / 18
Historique
A lire !
I
http://www.computerhistory.org/timeline
I
http://en.wikipedia.org/wiki/Operating_system
I
...
10 / 18
Systèmes d’exploitation (e.g., Unix, Windows, MacOSX) :
généralistes ; temps partagé (orienté multi-utilisateurs) ; pas (ou peu) de
contraintes temporelles ; pas (ou peu) critiques.
Systèmes embarqués :
I
Certains sont dits “critiques” (e.g., commande de vol de Airbus,
freinage d’urgence) : garantir statiquement des temps de réponse
pire-cas ; du déterminisme ; l’absence de blocage (deadlock).
I
D’autres non (e.g., TVHD, téléphone) : des contraintes de qualité de
service (estimation de l’écart à l’optimal).
I
Ces systèmes sont beaucoup plus nombreux. Des problèmes et
solutions spécifiques.
Des méthodes/langages de programmation très différents (cf. cours 8 –
10).
11 / 18
Rôles du système d’exploitation : machine virtuelle
latex
emacs
gcc
tar
Système d'exploitation
Périphériques
I
Processeur
Mémoire
Abstraction du matériel
I
I
I
Protection : les tâches matérielles sont déléguées au système.
Portabilité : un même système peut être disponible sur plusieurs
architectures.
Simplicité : pour le programmeur, c’est la même chose de lire un fichier sur
le disque dur ou sur un CD-ROM.
12 / 18
Rôles du système d’exploitation : gestion des ressources
I
Partage : donner l’illusion que
I
I
I
Équité :
I
I
I
chaque programme tourne seul sur la machine
chaque utilisateur est seul sur la machine
accès au processeur
gestion des quotas
Protection : garantir que
I
I
un utilisateur ne peut pas modifier les données d’un autre
un processus ne peut pas modifier la mémoire d’un autre
13 / 18
Rôles du système d’exploitation : centre de communication
I
Communication entre le matériel et le logiciel
I
I
Concurrence, parallélisme
I
I
I
I
interruptions
créer/tuer un processus
l’interrompre/le reprendre
processus lourds, processus légers (threads) ; vérrous, conditions
Communication entre les processus (IPC, pour Inter-Process
Communication)
I
I
I
signaux
tubes (pipes)
prises (sockets)
14 / 18
Structure du système
Programmes
utilisateurs
mkdir
gcc
tar
ls
Noyau
cd
hardware
ftp
ed
sh
date
I
I
Deux modes d’exécution : noyau et utilisateur
La tendance est à faire des noyaux les plus petits possibles.
15 / 18
Structure du système
Interface appels système
Systèmes de fichiers
Centre du noyau
ext2fs hfs+ vfat ntfs
Gestion des processus
Ordonnanceur
Signaux
Gestion Mémoire
Gestionnaires de périphériques
Gestion réseau
son cdrom scsi pci
ipv4
ethernet
Interface avec la machine
16 / 18
Programmer le système : quel langage ?
Pour programmer le système
I
C est le langage de choix : simple et uniforme, sémantique assez claire
(par rapport à Java et C++, même si peu de sûreté/typage),
efficacité et contrôle fin des ressources (espace ET temps)
I
Pertinent pour le code du noyau
I
L’interface avec le système est un ensemble de librairies C (POSIX,
pour Portable Operating System Interface)
I
Utiliser des langages de plus haut niveau pour les couches hautes du
système (avec une interface ad-hoc vers les librairies C).
I
De nouveaux langages plus sûrs émergents (e.g., Rust)
La réference :
Le langage C, B.W Kernighan, D.M. Ritchie, Prentice Hall.
17 / 18
Manuel (en ligne) Unix
I
% man 1 command (Commande Unix). E.g., cd
I
% man 2 appel_systeme (appels systèmes). E.g., open
I
% man 3 appel_a_une_librairie (librairie C, appel système de
plus haut niveau). E.g., malloc
La fin des pages de man donne des pointeurs sur d’autres commandes.
Voir aussi les pointeurs sur la page du cours.
18 / 18
Téléchargement