Documente Academic
Documente Profesional
Documente Cultură
systèmes
d’exploitation
1
2
Chapitre II
Généralités sur les systèmes d’exploitation
3
Sommaire
Définition
Fonctionnalités
Les architectures des systèmes d’exploitation
Responsabilités des systèmes d’exploitation
Générations de systèmes d'exploitation
Type
Interpréteur de commande (Shell)
GUI (Graphical User Interface)
Processus et thread
4
Définition
Liste des OS
6
Fonctionnalités
Le système d'exploitation offre une suite de services généraux facilitant la
création et l'utilisation de logiciels applicatifs.
Typologie
Un système d'exploitation est dit multitâches quand il permet l'exécution simultanée de
plusieurs programmes. Tous les systèmes d'exploitation actuels sont multitâches.
Il est dit multiutilisateurs quand il est conçu pour être utilisé simultanément par plusieurs
usagers, souvent à travers un réseau informatique (notion de serveurs). Ils sont multitâches et
en général sécurisés, c'est à dire qu'il vont refuser d'exécuter toute opération pour laquelle
l'usager n'a pas préalablement reçu une permission.
Il est dit multiprocesseurs quand il est conçu pour exploiter un ordinateur équipé de plusieurs
processeurs. Dans de tels systèmes d'exploitation, plusieurs programmes sont exécutés
simultanément par les différents processeurs.
Il est dit temps réel quand il garantit que les opérations seront effectuées en respectant des
délais stricts, et ce quelles que soient les conditions d'utilisation (charge du système). De tels
systèmes d'exploitation sont utilisés dans l'industrie, l'aéronautique ou l'électronique pour
créer des systèmes temps réel (souvent embarqué).
10
Organisation générale
Les différents programmes du système d'exploitation
sont typiquement répartis en couches distinctes.
La couche supérieure est l'interface de programmation
avec les logiciels applicatifs (dont font partie les
logiciels utilitaires fournis avec le système
d'exploitation).
Au centre, on trouve une ou plusieurs couches qui
contiennent les composants principaux du système
d'exploitation tels que : les programmes pour les
systèmes de fichiers et le réseau, la gestion de
mémoire, les pilotes, l'ordonnanceur, le gestionnaire
d'interruption.
La couche inférieure, appelée couche d'abstraction
matérielle (anglais hardware abstraction layer abrégé
HAL), est chargée de masquer les particularités
matérielles et les différences qu'il existe entre les
machines sur lesquelles le système d'exploitation sera
utilisé.
11
12
13
Définitions
Noyau (Kernel): Espace d'exécution de l'OS
Est un espace mémoire isolé et protégé, dans lequel est placé tout ou
partie du système d'exploitation
API (interface de programmation applicative - Application
Programming Interface)
IHM (Interface Homme Machine)
Périphérique qui permet à un utilisateur de dialoguer avec la machine.
Shell
est la partie la plus externe du système d'exploitation, c'est l'interface
utilisateur du système d'exploitation.
Ligne de commande (CLI Command Line Interface) : est encore utilisée
en raison de sa puissance, de sa grande rapidité
GUI (Graphical User Interface) : les parties les plus typiques de ce type
d’environnement sont le pointeur de souris, les fenêtres, le bureau
14
OS Multicouches
Exemple
OS Multicouches: avantages/inconvénients
OS Micronoyau
Exemple
OS Micronoyau: avantages/inconvénients
OS Hybride
15
1. OS Monolithique
l’ensemble des fonctions du système et des pilotes sont regroupés dans un seul bloc de code et un
seul bloc binaire généré à la compilation
Simple/ne consomme pas beaucoup de ressources
Gestion de l’interruption : optimisée car pas de changement de contexte entier (prioritaire car
l’ordonnanceur est désactivé)
Convient aux « petits systèmes » ou quelques portions de systèmes temps réel complexe OS
L’application utilise un appel système pour accéder aux services de l’OS
Structure de base:
Un programme principal qui invoque la procédure du service
Un ensemble de procédures de services qui gèrent les appels système
Un ensemble de procédure utilitaires auxiliaires des précédentes
Vielles version d’UNIX (FreeBSD, SOLARIS), DOS.
Application Procédure
principale
Procédures de
service
Procédures
Hardware auxiliaires
16
1. OS Monolithique
Exemple: UNIX
noyau
17
1. OS Monolithique
Avantages/inconvénients
✓ De meilleures performances
✓ Vite développé ...
✓ Dernières versions: chargement dynamique (et donc sélectif) des module
2. OS Multicouches
2. OS Multicouches
Couche 0: fournit le service de multiprogrammation.
Dans la première couche, c’était un ensemble de Couche Fonction
processus séquentiels indépendant.
Couche 1: Allocation de mémoire dans la mémoire 5 Opérateur
principale. Au dessus, les processus ignoraient les
4 Programmes utilisateur
emplacements mémoire.
Couche 2: gestion de la communication entre processus 3 Gestion des E/S
et la console opérateur. Dans la couche précédente,
2 Communication opérateur-
chaque processus avait sa propre console opérateur.
processus
Couche 3: périph d’E/S et mise en mémoire tampon
des flots d’E/S. Au dessus, les processus travaillaient 1 Gestion de la mémoire et du
sur une couche abstraite. tampon
Couche 4: contient les programmes utilisateur, les
notions de processus, mémoire, console leurs sont 0 Allocation du processeur-
abstraites. multiprogrammation
Couche 5: le processus opérateur (control global du
système).
20
2. OS Multicouches
Avantages/inconvénients
✓ Facile à étendre (plus structuré)
✓ Modèle simple
3. OS Micronoyau
Déplace plusieurs fonctions de l’OS vers des « processus serveur» s’exécutant en mode utilisateur
→ réduction au maximum de la taille du code privilégié.
But: gérer les communications entre applications et serveurs pour:
Renforcer la politique de sécurité
Permettre l’exécution de fonctions système (accès aux registres d’E/S, …etc.).
Fiabilité augmentée: si un processus serveur « crash », le système continue à fonctionner et il est
possible de relancer ce service sans redémarrer.
Modèle facilement étendu à des systèmes distribués.
3. OS Micronoyau
Avantages/inconvénients
✓ Extensibilité
✓ Minimise le code du noyau
✓ Sécurité:
✓ Un serveur crash, il sera le seul à redémarrer
✓ Fiabilité
✓ Micronoyau: code plus petit →moins de bugs
ᵡ Souvent tenté de rajouter des choses dans le noyau (vu qu’il est petit...)
ᵡ Mauvaises performances
ᵡ Requière beaucoup de prudence lors de la conception
23
OS Hybride
Système d’exploitation à structure monolithique micronoyaux et hybride
24
Processus
28
Processus
Un programme qui s’exécute est appelé un processus (Statique
Vs Dynamique).
Un processus comporte du code machine exécutable, une zone
mémoire (données allouées par le processus), une pile ou stack
(pour les variables locales des fonctions et la gestion des appels
et retour des fonctions) et un tas ou heap pour les allocations
dynamiques.
Ce processus est une entité qui, de sa création à sa mort, est
identifié par une valeur numérique : le PID (Process IDentifier).
Tous les processus sont donc associés à une entrée dans la table
des processus qui est interne au noyau.
Chaque processus a un utilisateur propriétaire, qui est utilisé
par le système pour déterminer ses permissions d’accès aux
fichiers.
Du programme au processus
29
Interactions Programme-Système
Point de vue programmation
30 Système
Ensemble de fonctions (services) utilisées par les programmes utilisateurs
Appelées dans les programmes utilisateurs
Mode Programme
Non privilégié, Esclave, Slave, Utilisateur, User, Programme
Mode d’exécution des programmes utilisateurs
Accès limité à la mémoire (limites de l’espace alloué au programme)
Utilisation partielle de l’ensemble du jeu d’instructions du processeur
Appel système
Utilité
31 Permettre à un programme utilisateur d’utiliser des fonctions du système
Utilisables à travers des appels spécifiques appelés Appels Système
Bloqué
Détruire
34
Chaque processus est représenté dans le SE par un PCB (process control block)
PCB: contient plusieurs informations concernant un
processus spécifique, comme par exemple:
L’état du processus.
Compteur d’instructions: indique l’adresse de l’instruction
suivante devant être exécutée par ce processus.
Informations sur le scheduling de la CPU: information
concernant la priorité du processus.
Informations sur la gestion de la mémoire: valeurs des
registres base et limite, des tables de pages ou des tables
de segments.
Informations sur l’état des E/S: liste des périphériques E/S
allouées à ce processus, une liste des fichiers ouverts, etc.
35
Commutation de processus
Commutation de processus
Aussi appelé commutation de contexte ou context switching
Lorsque la CPU passe à un autre
processus, le système doit enregistrer
l'état de l'ancien processus et de
charger l'état enregistré pour le
nouveau processus via un changement
de contexte
Contexte d'un processus est représenté
dans le PCB
Le temps de la commutation de
contexte est une surcharge car le
système ne réalise pas de travail utile
pendant qu’il commute.
Le temps de la commutation de
contexte dépend du support matériel.
Thread
39
Multithreading
Un processeur est dit multithread s'il est capable d'exécuter efficacement plusieurs threads
simultanément. Contrairement aux systèmes multiprocesseurs (tels les systèmes multi-cœur), les
threads doivent partager les ressources d'un unique cœur (les unités de traitement, le cache
processeur…), chaque thread dispose de ses propres registres et de son propre pointeur
d'instruction
Avantages - Inconvénients
Avantages :
Multi-tâche moins coûteux : puisqu'il n'y a pas de changement de
mémoire virtuelle, la commutation de contexte (context switch)
entre deux threads est moins coûteuse que la commutation de
contexte
Inconvénients :
Programmation utilisant des threads est toutefois plus difficile:
obligation de mettre en place des mécanismes de synchronisation,
risques élevés d'interblocage, de famine, d'endormissement
Support
Le standard des processus légers POSIX est connu sous le nom de pthread.
Le standard POSIX est largement mis en oeuvre sur les systèmes UNIX/Linux.
Microsoft fournit aussi une API pour les processus légers : WIN32 threads
(Microsoft Win32 API threads).
En C++, il sera conseillé d'utiliser un framework (Qt, Builder, common cpp, ACE,
...) qui fournira le support des threads sous forme de classes prêtes à l'emploi.