Vous êtes sur la page 1sur 108

Institut Africain d’Informatique

Représentation du TOGO
(IAI-TOGO)

Licence Professionnelle / Ingénieur de travaux


Spécialité : Adminstration système & réseau informatique

SYSTÈME D’EXPLOITATION AVANCE

Chargé de cours
Ahmed O. SOUROU
Ingénieur informatique / Inspecteur d’informatique
PLAN (1/1)
INTRODUCTION (suite)

1. Structure d’un OS

2. …..

CONCLUSION
Système informatique
Système informatique
DéfinItion/exemples
Définition/Exemples
Définition
 Logiciel de base / ensemble de programmes / ….
 Etablir une relation entre :
 les différentes ressources matérielles ;
 les applications ;
 les utilisateurs

Exemples :
 OS desktop : Windows / Mac OS (OS X) / GNU Linux …
 OS Smartphone / tablettes : Android / iOS / Windows phone …
Rôle (Tâches) d’un OS
Rôle (Tâches) d’un OS
 La gestion des processeurs
 La gestion des processus
 La gestion de la mémoire
 La gestion de l’exécution des programmes
 La gestion des fichiers (arborescence ; disposition physique sur le matériel)
 Gestion des droits
 La gestion des I/O (Entrées/sorties)
 Interface conviviale à l’utilisateur
 Interpréteur de commandes
Chap 2 : composition d’un OS
Chap 2 : Composition d’un OS

Noyau (Kernel)

OS Interpréteur de commande (Shell)

Le système de fichiers

Autres : Bibliothèques (libraries) / programmes applicatifs de base


Chap 2 : Composition d’un OS

2.1. Noyau (Kernel)

Noyau un système de gestion des utilisateurs / Gestion des

processus / pilote de périphériques / Gestion de la mémoire / gestion du

réseau / Gestion de la synchronisation ….

composant essentiel dans les OS modernes


logiciel responsable de la gestion des ressources matérielles (seul lui
dispose d’un accès direct et général à l’ensemble des ressources matériels).
Premier à se charger en mémoire dans un espace protégé (Bootloader)
Chap 2 : Composition d’un OS

2.1. Noyau (Kernel)


Tous les autres logiciels doivent demander l’accès au noyau
(système de coordination centralisé)
Performance : doit être le plus efficace possible et protégé contre
les attaques
Remarque : La conception des noyaux diffère d’un OS à un autre
Exemples : NT windows / Linux / XNU (Mac)
Chap 2 : Composition d’un OS

2.1. Noyau (Kernel)


Les trois types de noyaux
Il existe différents types de noyaux pour les différents systèmes d’exploitation et terminaux. En ce qui
concerne leurs caractéristiques, on peut les subdiviser en trois groupes :
1.Noyau monolithique : un grand noyau pour toutes les tâches. Il est seul responsable de la gestion de
la mémoire et des processus, ainsi que de la communication entre les processus, et offre des
fonctions de support du pilote et du matériel. Les systèmes d’exploitation tels que Linux, OS X et
Windows reposent sur le monolithe.

2.Micro-noyaux : le micro-noyau est volontairement de petite taille afin de ne pas endommager


l’ensemble du système d’exploitation en cas de défaillance. Pour qu’il puisse néanmoins remplir les
mêmes fonctions qu’un noyau de grande taille, il est divisé en plusieurs modules. Seul Mac OS X peut
servir d’exemple d’application, car il n’existe pas encore de système d’exploitation à micro-noyaux.

3.Noyau hybride : le mélange de monolithique et de micro-noyau est appelé noyau hybride, le grand
noyau étant plus compact et modulable. D’autres portions de noyau peuvent être ajoutées
dynamiquement, comme c’est déjà le cas dans Linux et OS X.
Chap 2 : Composition d’un OS

2.1. Noyau (Kernel)


 Sollicitation de matériels par les softs
Chap 2 : Composition d’un OS

2.1. Noyau (Kernel)


 Abstraction matérielle
Chap 2 : Composition d’un OS

2.2. Shell (coque/enveloppe)

Interface + interpréteur de commande + langage de programmation


Son rôle consiste :
 lire la ligne de commande,
 interpréter sa signification,
 exécuter la commande,
 puis retourner le résultat sur les sorties.
Chap 2 : Composition d’un OS
2.2. Shell (coque/enveloppe)
 Interpréteur de commande permettant la communication avec le SE (noyau) par
l’intermédiaire d’un langage de commandes

 programme qui reçoit des commandes informatiques données par un utilisateur


à partir de son clavier pour les envoyer au système d’exploitation qui se chargera
de les exécuter

 Permet à l’utilisateur de piloter les périphériques en ignorant tout des


caractéristiques du matériel qu’il utilise, de la gestion des adresses physiques etc

Exemple : Sh (bourne shel) / Bash (bourne again shell) / Csh (C shell) / Ksh (Korn shell) / Zsh (Zero shell)
Chap 2 : Composition d’un OS

2.2. Shell (coque/enveloppe)


Remarque :

Shell ≠ Terminal

