Sunteți pe pagina 1din 39

Généralités sur les

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

un système d'exploitation (souvent


appelé OS - de l'anglais Operating System)
est un ensemble de programmes qui
dirige l'utilisation des ressources d'un
ordinateur par des logiciels applicatifs
5

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.

 Exploitation des périphériques matériels.


 propose aux logiciels applicatifs des interfaces de programmation
standardisées qui simplifient l'utilisation du matériel et des services
qu'il offre.
 réalise différentes fonctions visant à assurer la fiabilité et la sécurité
informatique (Contrôle, détection et récupération en cas d'erreur….)
Il permet aussi de :
 Allouer les ressources (Processeur(s) et mémoires) nécessaires pour
chaque tâche et de partitionner le temps d’exécution.
 L'accès aux fichiers.
 Fournir une (IHM) interface homme-machine (GUI, clavier, sourie…)
7

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

Les architectures des systèmes


d’exploitation
 OS Monolithiques
 Exemple
 OS Monolithiques: avantages/inconvénients

 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

ᵡ Extension difficile (Code non modulaire )


ᵡ Très complexe
ᵡ Code massif
ᵡ Plus c’est gros, moins c’est performant!
ᵡ Nid de bugs
ᵡ Peu fiable (un bug redémarrage)
ᵡ Premières versions à chargement statique 400 périphériques
18

2. OS Multicouches

 OS organisé en hiérarchie de couches. Chacune construite sur la base des services


offerts par la couche inférieure.
 Interface et gestion des interruptions similaire à celle des systèmes monolithiques.
 Meilleure structure et modularité →maintenance plus aisée.
 Configuration plus fine (modularité) → meilleure utilisation de la mémoire +
performance.
19

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

ᵡ Traverser les différentes couches peut être couteux


ᵡ La multiplication des couches peut ne pas être nécessaire.
ᵡ Performances moins bonnes (monolithique)

Très similaire au monolithique


21

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.

 Le noyau gèrent les communications entre clients et serveurs.


 Certains services sont impossible à exécuter en mode utilisateur
(pilotes de périphériques d’E/S):
 Garder certains processus serveur critiques en mode noyau
 Garder une partie du mécanisme en mode noyau en laissant le
choix des politiques aux serveurs en mode utilisateur.
22

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

Services des systèmes d’exploitation


Les systèmes d'exploitation offrent un ensemble de services de qui fournissent
des fonctions qui sont utile aux programme et à l'utilisateur:
 Interface utilisateur (User Interface UI) : La plupart des systèmes
d’exploitation ont un interface utilisateur.
 Ligne de commande (CLI), interface utilisateur graphique (GUI)
 Exécution du programme - Le système gère différentes activités liées au
programme, soit utilisateur ou système.
 Charge le programme dans la mémoire.
 Exécute le programme.
 Gère l’exécution du programme
 ….
 Opérations d'E / S - Un programme en cours peut sollicité des E / S, ce qui
peut impliquer un fichier ou un périphérique d'E / S.
25

Services des systèmes d’exploitation(2)


Les systèmes d'exploitation offrent un ensemble de services de qui fournissent
des fonctions qui sont utile aux programme et à l'utilisateur:
 Manipulation du système de fichiers - Le système de fichiers présente un intérêt
particulier; les programmes doivent lire et écrire des fichiers et des répertoires, les
créer, les supprimer, lister les informations du fichier et les gérer…etc
 Communications - Les programme peuvent échanger des informations, sur le même
ordinateur ou entre ordinateurs sur le réseau.
 Les communications peuvent se faire via la mémoire partagée ou via le passage de message
(paquets transférés par le système d'exploitation)
 Détection d'erreur - Le SE doit être constamment au courant des erreurs possibles
 Des erreur peuvent se produire dans le processeur et la mémoire, dans les périphériques, ou
dans les programme utilisateur.
 Pour chaque type d'erreur, le système d'exploitation doit prendre les mesures appropriées
pour assurer un traitement correct et cohérent.
26

Services des systèmes d’exploitation (3)


Un autre ensemble de service fonction assure un fonctionnement efficace du système
lui-même via le partage des ressources
 Allocation de ressources - Lorsque plusieurs utilisateurs ou plusieurs programme
s'exécutent simultanément, des ressources doivent être allouées à chacun d’eux.
 Temps du processeur, mémoire principale, stockage de fichiers, périphériques…
 Comptabilité - Pour garder une trace de quels utilisateurs emploient combien et
quels types de ressources informatiques
 Protection et sécurité – supposant qu’un système informatique est multiutilisateur
et multitâche, l’activité des différents programmes doit être protégé les une des
autres.
 La protection est le mécanisme qui permet le contrôle de l’accès des programme et des
utilisateurs au différentes ressources définis par le système informatique.
 La protection consiste à s'assurer que tout accès aux ressources du système est contrôlé.
 La sécurité du système de l'extérieur nécessite l'authentification de l'utilisateur, s'étend à la
défense des périphériques externes contre les tentatives d'accès invalides.
27

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

 Format d’appel prédéfini


 Fonctions de base (printf, scanf, malloc, …)
 Fonctions avancées (syscall, …)

 Exécution des programmes


 Fonction réalisée par un processeur : Deux types de programmes
qu’il faudra différencier
 Mode Système
 Privilégié, Maître, Master, Superviseur, Système
 Réservé aux programmes du système
 Accès à tout l’espace de la mémoire
 Pas de possibilité d’exécuter directement une fonction système

 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

 Exemples : Fonctions d’E/S, Horloge,

 Offerts par les langages de programmation


 Appel par instructions spéciales
 Exemple: Instruction INT de l’Assembleur

 Inclusion de bibliothèques ou packages


 Exemple en C, C++ #include<stdio.h>
33

États d'un processus


 Le processus est une activité dynamique et possède un état qui
évolue au cours du temps.
 Ce processus transitera par différents états selon que :
 il attend que le noyau lui alloue le processeur (PRET)
 il s'exécute, il monopolise un processeur (Élu)
 il attend qu'un événement se produise pour continue son exécution
(Bloqué)
Activer
Initialisation Terminé
Elu
Prêt
(Exécution)
Suspendre

Bloqué

Détruire
34

Bloc de contrôle de processus(1)

 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

 Aussi appelé commutation de contexte ou context switching


 Quand le CPU passe de l’exécution d’un processus P0 à
l’exécution d’un proc P1, il faut
 mettre à jour le PCB de P0
 sauvegarder le PCB de P0
 reprendre le PCB de P1, qui avait été sauvegardé avant
 remettre les registres du CPU, compteur d’instructions etc. dans
la même situation qui est décrite dans le PCB de P1
36

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

 Concept moderne des OS  Plus grande réactivité


 Subdivision d’un processus  Processus composé de deux threads
 Processus = { Threads }  L’un répond l’autre attend
 Threads partagent l’espace du processus auquel ils
 Adapté au parallélisme et au distribué
appartiennent
 Exécution de plusieurs threads sur la même
 Espace d’adressage, Ressources, …
machine ou sur plusieurs machines
 Processus léger
 Programmation multithreads
 Light process, Flot ou fil d’exécution
 Gestion plus simple qu’un processus Intérêts  Commutation plus simple
 Applications plus performantes  Moins coûteuse (contexte plus réduit)

 Exécuter des tâches en parallèle  Communication plus simple


 La notion de processus n’autorise qu’une  Partagent les mêmes ressources

exécution purement séquentielle  Interagissent à travers des variables partagées

 La subdivision en threads donne la possibilité  Gestion plus simple


d’exécuter plusieurs threads en parallèle  Création, destruction, …
 Très adapté pour des architectures multiprocesseurs et  Supporté par certains langages
multicoeurs  JavaThreads
 Exécution de plusieurs threads à la fois
 Contribue à la structuration d’un programme et d’un
processus
 Décomposition en threads et non en une seule
unité (processus)
 Utiliser moins de ressources système
 Beaucoup d’éléments sont partagés entre threads
d’un même processus
 Evite la duplication inutile de ressources
 Réactivité
Exemple
 Problème : pendant le déplacement de l'objet dans la fenêtre, l'IHM doit rester
fonctionnelle ...
 Mais le déplacement de l'objet sur la fenêtre prend du temps. Pendant cela,
toute action sur l'un des boutons est inopérante.
 Solution : pour rendre l'interface réactive il faut déléguer le travail de
déplacement de l'objet à une tâche.
Définitions
 Thread = fil en anglais, un thread est un fil d’exécution, plusieurs traductions:
 Activité (tâche)
 Fil d’exécution
 Lightweight process (lwp) ou processus léger (par opposition au processus lourd)
 Les threads permettent de dérouler plusieurs suites d'instructions, en PARALLELE, à
l'intérieur du même processus. Un thread exécute une fonction.
42

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

 Communication entre threads plus rapide et plus efficace : grâce


au partage de certaines ressources entre threads, IPC (Inter
Processus Communication) inutile pour les threads

 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

 Les systèmes d'exploitation mettent en œuvre généralement les threads:

 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.

 Java propose l'interface Runnable et une classe abstraite Thread de base.

S-ar putea să vă placă și