Introduction
Systèmes d’exploitation
1
Contexte
2
L’enseignant
3
Système d’exploitation ?
4
(Tentative de) Définition
- Un logiciel permettant d’utiliser (exploiter) un système informatique.
- En anglais : operating system → opérateur
- Cette définition s’affinera au long du cours
5
Illustration
6
Rôles du SE
7
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
8
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
9
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
10
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
11
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
12
Une perspective de programmeur
int main (int argc, char* argv[]) {
printf("hello world!\n");
return 0;
}
Clipart by karderio
13
UNIX : l’ancêtre
14
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é
15
É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
16
Innovations d’UNIX
Deux innovations majeures :
- unification des entrées/sorties
- notion de processus
→ encore présentes dans tous les systèmes actuels
17
Au delà des systèmes d’exploitation
18
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.
19
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 :
20
Illustration
21
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)
22
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 :
23
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
24
Plan du cours
25
Plan du cours
Noyau :
Processus :
26
Plan du cours (2)
Mémoire :
Système de fichiers :
27