Terminal : programme qui permet d’accéder au


shell à partir d’une interface graphique et qui
permet de lancer des commandes.
Chap 2 : Composition d’un OS
2.3. Le système de fichiers
 Structure de données permettant de stocker les informations et de les
organiser dans des fichiers sur des mémoires secondaires (disque dur,
clé usb…)

 Le stockage est persistant

 Partage des données entre plusieurs programmes informatiques

 Offre à l’utilisateur une vue abstraite sur ses données et permet de les
localiser à partir d’un chemin d’accès
Chap 2 : Composition d’un OS

2.4. Les Bibliothèques


Les bibliothèques servent à regrouper les opérations les plus
utilisées dans les programmes informatiques, afin d'éviter la
redondance de la réécriture de ces opérations dans l'ensemble des
programmes.

Il existe des bibliothèques statiques et des bibliothèques


dynamiques.
Chap 3 : Gestion de processus
Chap 3 : Gestion de processus
3.1 Définition

 Processus ≠ Programme

Programme : description statique d’un travail à effectuer.

Processus : Exemplaire d’une tâche en cours d’exécution /

Instance de programme en cours d’exécution

On peut avoir plusieurs processus issus du même programme


Chap 3 : Gestion de processus
3.1 Définition

 Processus = programme + PCB

PCB : Process Control Block (bloc de contrôle de


processus) structure qui permet de contrôler le processus
et créé par l’OS.

PCB : Nom processus / Etat (actif; pré; bloqué) / priorité /


espace mémoire / fichiers ouverts …
Chap 3 : Gestion de processus
3.1. Définition
Les infos du PCB
 Numéro de processus PID (Process Identifier).
 Numéro d’utilisateur UID (User Identifier).
 Numéro de groupe GID (Groupe Identifier)
 Durée de traitement utilisée (temps CPU) et priorité du processus
 Référence au répertoire de travail courant
 Table de référence des fichiers ouverts
Chap 3 : Gestion de processus
3.2 Ressources virtualisées

Exécution d’une tâche CPU + Mémoire

L’utilisateur ne se soucie pas de la quantité de ressources


disponibles et peut exécuter plusieurs processus.

L’OS se charge de l’allocation des ressources.

Notion de pseudo-parallelisme et de multiprocesseurs.


Chap 3 : Gestion de processus
3.3 Lancement des processus

Exemple :

Gestionnaire de fenêtre (bureau de travail) navigateur

terminal xterm bash éditeur de texte lecteur


vidéo terminal bash
Chap 3 : Gestion de processus
3.3 Lancement des processus

Processus init de PID 1 (ancêtre de tous les processus) : lancé au


démarrage de l’OS et se termine lorsqu’il est arrêté.

Init 1 lance ensuite tout un tas de processus systèmes :

Gestionnaires de swap kflushd(2); kswapd(3); vérification de système


de fichiers fsck(4).;fsck(5).;mount(6).; autorisation de connexion
utilisateurs login(7) ; service d’impression cupsd(10) ; activation du
Chap 3 : Gestion de processus
3.4 Création de processus (OS multitâches)
Via un fork () : le processus père crée le processus fils
Init(1) Xorg(12):gère l’environnement graphique gnome(100)

:gestionnaire de fenêtre firefox(103) + xterm(109):fenêtre terminal

bash(1050):shell clock(111):programme d’affichage de l’heure

depuis gnome(100) ls(1060).. depuis bash(1050) mkdir(1063)..


+gedit(1064) + gcc(1066).. + ./prog(1067)..
Chap 3 : Gestion de processus
3.5 Processus en tâche de fond
Chap 3 : Gestion de processus
3.5 Processus en tâche de fond

Principe : on exécute une tâche à la fin d’une autre (le processus fils fini avant
de rendre la main au processus père).

Mais on peut mettre un processus en tâche de fond (arrière plan) si son


exécution prendra plus de temps.

Exemple : $ cc –o grosprogramme grosfichier.c &

Le shell le réalise grâce au &


