Introduction¶
Contexte¶
L’enseignant¶
e-mail: | pierre-antoine.champin at univ-lyon1.fr |
---|---|
web: | http://champin.net/enseignement/ |
Système d’exploitation ?¶
Rôles du SE¶
Les « cinq A » :
Aide¶
- APIs de périphériques sont souvent complexe :
- accès à toutes les fonctionalités (même peu utilisées)
- gérer toutes les situations (même exceptionnelles)
- Objectif : Simplifier l’accès aux périphériques
- masquer la complexité
- factoriser les traitements récurrents
→ modularité, maintenabilité du code
Abstraction¶
- Différents périphériques rendent des services similaires :
- disques durs de marque/capacité différentes
- bande magnétique / disque dur / mémoire flash…
- Objectif : exposer une Abstraction des périphériques
- fonctionalités réduites
- réutilisabilité accrue
→ portabilité du code
Augmentation¶
- Des ressources non-disponibles peuvent être simulées :
- multi-tâche
- mémoire virtuelle
- Objectif : Étendre (virtuellement) les ressources
- repousse les limites du système
- éventuellement au prix des performances
→ portabilité accrue
Arbitrage¶
- Contexte multi-tâches
- nécessité de répartir l’accès aux ressources
- conséquence de l’abstraction
- Objectif : Arbitrer l’accès aux ressources
→ fiabilité du système
Autorisation¶
- Contexte multi-utilisateur
- vie privée, intégrité du système
- Contexte mono-utilisateur non expert
- confiance limitée dans certaines applications
- Objectif : Limiter l’accès aux ressources
→ sécurité du système
UNIX : l’ancêtre¶
Historique¶
- Développé par Ken Thomson & Dennis Ritchie (Bell Labs) à partir de 1969
- Initialement nommé Unics (référence à Multics)
- Remplace le système d’exploitation du PDP-7, puis du PDP-11
- Ré-écrit en C en 1971 : portabilité, évolutivité
Évolutions d’UNIX¶
- Unix system V (AT&T) → Linux (1992), Android (2007)
- BSD → OpenBSD, FreeBSD, Mac OS X (1999)
- POSIX (norme IEEE, Unix Portable, 1998)
→ l’héritage d’UNIX est encore très présent
Innovations d’UNIX¶
Deux innovations majeures :
- unification des entrées/sorties
- abstraction : notion de fichier
- autorisation : système unique de permissions
- notion de processus
- arbitrage : unité d’accès aux ressources
- augmentation : temps partagé
→ encore présentes dans tous les systèmes actuels
Au delà des systèmes d’exploitation¶
Pour aller plus loin¶
Les rôles identifiés du système d’exploitation peuvent être joués par d”autres composants logiciels.
- Ce cours ne traite pas directement de ces autres composants logiciels,
- mais certaines notions abordées peuvent s’appliquer à eux.
⚠ Les deux types de système dont on va parler sont souvent appelés « machines virtuelles ». Mais dans les deux cas, ce même terme désigne des choses très différentes.
Hyperviseurs¶
Hyperviseur : logiciel qui permet d’éxécuter un ou plusieurs systèmes d’exploitation (superviseurs) dans un environnement matériel virtuel (ou « machine virtuelle »).
Exemples :
Illustration¶
Remarques¶
- Les hyperviseurs ne sont pas des émulateurs : l’architecture du processeur virtuel est la même que celle du procésseur réel → performances
- Les processeurs modernes offrent des fonctions spécialisées pour la virtualisation (mode utilisateur / superviseur / hypeviseur)
Interpréteurs¶
De nombreux langages aujourd’hui ne sont plus compilés dans le langage machine, mais dans un langage machine abstrait, interprété ensuite par une « machine virtuelle ».
Exemple :
Devises¶
- Java = Compile once, run everywhere
On pourrait décliner des devises similaires :
- C/UNIX = Write once, compile everywhere
- Langages interpretés = Write once, run everywhere
Plan du cours¶
Plan du cours¶
Noyau :
- Chapitre 2 : Noyau et appels systèmes
Processus :
- Chapitre 3 : Processus
- Chapitre 4 : Entrées-sorties
- Chapitre 5 : Communication inter-processus
- Chapitre 6 : Synchronisation
- Chapitre 7 : Programmation parallèle
- Chapitre 8 : Ordonnancement de processus
Mémoire :
- Chapitre 9 : Allocation de mémoire aux processus
- Chapitre 10 : Gestion d’un tas
Système de fichiers :
- Chapitre 11 : Système de fichiers