Introduction

Contexte

L’enseignant

e-mail:pierre-antoine.champin at univ-lyon1.fr
web:http://champin.net/enseignement/

Système d’exploitation ?

nuage de tags réalisé avec http://www.wordle.net/

(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

Illustration

_images/utilisabilite.png

Rôles du SE

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

Une perspective de programmeur

int main (int argc, char* argv[]) {
    printf("hello world!\n");
    return 0;
}
appels systèmes

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 :

→ 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 :

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 :

Processus :

Mémoire :

Système de fichiers :