Chap 3 : Gestion de processus
3.6. Processus en tâche de fond et au premier plan
Exec + commande remplace le shell par le programme lancé (exec gedit
 CTRL + C : pour arrêter le processus.
 CTRL + Z : signal intercepté par le shell, qui suspend l’exécution du
programme sans détruire le processus correspondant. Les calculs déjà
effectués ne sont pas perdus.
 $ bg (background) pour relancer le programme suspendu, en arrière
plan. (Même rôle que « commande + & »)
 Fg (foreground) pour remettre l’exécution au premier plan
 Ps (process status) afficher la liste des processus tournant sur le
système. Sans argument affiche les processus depuis le shell courant
Chap 3 : Gestion de processus
3.6. Processus en tâche de fond et au premier plan
 Interprétation des résultats la commande PS
• PID : numéro du processus
• TT : indique le terminal dans lequel a été lancé le processus. Un ? Signifie
que le processus n’est attaché à aucun terminal (exemple des démons)
• Time : indique le temps machine utilisé par le programme (pas le temps
depuis le quel le processus a été lancé).
• STAT : indique l’état du processus
• R : actif (Running)
• S : non actif depuis moins de 20 secondes (Sleeping)
• I : non activé depuis plus de 20 secondes (idle)
• T : arrêté (suspendu) / interrupted
Chap 3 : Gestion de processus
3.6. Processus en tâche de fond et au premier plan

 la commande PS et ses options

• a (all) : liste tous les processus y compris ceux dont vous n’êtes pas
propriétaires.
• g (global, general) : liste tous les processus dont vous êtes
propriétaire
• u (user) : donne davantage d’informations
• ps agu : pour avoir des informations sur tous les processus
Chap 3 : Gestion de processus
3.6. Processus en tâche de fond et au premier plan
 Interprétation de la commande PS et ses options

• A : tous les processus tournant sur le système

• F : affichage des propriétés complètes du processus

La commande top (ou ktop) affiche les même infos mais de façon
dynamique (indique par ordre décroissant le temps machine des
processus)
Chap 3 : Gestion de processus
3.7. Les signaux
permettent d’agir sur un processus s’exécutant parallèlement à d’autres.
Lorsqu’un processus en cours d’exécution reçoit un signal, il exécute ce
que le programmeur a prévu pour ce signal. Par exemple :
 L’Interrompre
 Le terminer
 Lui signaler qu’il faut relire un fichier de configuration …

Pour obtenir la liste des signaux : kill -l


Chap 3 : Gestion de processus
3.6. Les signaux
Les plus courants :
Signal Numéro Description Raccourci

SIGINT 2 Terminaison propre du CTRL + C


processus
SIGKILL 9 Destruction

SIGTERM 15 Terminaison rapide du processus

SIGCONT 18 Continue un processus arrêté


par SIGSTOP
SIGSTOP 19 En arrêt jusqu’à réception de CTRL+Z
SIGCONT
Chap 3 : Gestion de processus
3.7. Tuer un processus

 CTRL + C

 Kill + le numéro du processus

 kill -9 + le numéro du processus : tue le processus à tous les coups


(que les processus dont vous êtes propriétaires)
Chap 3 : Gestion de processus
3.8. CRONTAB : Planification de tâches

Crond est un service qui exécute toutes tâches (commandes et scripts)


pour les utilisateurs.

Il est possible de les planifier d’avance ou de les faire lancer


périodiquement (via la commande /usr/bin/crontab).

Usage en principe réservé au Root mais on peut autoriser certains users


via le fichier /etc/crond.allow. (/etc/crond.deny pour les non autorisés)
Chap 3 : Gestion de processus
3.8. CRONTAB : Planification de tâches
Fonctionnement
Le processus crond est normalement lancé au démarrage.

etc/rc.d/init.d/crond pour lancer ou arrêter.

Il lit toutes les minutes les fichiers du répertoire /var/spool/cron et le


fichier /etc/crontab pour voir si des tâches doivent être exécutées.

Chaque action ajoute une ligne de message dans /var/log/cron


Chap 3 : Gestion de processus
3.4. CRONTAB : Planification de tâches
Fonctionnement
Comment déclencher crontab alors que le système fonctionne ?
TP
G1 : Récupération et sauvegarde automatique du dernier fichier d’un
dossier (OS : windows /script) renommer en fonction de la date
système (sauvegarde sur le bureau)

G2 : Récupération et sauvegarde automatique du dernier fichier d’un


dossier (OS : GNU/LINUX /script) (sauvegarde sur le bureau)

G3 : Sauvegarde automatique des données d’un répertoire sur le disque


dur d’une machine en réseau. (OS : GNU/LINUX /script)

G4 : serveur linux pour alerter l’admin sur les modifications faites sur
les équipements manageables du réseau (CISCO).
18/01/2024 41
TP
G5 : Récupération et sauvegarde automatique du dernier fichier d’un
dossier (OS : Windows /script) renommer en fonction de la date
système. (sauvegarde sur une seconde partition)

G6 : Récupération et sauvegarde automatique du dernier fichier d’un


dossier (OS : GNU/LINUX /script). (sauvegarde sur une seconde partition)

G7 : serveur linux pour alerter l’admin sur les modifications faites sur les
équipements manageables du réseau (CISCO).

G8 : serveur linux pour alerter l’admin sur les modifications faites sur les
équipements manageables du réseau avec envoie d’email.
18/01/2024 42
Chap 4 : Ordonnancement de processu
Chap 4 : Ordonnancement de processus
4.1. Introduction
Rappel
Quel que soit le SE, à un instant donné, un processus est dans l'un des états
suivants :

Élu/Actif : un processeur lui a été attribué et il exécute son code.


Éligible/Activable : il attend l'attribution d'un processeur. Toutes les autres
ressources nécessaires sont disponibles.
Bloqué/En attente : au moins une ressource externe n'est pas disponible.
Chap 4 : Ordonnancement de processus
4.1. Introduction
Rappel
Diagramme Etats –transitions
Chap 4 : Ordonnancement de processus
4.1. Introduction
Rappel
Diagramme Etats –transitions

Les transitions
•Activation : attribution d'un processeur.
•Préemption : perte du processeur.
•Attente : perte du processeur en raison de l'indisponibilité d'une ressource extérieure.
Chap 4 : Ordonnancement de processus
4.1. Introduction
Dans les SE modernes plusieurs processus sont généralement présents et actifs (en état prêt
simultanément)

 un seul processus est en exécution sur chaque processeur

 L’exécution d’un processus ne doit pas monopoliser la ressource

 On veut une allocation correcte des ressources aux processus

ORDONNANCEMENT
Chap 4 : Ordonnancement de processus
4.1. Introduction
L’Ordonnanceur du noyau (planificateur, scheduler) est la partie (un programme)
du système d’exploitation responsable de régler les états des processus (Prêt,
Actif,…etc.) et de gérer les transitions entre ces états ; c’est l’allocateur du
processeur aux différent processus, il alloue le processeur au processus en

tête de file des Prêts.


Chap 4 : Ordonnancement de processus
4.2. Objectifs d’un Ordonnanceur

• S’assurer que chaque processus en attente d’exécution reçoive sa part de temps


processeur

• Maximiser l’utilisation du processeur

• Présenter un temps de réponse acceptable

• Utilisation équilibrée des ressources

• Respecter l’équité entre les processus selon le critère d’ordonnancement utilisé.

• Prendre en compte les priorités


Chap 4 : Ordonnancement de processus
4.3. les critères d’Ordonnancement
L’objectif d’un algorithme d’ordonnancement consiste à identifier le processus qui conduira à la
meilleure performance possible du système.

Certes, il s’agit là d’une évaluation subjective dans laquelle entrent en compte différents critères
à importance relative variable.

La politique d’ordonnancement détermine l’importance de chaque critère. Un certain nombre


d’algorithmes ont fait leur preuve dans la mise en œuvre d’une politique d’ordonnancement.
Chap 4 : Ordonnancement de processus
4.3. les critères d’Ordonnancement
Les critères d’ordonnancement fréquemment utilisés :

Utilisation de l’UC : Pourcentage de temps pendant lequel l’UC exécute un processus.


L’importance de ce critère varie généralement en fonction du degré de partage du système.

Utilisation répartie : Pourcentage du temps pendant lequel est utilisé l’ensemble des
ressources (outre l’UC, mémoire, périphérique d’E/S…)

Débit : Nombre de processus pouvant être exécutés par le système sur une période de
temps donnée.
Chap 4 : Ordonnancement de processus
4.3. les critères d’Ordonnancement
Les critères d’ordonnancement fréquemment utilisés :

Temps de rotation : durée moyenne qu’il faut pour qu’un processus s’exécute. Le temps
de rotation d’un processus comprend tout le temps que celui-ci passe dans le système. Il
est inversement proportionnel au débit.

Temps d’attente : durée moyenne qu’un processus passe à attendre. Mesurer la


performance par le temps de rotation présente un inconvénient : Le temps de production
du processus accroît le temps de rotation ; Le temps d’attente représente donc une mesure
plus précise de la performance.
Chap 4 : Ordonnancement de processus
4.3. les critères d’Ordonnancement
Les critères d’ordonnancement fréquemment utilisés :

Temps de réponse : Temps moyen qu’il faut au système pour


commencer à répondre aux entrées de l’utilisateur.

Equité : degré auquel tous les processus reçoivent une chance égale
de s’exécuter.

Priorités : attribue un traitement préférentiel aux processus dont le


niveau de priorité est supérieur.
Chap 4 : Ordonnancement de processus
4.4. Types d’ordonnancement

 Ordonnancement préemptif : Avec réquisition où


l’Ordonnanceur peut interrompre un processus en cours
d’exécution si un nouveau processus de priorité plus élevée
est inséré dans la file des Prêts.

 Ordonnancement coopératif : Ordonnancement jusqu’à


achèvement : le processus élu garde le contrôle jusqu’à
épuisement du temps qui lui a été alloué même si des
processus plus prioritaires ont atteint la liste des Prêts
Chap 4 : Ordonnancement de processus
4.5. Les algorithmes d’ordonnancement

4.5.1. L’algorithme FIFO (First In First Out)


Fist-Come, First-Served (FCFS) : Premier arrivé, premier servi.

L'ordonnancement est fait dans l'ordre d'arrivée en gérant une file


unique des processus sans priorité ni réquisition : chaque processus
s’exécute jusqu’à son terme ; le processus élu est celui qui est en tête
de liste des Prêts : le premier arrivé. Cet algorithme est facile à
implanter, mais il est loin d'optimiser le temps de traitement moyen.
Chap 4 : Ordonnancement de processus
4.5.1. L’algorithme FIFO (First In First Out)

Ordonnancement coopératif (pas de préemption) : les processus


rendent la main de leur propre gré :
 Lorsqu’ils se terminent,
 lorsqu’ils se bloquent
 Lorsqu’ils font l’appel système yield.
N.B : l’appel système yield contraint le processus à céder le processeur
aux autres.
Chap 4 : Ordonnancement de processus
4.5.1. L’algorithme FIFO (First In First Out)

Avantages :
 Simple
 Surcoût faible
 Équitable

Inconvénients
 Temps de réponse dépend du processus qui a la main (les autres
attendent tant qu’il ne rend pas la main
 Pénalise les processus courts (proportion temps d’attente/ temps
Chap 4 : Ordonnancement de processus
4.5.2. L’algorithme SJF (Shortest Job Next)

L'ordonnancement par ordre inverse du temps d'exécution (supposé connu à l’avance) :


lorsque plusieurs travaux d'égale importance se trouvent dans une file, l'Ordonnanceur
élit le plus court d'abord (les travaux les plus cours étant en tête de la file des prêts).

Cet algorithme possède l’inconvénient de la nécessité de connaissance du temps de


service à priori et le risque de privation des tâches les plus longues. Afin de résoudre ces
problèmes on pourra attribuer aux travaux une priorité croissante avec leur temps de
séjour dans la file (temps d’attente).

A temps d’attente égale, le travail le plus court est prioritaire. Toutefois, cette solution
nécessite le calcul des priorités périodiquement et un réarrangement de la FA.
Chap 4 : Ordonnancement de processus
4.5.2. L’algorithme SJF (Shortest Job Next)

On donne la main à celui qui va mettre le moins de temps avant de se


bloquer / terminer. Ce qui suppose d’avoir une connaissance / estimation
de ce temps pour chaque processus.
Avantage :
Maximise le temps de réponse, le débit (nbre de process terminés par
unité de temps)
Inconvénients :
 surcoût
 Inéquitable, famine possible
Chap 4 : Ordonnancement de processus
4.5.3. L’algorithme du temps restant le plus court (SRT : Shortest
Remaining Time)

L’algorithme du temps restant le plus court, est la version préemptive de


l’algorithme SJF. Chaque fois qu’un nouveau processus est introduit dans
la file des processus à ordonnancer, l’Ordonnanceur compare la valeur
estimée du temps de traitement restant à celle du processus en cours
d’ordonnancement. Si le temps de traitement du nouveau processus est
inférieur, le processus en cours d’ordonnancement est préempte.

Tout comme l’algorithme SJF, l’algorithme SRT favorise les travaux


Chap 4 : Ordonnancement de processus
4.5.4. L’algorithme HRRN (Highest Response Ratio Next)

Autre variante de l’algorithme SJF. On prend en compte le ratio du temps


que le processus a passé à attendre, sur le temps dont il a besoin.

Avantage :
Supprime le problème de famine (plus un processus attend plus il
augmente ses chances d’obtenir la main).
Inconvénient :
Il faut la connaissance du temps d’exécution
Chap 4 : Ordonnancement de processus
4.5.5. L’algorithme Round Robin (Ruban rond)

Il s'agit d'un algorithme ancien, simple et fiable. Le processeur gère une liste
circulaire de processus. Chaque processus dispose d'un quantum de temps pendant
lequel il est autorisé à s'exécuter. Si le processus actif se bloque ou s'achève avant la
fin de son quantum, le processeur est immédiatement alloué à un autre processus. Si
le quantum s'achève avant la fin du processus, le processeur est alloué au processus
suivant dans la liste et le processus précédent se trouve ainsi en queue de liste.

La commutation de processus (overhead) dure un temps non nul pour la mise à jour
des tables, la sauvegarde des registres. Il est équitable mais un quantum trop petit
provoque trop de commutations de processus et abaisse l'efficacité du processeur.
Un quantum trop grand augmente le temps de réponse en mode interactif. On utilise
souvent un quantum de l'ordre de 100 ms.
Chap 4 : Ordonnancement de processus
4.5.6. L’algorithme HPF (Highest Priority First)

Le modèle du tourniquet suppose tous les processus d'égale importance. C'est


irréaliste. D’où l'attribution de priorité à chaque processus. L'Ordonnanceur lance le
processus prêt de priorité la plus élevée. En cas de priorités égales on utilise
l’algorithme FIFO. L’ordonnancement des priorités peut être préemptif ou non.

Les mécanismes d’attribution des priorités sont très variables ; la priorité est basée
sur la caractéristique du processus (utilisation de la mémoire, fréquence des E/S), sur
l’utilisateur qui exécute le processus, les coûts d’utilisation (Le temps de l’UC pour
les tâches de priorité supérieure est par exemple plus coûteux) ou sur un paramètre
que l’utilisateur peut spécifier. Certains mécanismes produisent des priorités qui
varient de manière dynamique : volume du temps d’exécution ; alors que d’autre
sont statiques (la priorité associée à un utilisateur).
Chap 4 : Ordonnancement de processus
4.5.6. L’algorithme HPF (Highest Priority First)

Le modèle du tourniquet suppose tous les processus d'égale importance. C'est


irréaliste. D’où l'attribution de priorité à chaque processus. L'Ordonnanceur lance le
processus prêt de priorité la plus élevée. En cas de priorités égales on utilise
l’algorithme FIFO. L’ordonnancement des priorités peut être préemptif ou non.

Les mécanismes d’attribution des priorités sont très variables ; la priorité est basée
sur la caractéristique du processus (utilisation de la mémoire, fréquence des E/S), sur
l’utilisateur qui exécute le processus, les coûts d’utilisation (Le temps de l’UC pour
les tâches de priorité supérieure est par exemple plus coûteux) ou sur un paramètre
que l’utilisateur peut spécifier. Certains mécanismes produisent des priorités qui
varient de manière dynamique : volume du temps d’exécution ; alors que d’autre
sont statiques (la priorité associée à un utilisateur).
Chap 4 : Ordonnancement de processus
4.5.6. L’algorithme HPF (Highest Priority First)

Notion de priorité
Principe : On souhaite aussi donner à l’utilisateur la possibilité d’influer
sur la priorité d’un processus.

 Priorité externe : propriété définie par l’utilisateur (variant peu)

 Priorité interne : propriété gérée par l’ordonnanceur (variant plus


souvent)
Chap 4 : Ordonnancement de processus
4.5.6. L’algorithme HPF (Highest Priority First)

Notion de priorité

Sous Unix la commande nice permet de modifier la priorité externe.

La priorité externe peut influencer :


• En fixant la priorité interne de départ
• En limitant la plage de priorité interne dans la quelle ils peuvent
évoluer.
Chap 4 : Ordonnancement de processus
4.5.7. L’algorithme du partage équitable (fair share)

Principe : le processus n’est pas forcément le bon grain pour mesurer


l’équiter d’un ordonnanceur.

On peut alors souhaiter partager le temps processeur équitablement


entre :
 Les utilisateurs (indépendamment du nombre de processus lancé par
chacun d’eux)
 Des groupes d’utilisateurs : indépendamment du nombre d’utilisateur
et de processus.
Chap 5 : gestion de la memoire
Chap 5 : GESTION DE LA MEMOIRE
5.1. Introduction
La mémoire : ressource importante qui doit être gérée avec attention.
Même si la quantité de mémoire a bcp augmenté, la taille des programmes
s’accroit aussi.

Situation idéale : donner à chaque programmeur une mémoire infiniment


grande, infiniment rapide, non volatile et de plus, bon marché.

La technologie aujourd’hui ne fourni pas ces types de mémoire donc il faut


passer au concept d’hiérarchisation de la mémoire. (les ordinateur ont une
petite quantité de mémoire, cher et volatile et c’est la mémoire centrale)
Chap 5 : GESTION DE LA MEMOIRE
5.1. Introduction
L’OS a alors le rôle de coordonner l’utilisation de la mémoire.
 La mémoire centrale est une ressource requise par tout processus
 Un programme doit être chargé dans la mémoire centrale pour être
exécuté.
 2 Opérations possible à exécuter sur la mémoire :
 Démarrer un processus (p) Allouer (taille(p))
 Terminer un processus (p) Libérer la zone allouée à (p)
Chap 5 : GESTION DE LA MEMOIRE
5.1. Objectifs
L’OS a alors le rôle de coordonner l’utilisation de la mémoire : partager
la mémoire entre l'OS et les diverses applications.

Le terme "mémoire" fait surtout référence la mémoire principale, c'est à


dire à la RAM, mais la gestion de celle-ci demande la contribution de la
mémoire auxiliaire (mémoire de masse, spacieuse mais lente) et à la
mémoire cache ( rapide mais de taille restreinte).
Chap 5 : GESTION DE LA MEMOIRE
5.1. Objectifs
Voici les fonctions qu’on attend du gestionnaire de mémoire :
 L’allocation de la mémoire aux processus:
 Répertorier les emplacements libres de la mémoire
 Allouer la mémoire nécessaire aux nouveaux processus
 Récupérer la mémoire des processus qui s'achèvent
Cette récupération peut nécessiter une réallocation des processus en
cours pour optimiser l'emploi de la mémoire. La zone mémoire attribuée à
un processus peut donc changer au cours de son exécution.
Chap 5 : GESTION DE LA MEMOIRE
5.1. Objectifs
Voici les fonctions qu’on attend du gestionnaire de mémoire :
 La protection:
un processus ne doit pas pouvoir modifier les informations d’un autre.
Il faut s'assurer que les adresses générées par chaque processus ne
concerne que la zone mémoire qui lui est impartie, sans quoi, l'intégrité
du système d'exploitation et des autres processus n'est pas garantie.
Chap 5 : GESTION DE LA MEMOIRE
5.1. Objectifs
Voici les fonctions qu’on attend du gestionnaire de mémoire :
 Partage :
Plusieurs processus peuvent partager une zone mémoire commune s’ils
le demandent.
Certaines zones mémoire doivent pourtant servir simultanément à
plusieurs processus : le code de fonctions servant à plusieurs
applications qui tournent en parallèle ou les données utilisées
simultanément par divers processus.
Chap 5 : GESTION DE LA MEMOIRE
5.1. Objectifs
Voici les fonctions qu’on attend du gestionnaire de mémoire :
 La mémoire virtuelle :
Elle offre aux applications une mémoire de taille supérieure à celle de la
mémoire principale.
L'espace d'adressage qu'offre la mémoire centrale est parfois insuffisant.
Les disques suppléent à cette insuffisance en fournissant une mémoire
auxiliaire plus vaste mais plus lente et qui n'est pas directement
accessible au processeur.
Chap 5 : GESTION DE LA MEMOIRE
5.1. Objectifs
Voici les fonctions qu’on attend du gestionnaire de mémoire :
 La segmentation de l’espace d’adressage:
Les programmes sont subdivisés en segments : le code, les données modifiables, celles
qui ne le sont pas, la pile. On attend donc du gestionnaire de mémoire qu'il permette
la segmentation de l'espace d'adressage des programmes pour les raisons suivantes :
 pouvoir coder les segments séparément et les paramétrer en fonction de
l'application,
 permettre des degrés de protection différents selon les segments( lecture seule,
exécution...),
Chap 5 : GESTION DE LA MEMOIRE
5.1. Objectifs
Voici les fonctions qu’on attend du gestionnaire de mémoire :
 Réallocation / Mapping :
chaque processus voit son propre espace d’adressage, numéroté à partir
de l’adresse 0. Cet espace est physiquement implanté à partir d’une
adresse quelconque.
Mémoire peut être représentée comme un gros tableau subdivisé en
Mo/octet. Chacun possède son adresse.
Chap 5 : GESTION DE LA MEMOIRE
5.1. Objectifs
 Réallocation / Mapping :
Le CPU extrait les instructions de la mémoire en fonction de la valeur
d’un compteur d’instruction.
Le memory manager (système de gestion de la mémoire) : partie de l’OS
qui gère la hiérarchie de stockage et suit les parties de la mémoire qui
sont utilisées ou non (allocation et libération de la mémoire aux
processus).
Chap 5 : GESTION DE LA MEMOIRE
5.2. Système mono-tâche
Chap 5 : GESTION DE LA MEMOIRE
5.2. Système mono-tâche

Dans le cas des systèmes mon tâche, la gestion de la mémoire est assez
simple.
Il suffit de réserver une partie de la mémoire à l’OS, et l’application est
ensuite rangée dans l’espace. Cet espace est libéré si tôt que
l’application est terminée.
On exécute alors processus par processus en leur allouant l’espace à tour
de rôle.
Chap 5 : GESTION DE LA MEMOIRE
5.2. Système mono-tâche
Cela se complique un peu si l'application nécessite plus d'espace que ce
que peut fournir la mémoire vive. On segmente alors l'application en
segments de recouvrements ou "Overlays". Cette technique n'a plus
cours maintenant. Elle était utilisée à l'époque du DOS pour des
applications volumineuses. Le programmeur devait prévoir le découpage
de son application en imaginant comment ces overlays serait chargés en
mémoire les uns à la suite des autres pour qu'au cours de son exécution
l'application puisse atteindre toutes les fonctions nécessaires.

Il est à noter que la zone mémoire occupée par le système d'exploitation


n'était pas protégée par ce type de gestion de mémoire.
Chap 5 : GESTION DE LA MEMOIRE
5.2. Système mono-tâche
 Chargement d’un programme
Le démarrage d'un programme est le rôle d'un morceau du système
d'exploitation appelé le chargeur de programme (loader en anglais). Il
charge l’exécutable du programme en mémoire
Allocation mémoire : 2 adresses sont réservées en mémoire (une pour
l’OS et l’autre pour le programme).
Les loaders n’ont alors pas besoin de décider ou placer le programme en
mémoire puisque la place d’un programme en mémoire est toujours la
même, elle est absolue. d'où leur nom de loaders absolus qu'on donne
au chargeur de programme de ce type.
Chap 5 : GESTION DE LA MEMOIRE
5.2. Système mono-tâche
 Protection de la mémoire
Protéger les données de l'OS contre une erreur ou malveillance d'un
programme utilisateur est nécessaire.
La solution la plus courante est d'interdire les écritures d'un programme
utilisateur aux adresses inférieures à la limite basse du programme
applicatif (la limite haute de l'OS, en termes d’adresses).
Pour cela, on va implanter un registre limite dans le processeur : ce
registre contient l'adresse à partir de laquelle un programme applicatif
est stocké en mémoire.
Chap 5 : GESTION DE LA MEMOIRE
5.2. Système mono-tâche
 Protection de la mémoire
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus

Il existe plusieurs :
 Allocation contiguë (le processus est considéré comme le seul bloc indivisible : les
zones mémoires occupées sont contiguë).

 Partition fixes (subdiviser la mémoire en des tailles fixes) et partitions variables


(possibilité de modifier la taille).

 Allocation non contiguë (le processus peut être stocké sur des zones mémoire
éparpillées).


Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.1. Allocation contiguë : Partitions fixes
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.1. Allocation contiguë : Partitions fixes

 La mémoire est divisée en partitions fixes dès le démarrage du


système

 Les partitions sont de différentes tailles

 On peut définir une file d’attente par partition, ou une file commune à
toutes les partitions
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.1. Allocation contiguë : Partitions fixes
Algorithme de placement pour partitions fixes : cas de plusieurs files.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.1. Allocation contiguë : Partitions fixes
Algorithme de placement pour partitions fixes : cas de plusieurs files.
 Assigner chaque processus à la partition de la plus petite taille
pouvant le contenir
 1 file par partition
 Tente de minimiser la fragmentation interne (allouer un grand espace
à un processus qui nécessite peu).
 Inconvenient : certaines files seront vides s’il n’y a pas de processus
de cette taille.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.1. Allocation contiguë : Partitions fixes
Algorithme de placement pour partitions fixes : cas de file unique.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.1. Allocation contiguë : Partitions fixes

Algorithme de placement pour partitions fixes : cas de file unique.

 On choisit la plus petite partition libre pouvant contenir le prochain


processus.

 Inconvénient : On pourrait allouer trop de mémoire à un programme


(fragmentation interne)
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.2. Allocation contiguë : Partitions variables
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.2. Allocation contiguë : Partitions variables

L’espace mémoire est alloué dynamiquement, de façon contiguë, lors de


l’implantation des processus en mémoire.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.2. Allocation contiguë : Partitions variables
Algorithme d’allocation de la mémoire

 First fit on range : le processus est rangé dans la première partition et


suffisamment grande trouvée.

 Best fit : On va chercher la partition dont la taille approche au mieux


celle du processus à charger en mémoire.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.2. Allocation contiguë : Partitions variables
Algorithme d’allocation de la mémoire
Exemple :
Processus de
18 Ko à charger en
Mémoire.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.2. Allocation contiguë : Partitions variables
Algorithme d’allocation de la mémoire
Conclusions
First fit est le plus rapide mais pas le meilleur choix (fragmentation interne possible).

Best fit évite au maximum la fragmentation interne et gagne en espace mémoire


mais plus lent. Risque de fragmentation externe (création de blocs minuscules non
réutilisables).

Worst fit offre l’espace assez nécessaire mais lente et fragmentation interne très
probable.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.2. Allocation contiguë : Partitions variables
Algorithme d’allocation de la mémoire

Remarque
Pour une rapidité de l’algorithme, un classement est fait permanemment
pour ranger les espaces vides du plus petit au plus grand.

Dans ce cas le First-fit et le Best-fit ont la même rapidité d’exécution.


Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus

5.3.3. L’algorithme Va-et-Vien (Swapping)


Cet algorithme est utilisé lorsque la mémoire RAM est saturée.
On sort le processus le plus ancien ou qui a passé plus de temps au
niveau de la RAM vers le swap.

Swap : la mémoire auxiliaire (espace d’échange) qu’on peut utiliser et


qui se trouve au niveau du disque dur . Bien que cela fasse perdre du
temps ca sauvera la situation de la RAM.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus

5.3.3. L’algorithme Va-et-Vien (Swapping)

Un processus (dans son intégralité) peut être swappé temporairement


en dehors de la mémoire centrale vers un stockage secondaire (swap file
sur le disque dur), et puis remis en mémoire pour continuer son
exécution.

N.B : Pour optimiser l’utilisation du CPU, on swap un processus en


attente d’E/S.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus

5.3.3. L’algorithme Va-et-Vien (Swapping)

Un processus (dans son intégralité) peut être swappé temporairement


en dehors de la mémoire centrale vers un stockage secondaire (swap file
sur le disque dur), et puis remis en mémoire pour continuer son
exécution.

N.B : Pour optimiser l’utilisation du CPU, on swap un processus en


attente d’E/S.
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.3. L’algorithme Va-et-Vien (Swapping)
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.3. L’algorithme Va-et-Vien (Swapping)
Exemple
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus

Inconvénients de l’allocation contiguë

 Fragmentation interne : partitions fixes


 Fragmentation externe : partitions variables
 Impossible d’exécuter un programme de taille supérieure à celle de la
mémoire centrale

N.B : on parle de fragmentation interne, lorsque l’espace inutilisé est dans les
partitions. Tandis que pour la fragmentation externe, l’espace inutilisé est
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus

5.3.4. Allocation contiguë : Compactage


Une solution pour la fragmentation externe est le compactage.
Définition : Le compactage (ou défragmentation) est une opération réalisée
par le système d’exploitation consistant à déplacer tous les programmes
vers des emplacements contiguës pour avoir un grand espace libre.
Inconvénients :
 Temps de transfert programmes
 Besoin de rétablir tous les liens entre adresses de différents programmes
(mise à jour de l’espace d’adressage des processus).
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.4. Allocation contiguë : Compactage
Exemple
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.5. Allocation non contiguë : Segmentation
Chap 5 : GESTION DE LA MEMOIRE
5.3. Méthodes d’allocation de la mémoire aux processus
5.3.5. Allocation non contiguë : Segmentation
MERCI DE VOTRE
AIMABLE
ATTENTION
18/01/2024 108

Vous aimerez peut-être aussi