Vous êtes sur la page 1sur 28

Chapitre 1 INTRODUCTION AUX SYSTEMES D’EXPLOITATION

Introduction
Les ordinateurs permettent de réaliser plusieurs taches. Par exemple collecter, stocker et
échanger des données avec d’autres ordinateurs en plus d’autres multitudes de fonctions.
L’ordinateur est formé d’une partie logicielle et d’une partie matérielle. Pour qu'un ordinateur
soit capable de faire fonctionner un programme informatique (appelé parfois application ou
logiciel), la machine doit être en mesure d'effectuer un certain nombre d'opérations
préparatoires afin d'assurer les échanges entre le processeur, la mémoire, et les ressources
physiques qui sont les périphériques. Le système d'exploitation est chargé d'assurer la liaison
entre les ressources matérielles, l'utilisateur et les applications (traitement de texte, jeu vidéo,
...).
I) Définition
Le système d’exploitation noté SE en abréviation ou Os qui signifie en anglais « operating
system » est un ensemble de programmes qui joue le rôle d’intermédiaire entre l’utilisateur,
le matériel et les applications (traitement de texte, jeux vidéo,…) .
Le système d’exploitation (SE) assure le lien entre la machine et l'utilisateur.
C’est le premier programme que l’ordinateur charge en mémoire RAM, lors de la mise en
route de l’ordinateur.
c’est un logiciel qui, dans un appareil électronique pilote les dispositifs matériels et reçoit
des instructions de l’utilisateur ou d’autres logiciels. Ces logiciels doivent être adaptés au
système d’exploitation.

Le système d’exploitation (SE) est donc une partie importante de tout système informatique. En
effet, on peut diviser grossièrement un système informatique en trois composants : le
matériel, le système d’exploitation et les programmes d’application

1
II) Histoire des systèmes d’exploitation :
La 1ère génération (1945 -1955) : les tubes à vide et les cartes enfichables
Il n'existait pas de système d'exploitation. Les utilisateurs travaillaient chacun leur tour sur
l'ordinateur qui remplissait une salle entière. Ils étaient d'une très grande lenteur. Ils étaient
d'une très grande fragilité.
La 2ème génération (1955 -1965) : les transistors et le traitement par lots
Le passage aux transistors rendait les ordinateurs plus fiables. Mais devant les coûts
d'équipement élevés on réduisit les temps grâce au traitement par lots.
La 3ème génération (1965 -1980) : les circuits intégrés et la multiprogrammation.
Amélioration des coûts et des performances (circuits intégrés). Une famille d'ordinateurs
compatibles entre eux. Une seule architecture et un même jeu d'instructions. Ces ordinateurs
servaient uniquement pour les calculs scientifiques et commerciaux. Apparition du spoule
(spool, Simultaneous Peripheral Opération On Line) pour le transfert des travaux des cartes
vers le disque.
Apparition de la multiprogrammation (partitionnement de la mémoire pour des tâches
différentes).
Mais, un système d'exploitation énorme et très complexe pour satisfaire tous les besoins
(plusieurs millions de lignes d'assembleur).Apparition du partage de temps, une variante de la
multiprogrammation ; naissance du système MULTICS (MULTiplexed Information and
Computing Service) pour ordinateur central.
La 4ème génération (1980 -1990) : les ordinateurs personnels.
Ils sont dus au développement des circuits LSI (Large Scale Integration) contenant des
centaines de transistors au cm².Ils ont la même architecture que les mini-ordinateurs mais
leur prix est beaucoup moins élevé. Il existe deux systèmes d'exploitation principaux : MS-DOS
(Microsoft Inc.) et UNIX. MS-DOS intègre petit à petit des concepts riches d'UNIX et de
MULTICS. Dans le milieu des années 80, on voit l'apparition de réseaux d'ordinateurs

2
individuels qui fonctionnent sous des systèmes d'exploitation en réseau ou des systèmes
d'exploitation distribués.
La 5ème génération (1990 -????) : les ordinateurs personnels portables et de poche.
Apparition des PIC (Personal Intelligent Communicator de chez Sony) et des PDA (Personal Digital
Assistant, comme le Newton de chez Apple), grâce à l'intégration des composants et l'arrivée des
systèmes d'exploitation de type « micro -noyau ».Ils sont utiles pour les « nomades » et les systèmes
de gestion des informations (recherche, navigation, communication).Ils utilisent la reconnaissance de
caractère (OCR) et les modes de communication synchrone et asynchrone (mode messagerie).Très bon
marché, ils sont capables de se connecter à des ordinateurs distants et performants .Les systèmes
d'exploitation de type « micro -noyau » sont modulaires (un module par fonction) ; ils peuvent être
réalisés avec plus ou moins de modules et donc adaptables à des très petites machines (PDA et PIC).

III)Les différents types de système d’exploitation


Pour comprendre ce que sont les SE, nous devons tout d’abord comprendre comment ils se sont
développés. Cela permettra de voir comment les composants des SE ont évolué comme des solutions
naturelles aux problèmes des premiers SE.

III-1 Les premiers systèmes :


Les premiers ordinateurs étaient physiquement des machines très volumineuses utilisées à
partir d’une console. Le programmeur, qui était aussi l’opérateur du système informatique,
écrivait un programme et le faisait ensuite fonctionner directement à partir de la console de
l’opérateur. Le programme était d’abord chargé manuellement en mémoire, à partir de bandes
perforées, en utilisant des interrupteurs du panneau frontal (une instruction à la fois),. Les touches
appropriées étaient pressées pour fixer l’adresse de début et pour commencer l’exécution du
programme. Le programmeur/opérateur pouvait surveiller l’exécution du programme par les
voyants d’affichage de la console. Si l’on découvrait des erreurs, le programmeur pouvait arrêter le
programme, examiner les contenus de la mémoire et des registres et déboguer le programme
directement à partir de la console. Les résultats étaient imprimés ou perforés sur des bandes ou
des cartes afin de les imprimer plus tard.

III -2 Systèmes simples de traitements par lots


Le problème des premiers systèmes était le temps de préparation du travail qui était très important.
Pendant que les bandes se montaient ou que le programmeur utilisait la console, l’UC restait
inactive. Ce qui engendrait des coûts d’indisponibilité très importants. Pour venir à bout de ce temps
inactif, on a développé l’enchaînement automatique des travaux. Cette technique a permis de
créer les premiers SE rudimentaires. Ce qu’on l’on désirait, c’était une procédure pour transférer
automatiquement le contrôle d’un travail à un autre. A cet effet, on crée un programme appelé
moniteur résident. Quand l’ordinateur était allumé, le moniteur résident était appelé et il transférait
le contrôle à un programme. Quand le programme finissait, il renvoyait le contrôle au moniteur
résident , lequel continuait avec le travail suivant. Ainsi, le moniteur résident enchaînait

3
automatiquement d’un programme à un autre. Mais comment le moniteur résident pouvait-il savoir
quel programme exécuter ?. Réponse : Grâce aux cartes de contrôle.

Les systèmes par lots (batch) sont des systèmes mono-utilisateur

Critique des systèmes de traitement par lot :

• Manque d’interaction entre l’utilisateur et le travail pendant l’exécution.

• En effet, même avec l’enchaînement automatique des travaux, l’UC est souvent inactive. Le

problème réside dans la vitesse des périphériques d’E/S mécaniques qui sont intrinsèquement
plus lents que les dispositifs électroniques.

III –3 Système multiprogrammé


Un système multiprogrammé maintient plusieurs travaux en mémoire à la fois (voir figure).

Figure 1. Schéma mémoire pour un système de multiprogrammation

Le SE choisit et commence à exécuter un des travaux en mémoire. Par la suite, le travail

risque d'attendre une tâche, comme le montage d’une bande, une donnée frappée au clavier

ou l’achèvement d’une opération d’E/S. Dans un système n’étant pas multiprogrammé, le SE

commute simplement sur un autre travail et l’exécute. Quand ce travail a besoin d’attendre,

l’UC est connectée sur un autre travail et ainsi de suite. Ainsi tant qu’il existera un travail à

exécuter, l’UC ne sera jamais inactive.

III –4 Système en temps partagé


Le temps partagé est une extension logique de la multiprogrammation. Plusieurs travaux sont
exécutés par l’UC qui les commute entre eux mais les commutations sont si fréquentes que les

4
utilisateurs peuvent dialoguer avec chaque programme pendant son exécution. Un système
informatique interactif permet la communication en ligne entre l’utilisateur et le système.
L’utilisateur donne des instructions au système d’exploitation ou directement à un programme et
reçoit une réponse immédiate. Les systèmes en temps partagé ont été développés pour fournir une
utilisation interactive du système informatique. Un SE en temps partagé utilise le scheduling de
l’UC et la multiprogrammation pour fournir à chaque utilisateur une petite portion de temps.

Un système d’exploitation en temps partagé permet aux différents utilisateurs de partager

l’ordinateur simultanément. Comme le système commute très vite d’un utilisateur à un autre,

chaque utilisateur a l’impression qu’il possède son propre ordinateur, alors qu’en réalité

l’ordinateur est partagé entre plusieurs utilisateurs.

Exemple : l’OS 360/IBM.

III –5 Les systèmes des ordinateurs personnels


Comme le coût du matériel a baissé, il est devenu possible d’avoir un système informatique
dédié à un seul utilisateur. Ces types de systèmes informatiques sont habituellement
appelés ordinateurs personnels ou PC.
Les PC sont apparus dans les années 70. C’étaient des machines bon marché mais dont les
SE n’étaient ni multiutilisateurs, ni multitâches.
Exemples de systèmes : MS-DOS de Microsoft, Macintosh d’Apple.
III –6 Systèmes répartis
Une tendance récente dans les systèmes informatiques consiste à répartir le calcul entre
plusieurs processeurs. A l’opposé des systèmes centralisés, dans les systèmes répartis on
ne partage pas de mémoire ou d’horloge. Au lieu de cela, chaque processeur possède sa
propre mémoire locale. Les processeurs communiquent entre eux à travers des lignes de
communication, comme des bus rapides ou des lignes téléphoniques. Les systèmes sont
habituellement appelés répartis (ou faiblement couplés).
Dans un système réparti, les processeurs peuvent varier en taille et en fonction. Ils peuvent
inclure des petits microprocesseurs, des stations de travail, des micro-ordinateurs et des
grand systèmes informatiques à usage général. Ces processeurs sont appelés : site, nœud,
poste, …selon le contexte.

III –7 Les systèmes à temps réel :

5
Les systèmes à temps réel sont une autre forme de SE spécialisés. Un système à temps

réel est utilisé quand il existe des exigences impérieuses de temps de réponse pour le

fonctionnement d’un processeur ou pour le jeu de données. Il est souvent employé comme

dispositif de contrôle dans une application dédiée. Les capteurs amènent des données à

l’ordinateur. Celui-ci doit analyser les données et éventuellement régler les contrôle pour

modifier les entrées des capteurs.

Exemple de système à temps réel : systèmes contrôlant les expérimentations scientifiques,

les systèmes d’imagerie médicale, les systèmes de contrôle industriel.

Un système d’exploitation à temps réel possède des contraintes de temps fixes. Le traitement doit être
effectué dans les contraintes définies.

III –8 Système Mono-tâche (DOS)


A tout instant, un seul programme est exécuté; un autre programme ne démarrera, sauf
conditions exceptionnelles, que lorsque le premier sera terminé.
III –9 Système Multitâches (Windows, Unix, Linux, VMS) : plusieurs processus peuvent
s’exécuter simultanément (systèmes multiprocesseurs) ou en quasi-parallélisme (systèmes à
temps partagé)
III –10 Système Mono-session (Windows 98,2000): au plus un utilisateur à la fois sur une
machine.
III –11 Système multi-sessions (Windows XP, Unix, Linux, VMS): Plusieurs utilisateurs
peuvent travailler simultanément sur la même machine.
Exemple de système d’exploitation

Microsoft Windows (xp,7,8,10)


Mac OS (aujourd’hui dérivée de BSD)
GNU/Linux
BSD (Berkely Software Distribution — plusieurs variantes)
GNU/Hurd
OS/360, CP/M, OS/2, BS2000, Amiga OS, . . .
Sur des systèmes embarqués : iOS, Android (basé sur Linux),
Firefox OS (basé sur Linux), Windows Mobile, Maemo, Symbian,. . .
MS-DOS : monotâche mono-utilisateur
OS/2 : multitâche mono-utilisateur

6
WINDOWS XP/Seven : multitâche mono-utilisateur
WINDOWS server 2003/2008 ….. : multitâche multi-utilisateur
UNIX/Linux : multitâche multi-utilisateur

IV) STRUCTURE EN COUCHES D’UN SYSTEME D’EXPLOITATION:


La conception d’un SE est basée sur une structure à couches. Elle consiste à découper le SE en
un certain nombre de couches (niveaux), chacune d’entre elles étant construite au dessus
des couches inférieures. La couche inférieure (couche 0) est le matériel ; la couche
supérieure (couche N) est l’interface utilisateur.

Fig Structures en couches d’un système d’exploitation.

Ainsi une couche i peut utiliser tous les objets (variables et routines) des couches inférieure j
Le principal avantage de l’approche en couches est la modularité. Les couches sont
sélectionnées de telle sorte que chacune utilise seulement les fonctions (opérations) et
services des couches de niveau inférieur. Cette approche simplifie le débogage et la
vérification du système.
Définition d’un appel système :
Un appel système (ou appel superviseur) ou appel noyau est un appel d’une des fonctions du noyau
du système d’exploitation (implémenté au niveau d’une des couches). Les appels systèmes peuvent
être grossièrement classés en cinq catégories principales :

7
- Contrôle de processus (arrêter, charger, exécuter un processus, …).

- Manipulation de fichiers (ouvrir, fermer, …).

- Manipulation de périphériques (demander, libérer,…).

- Manipulation de l’information (modifier l’heure, …).

- Communications (créer , supprimer des connexions,…)..

V) Fonctions d’un système d’exploitation


Les rôles du système d'exploitation sont divers :

- Gestion du processeur (ou des processus): le système d'exploitation est chargé de gérer l'allocation
du processeur entre les différents programmes grâce à un algorithme d'ordonnancement. Le type
d'ordonnanceur est totalement dépendant du système d'exploitation, en fonction de l'objectif visé.

-Gestion de la mémoire vive : le système d'exploitation est chargé de gérer l'espace mémoire alloué à
chaque application et, le cas échéant, à chaque usager.

-Gestion des entrées/sorties : le système d'exploitation permet d'unifier et de contrôler l'accès des
programmes aux ressources matérielles par l'intermédiaire des pilotes (appelés également
gestionnaires de périphériques ou gestionnaires d'entrée/sortie).

- Gestion de l'exécution des applications : le système d'exploitation est chargé de la bonne exécution
des applications en leur affectant les ressources nécessaires à leur bon fonctionnement. Il permet à ce
titre de «tuer» une application ne répondant plus correctement.

- Gestion des droits : le système d'exploitation est chargé de la sécurité liée à l'exécution des
programmes en garantissant que les ressources ne sont utilisées que par les programmes et
utilisateurs possédant les droits adéquats.

-Gestion des fichiers : le système d'exploitation gère la lecture et l'écriture dans le système de fichiers
et les droits d'accès aux fichiers par les utilisateurs et les applications.

-Gestion des informations : le système d'exploitation fournit un certain nombre d'indicateurs


permettant de diagnostiquer le bon fonctionnement de la machine.

8
Chapitre 2 GESTION DES PROCESSUS

2.1 CONCEPT DE PROCESSUS

On peut trouver plusieurs appellations possibles des activités que peut avoir un processeur.
Un système de traitement par lots exécute des travaux, tandis que un système en temps
partagé possède des programmes utilisateurs ou des tâches.
2.1.1 Définition :
On peut définir un processus (process) comme un programme en exécution. Autrement dit,
un programme par lui-même n’est pas un processus. Un programme est une entité passive,
comme le contenu d’un fichier stocké sur disque, tandis qu’un processus est une entité
active, avec un compteur d’instructions spécifiant l’instruction suivante à exécuter et un
ensemble de ressources associées.
Evidemment, il est possible d’avoir plusieurs processus différents associés à un même
programme. C’est le cas , par exemple, de plusieurs utilisateurs qui exécutent chacun une
copie du programme de messagerie. Il est également courant qu’un processus génère à son
tour plusieurs processus lors de son exécution.
2.1.2 Etats d’un processus
Durant son séjour dans un SE, un processus peut changer d’état à plusieurs reprises. Ces
états peuvent être résumés dans le schéma suivant :

9
1. Le processus se bloque en attente de donnés.

2. Désactivation du processus par L’Ordonnanceur.

3. Activation du processus.

4. Réveil du processus bloqué

• Nouveau: Le processus vient d’être créé.

• Prêt: le processus est placé dans la file d’attente des processus prêts, en attente

d’affectation du processeur.

• En exécution: le processus a été affecté à un processeur libre. Ses instructions sont en

exécution.

• En attente: Le processus attend qu’un événement se produise, comme l’achèvement

d’une opération d’E/S ou la réception d’un signal.

• Terminé: le processus a terminé son exécution.

2.1.3 Bloc de contrôle de processus


Pour suivre son évolution, le SE maintient pour chaque processus une structure de données
particulière appelée bloc de contrôle de processus (PCB : Process Control Bloc) et dont le
rôle est de reconstituer tout le contexte du processus.

10
Fig. Bloc de contrôle de processus

Les informations contenues dans le PCB, et permettant de reconstituer le contexte d’un


processus, sont multiples. On peut citer entre autres :
• L’état du processus: Il peut avoir l’une des valeurs suivantes : Nouveau, Prêt, en
exécution ou en attente.
• Le compteur d’instructions: Le compteur indique l’adresse de la prochaine instruction à
exécuter par le processus.
• Les registres du processeur: Les registres varient en nombre et en type en fonction de
l’architecture de l’ordinateur. Ils englobent des accumulateurs, des registres d’index, des
pointeurs de pile et des registres à usage général. Ces informations doivent être
sauvegardées avec le compteur d’instructions quand il se produit une interruption, afin
de permettre au processus de poursuivre correctement son exécution après la reprise.
• Informations sur le scheduling du processeur: Ces informations comprennent la priorité

11
du processus, les pointeurs sur les files d’attente de scheduling, …

3- Synchronisation et Communication interprocessus

Les processus concurrents s’exécutant dans le système d’exploitation peuvent être des
processus coopératifs ou indépendants.

♦ Un processus est indépendants’il n’affecte pas les autres processus ou ne peut pas être

affecté par eux.

♦ Un processus qui ne partagent pas de données avec d’autres processus est indépendant

♦ Un processus est coopératifs’il peut affecter les autres processus en cours d’exécution ou

être affecté par eux

♦ Un processus qui partage des données avec d’autres processus est un processus coopératif

♦ Les données partagées par les processus coopératifs peuvent se trouver en mémoire

principale ou en mémoire secondaire dans un fichier

les processus peuvent communiquer à travers les moyens tels que :


les messages,
les tubes(pipe) ,
les signaux,
les fichiers
les Segments de données partagés;

3-1 Sections critiques

Le problème rencontré dans certains programmes le plus souvent est dû aux conflits d’accès
au même fichier. Ces accès sont en lecture et en écriture. Evidemment, il ne peut y avoir de
conflit si les accès aux données ne sont qu’en lecture seule.
On appelle section critique la partie d’un programme où se produit le conflit d’accès

Comment éviter ces conflits d’accès ?

♦ Il faut trouver un moyen d’interdire la lecture ou l’écriture des données partagées à


plus d’un processus à la fois

12
♦ Il faut une exclusion mutuelle qui empêche les autres processus d’accéder à des

données partagées si celles-ci sont en train d’être utilisées par un processus


Pour que les processus qui partagent des objets (données en mémoire centrale ou dans
fichiers) puissent coopérer correctement et efficacement, quatre conditions sont nécessaires
:
1. Exclusion mutuelle: deux processus ne peuvent être en même temps en section
critique
2. Famine: aucun processus ne doit attendre trop longtemps avant d’entrer en section
critique
3. Interblocage(deadlock) : aucun processus suspendu en dehors d’une section critique
ne doit bloquer les autres d’y entrer . La dernière section sera consacrée à l’étude de ce
problème
4. Aucune hypothèse ne doit être faite sur les vitesses relatives des processus

3-2 L’INTERBLOCAGE ET LES RESSOURCES


L'accès concurrent aux ressources peut provoquer des interblocages de processus.
Exemple : Les processus A et B utilisent les ressources R1 et R2
1. A demande l'accès à R1 : accordé
2. B demande l'accès à R2 : accordé
3. A demande l'accès à R2 : refusé car utilisé par B => A se bloque
4. B demande l'accès à R1 : refusé car utilisé par A => B se bloque
Les 2 processus sont bloqués indéfiniment ainsi que les 2 ressources
Ce phénomène peut se produire dans des quantités de circonstances comme
l'accès concurrent à des enregistrements d'une BD qui sont verrouillés par les processus.
Les ressources sont des périphériques ou des variables partagées ou tout ce qui peut faire
l'objet d'accès concurrents Certaines ressources peuvent être retirées sans problème à un
processus qui les possède comme la mémoire par exemple.
D'autres ne le peuvent pas comme un graveur de DVD
En général on utilise des sémaphores pour contrôler l'accès aux ressources partagées.

13
4-LES INTERRUPTIONS
Lorsqu'une machine fonctionne, sous le contrôle d’un système d’exploitation, l'unité centrale
est en permanence susceptible d’exécuter un programme. Le problème se pose alors de savoir
à quel moment l'unité centrale va pouvoir prendre en compte les événements extérieurs à la
séquence d'instructions qu'elle exécute: requête d’un périphérique, frappe d'une touche sur
un clavier, insertion d'une disquette, fin d'impression, passage d’un objet devant un capteur,
système d’alarme, etc.
Comment prendre en compte un événement, comment provoquer une rupture de
séquence d'exécution d'un processus dans un délai très court? Une solution : les
interruptions.

Une interruption est un signal déclenché par un événement interne à la machine ou externe,
provoquant l'arrêt d'un programme en cours d'exécution à la fin de l'opération courante, au
profit d'un programme plus prioritaire appelé programme d'interruption.
Ensuite, le programme interrompu reprend son exécution à l'endroit où il avait été
interrompu. Le système d'interruption est le dispositif incorporé au séquenceur qui
détecte les signaux d'interruption. Ces signaux arrivent de façon asynchrone, à n'importe
quel moment, mais ils ne sont pris en compte qu'à la fin de l'opération en cours.
Mécanisme général : Lorsqu'une interruption survient, le processeur achève l'exécution de

l'instruction en cours pour les interruptions externes (cf. plus loin), puis il se produit :

1-Sauvegarde du contexte dans une pile :


- adresse de la prochaine instruction à exécuter dans le programme interrompu,
- contenu des registres qui seront modifiés par le programme d'interruption,
- contenu du mot d'état (registre de drapeaux) rassemblant les indicateurs
( tout cela forme le contexte sauvegardé)

14
2-Chargement du contexte du programme d'interruption(contexte actif) et passage en
mode
système (ou superviseur)
3-Exécution du programme d'interruption
4-Retour au programme interrompu en restaurant le contexte (commande Assembleur
IRET) et en repassant en mode utilisateur.

4-1 Différents types d’interruption


Les interruptions ne jouent pas seulement un rôle important dans le domaine logiciel, mais
aussi
pour l'exploitation de l'électronique.
On distingue donc :
• interruptions internes : protection du système et des processus, appelées par une
instruction à l'intérieur d'un programme (overflow, erreur d'adressage, code opération
inexistant,
problème de parité…) (hardware internes)
• interruptions logiques:permet à un processus utilisateur de faire un appel au système
(software)
• interruptions matérielles déclenchées par une unité électronique (lecteur, clavier,
canal, contrôleur de périphérique, panne de courant,....) ou par l'horloge (hardware externes)
4-2 les priorités
A chaque interruption, est associée une priorité (système d'interruptions hiérarchisées) qui
permet de regrouper les interruptions en classes. Chaque classe est caractérisée par un
degré d'urgence d'exécution de son programme d'interruption.
Règle :Une interruption de priorité j est plus prioritaire qu'une interruption de niveau i si j > i.

15
L'intérêt de ce système est la solution de problèmes tels que :
• arrivée de plusieurs signaux d'interruption pendant l'exécution d'une instruction,
• arrivée d'un signal d'interruption pendant l'exécution du signal de traitement d'une
interruption précédente.
On peut utiliser un contrôleur d'interruptions pour regrouper les fils d'interruptions,
gérer les priorités entre les interruptions et donner les éléments de calcul d'adresse au
processeur.

4-2 Masquage des interruptions

Certaines interruptions présentent tellement d'importance qu'il ne doit pas être possible
d'interrompre leur traitement. On masquera alors les autres interruptions pour empêcher leur
prise en compte. Certaines interruptions sont non-masquables : on les prend obligatoirement
en compte.
Une interruption masquée n'est pas ignorée : elle est prise en compte dès qu'elle est
démasquée.
Au contraire, une interruption peut-être désarmée : elle sera ignorée. Par défaut, les
interruptions sont évidemment armées.

16
Chapitre 3 l’ordonnancement de processus

3.1 Introduction
Un ordinateur possède forcément plusieurs processus en concurrence pour l’obtention
du temps processeur, cette situation se produit lorsque 2 ou plusieurs processus sont en état
prêt simultanément.
L’Ordonnanceur(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.
3.2 Objectifs d’un Ordonnanceur
Les objectifs d’un Ordonnanceur sont :
- Maximiser l’utilisation du processeur
- Présenter un temps de réponse acceptable
- Respecter l’équité entre les processus selon le critère d’ordonnancement utilisé.
3.3 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 à l’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.
La liste qui suit passe en revue des 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.
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

17
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.
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.
3.4 Types d’ordonnancement
Il existe 2 types d’ordonnancement
a. 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.
Si l’ordonnancement est préemptif, la transition de l’état élu vers l’état prêt est autorisée:
un processus quitte le processeur s’il a terminés on exécution, s’il se bloque ou si le
processeur est réquisitionné.

b. Ordonnancement coopératif ou non preemptif :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
Si l’ordonnancement est non préemptif, la transition de l’état élu vers l’état prêt est
interdite: un processus quitte le processeur s’il a terminés on exécution ou s’il se bloque;

3.5 Les algorithmes d’ordonnancement

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

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

18
Critique de la méthode :
La méthode FCFS tend à pénaliser les travaux courts: L’algorithme du FCFS n’effectue pas
de réquisition. C’est à dire qu’une fois que le processeur a été alloué à un processus, celuici le
garder jusqu’à ce qu’il le libère, soit en terminant, soit après avoir demandé une E/S.
L’algorithme FCFS est particulièrement incommode pour les systèmes à temps partagé, où il
est important que l’utilisateur obtienne le processeur à des intervalles réguliers. Il peut
paraître désastreux de permettre qu’un processus garde le processeur pendant une période
étendue.

b. L’algorithme SJF (Shortest Job First)


Cet algorithme (en anglais Shortest Job First : SJF) affecte le processeur au processus
possédant le temps d’exécution le plus court. Si plusieurs processus ont la même durée, une
politique FIFO sera alors utilisée pour les départager.
Critique de la méthode :
Il a été prouvé que l’algorithme SJF est optimal dans le temps dans le sens qu’il obtient le
temps d’attente le plus court pour un ensemble de processus donné. Toutefois, cet
algorithme est difficile à implémenter pour une raison simple : Comment peut-on connaître le
temps d’exécution d’un processus à l’avance ?.

19
c-. L’algorithme du Scheduling avec priorité

Cet algorithme associe à chaque processus une priorité, et le processeur sera affecté au
processus de plus haute priorité. Cette priorité varie selon les systèmes et peut aller de 0 à
127.
Les priorités peuvent être définies en fonction de plusieurs paramètres : le type de
processus, les limites de temps, les limites mémoires, …etc.
Exemple: On dispose de 5 processus ayant des priorités différentes, comme le montre ce
tableau :

20
Critique de la méthode :
Une situation de blocage peut survenir si les processus de basse priorité attendent
indéfiniment le processeur, alors que des processus de haute priorité continuent à affluer.
Pour éviter une telle situation, on peut utiliser la technique dite du vieillissement. Elle
consiste à incrémenter graduellement la priorité des processus attendant dans le système
pendant longtemps. Par exemple, nous pourrions incrémenter de 1 la priorité d’un processus
en attente toutes les 15 minutes. En fin de compte,même un processus ayant une priorité
initiale égale à 0 aurait la plus haute priorité dans le système et serait exécuté.

d-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 courts : les travaux longs en revanche peuvent être
victimes de famine.
e-L’algorithme Round Robin
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. 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. Dans la pratique le quantum s’étale
entre 10 et 100ms.
Exemple: On dispose de 3 processus P1, P2 et P3 ayant comme durée d’exécution,
respectivement 24, 3 et 3 ms. En utilisant un algorithme Round Robin, avec un quantum de
4 ms, on obtient le diagramme de Gantt suivant :

21
La performance de l’algorithme de Round Robin dépend largement de la taille du quantum. Si
le quantum est très grand , la politique Round Robin serait similaire à celle du FCFS. Si le
quantum est très petit, la méthode Round Robin permettrait un partage du processeur
:
Chacun des utilisateurs aurait l’impression de disposer de son propre processeur . Cependant
le quantum doit être choisi de sorte à ne pas surcharger le système par de fréquentes
commutations de contexte.
Exemple: On dispose d’un processus P dont le temps d’exécution est de 10 ms. Calculons
le nombre de commutations de contexte nécessaires pour un quantum égal respectivement
à : 12, 6 et 1.

4-Performance des algorithmes d’Ordonnancement


Les performances d’un algorithme pour un ensemble de processus donné peut être analysée si les
informations appropriées relatives aux processus sont fournies. Par exemple, des données sur l’arrivée
du processus et sur l’heure d’exécution de ce processus sont nécessaires pour évaluer l’algorithme
SRT.

Temps de rotation=Temps fin d’exécution - Temps d’arrivée


Temps d’attente=Temps de rotation – Durée d’exécution

22
Temps de séjour = temps fin d'exécution - temps d'arrivée

Temps moyen de séjour = somme des temps de séjour de chaque


processus divisé par le nombre de processus.

Temps d'attente = temps de séjour - temps d'exécution

Temps moyen d'attente = somme des temps d'attente divisée par le


nombre de processus

23
Chapitre 4 SECURITE DANS LES SYSTEMES D’EXPLOITATION

1- Authentification de l'utilisateur
En général par un mot de passe. On peut aussi utiliser des systèmes physiques Comme la
biométrie ou des cartes à puces.
Fragilité des mots de passe :
De nombreux logiciels permettent de cracker les mots de passe.
Les principes qu’ils utilisent sont les suivants :
– Utiliser des dictionnaires standards
– Utiliser le contenu du fichier de mots de passe pour générer des mots de
passe potentiels, comme le login
– Utiliser le nom de l’utilisateur et toutes ses données associées
– Utiliser un langage de description de modifications permettant de définir les
transformations des mots de passe potentiels
– Construire des statistiques à propos de la constitution des mots de passe déjà
cassés.

24
1-1 Sécurité des mots de passe sous Windows
– Les mots de passe sont placés dans le fichier SAM (Security Accounts Manager)
– Il sont cryptés par deux algorithmes différents (LANMAN et NTLM)
– Le 1er crypte par DES le mot de passe mis en majuscules et complété par des
0 pour atteindre 14 caractères puis séparé en 2 moitiés
– Le 2ème crypte le mot de passe exprimé en UNICODE (le résultat est sur 16 octets).
1-2 Sécurité des mots de passe sous LINUX
– A la création on ajoute au mot de passe un code sur 12 bits (salt) aléatoire
– Le mdp concaténé au salt sont cryptés
– Ces codes et les salts sont placés dans le fichier /etc/shadow qui n’est
accessible que par root

2-Principes de sécurité par ACL (Windows et Linux)


La liste de contrôle d'accès ACL (Access Control List) spécifie pour
chaque fichier qui, quels utilisateurs et groupes ont accès à ce
fichier.
Chaque entrée d'une ACL assigne à un utilisateur ou à un groupe un ou
plusieurs des niveaux d'accès suivants aux fichiers :
– Aucun n'accorde aucun accès au fichier.
– Lire autorise l’affichage des données du fichier
– Écrire autorise la modification des données du fichier
– Exécuter autorise l’exécution du fichier programme.
– Supprimer autorise la suppression du fichier.
– Modifier les autorisations, autorise le changement des autorisations sur
le fichier.
– Appropriation autorise l'appropriation du fichier.

La liste de contrôle d'accès ACL (Access Control List) spécifie pour chaque répertoire qui, quels
utilisateurs et groupes ont accès à ce répertoire.
Un jeu de privilèges similaire est défini sur les répertoires :

25
– Aucun n'accorde aucun accès au répertoire.
– Lire autorise l’affichage des noms de fichiers et de sous-répertoires
– Écrire autorise l’ajout de fichiers et de sous-répertoires
– Exécuter autorise la modification des sous-répertoires
– Supprimer autorise la suppression de sous-répertoires.
– Modifier les autorisationsautorise le changement des autorisations du
répertoire
– Appropriation autorise l’appropriation du répertoire.

3-Virus
• Définition :
« Programme capable “d’infecter” d’autres programmes en les modifiant de façon à inclure
une copie de lui-même, potentiellement évoluée » Frederick B. Cohen 1972
• Généralement les virus sont cachés dans un logiciel parfaitement
fonctionnel
• Actuellement, l’objectif est de gagner de l’argent :
– Vol d’informations bancaires
– Appel de n°s de téléphone
– Spam
– Bots pour le déni de service
– Rançon (virus police, virus hadopi, …)

3-1Les types de virus


On distingue les types de virus suivants :
– Les vers (worms) : se copient eux-mêmes et de se propagent à
travers un réseau
– Les chevaux de Troie (trojans) : installent d’autres applications afin
de pouvoir contrôler l’ordinateur qu’ils infectent depuis l’extérieur.
– Les bombes logiques : se déclenchent suite à un événement
particulier (date système, activation distante, ...)

26
– Les Rootkits : dissimulent des objets sur les ordinateurs (processus,
fichiers …). Ils sont souvent utilisés par d’autres virus pour se cacher
– Les Exploits : exploitent une faille de sécurité dans un logiciel, un
système d'exploitation ou un protocole de communication
– Les Adwares : affichent des publicités
– Les Spywares : collectent et transfèrent des informations

3-2Les formes de virus


On distingue cinq formes de virus :
– Les virus mutants : virus réécrits afin d'en modifier le
comportement ou la signature (pratiquement tous)
– Les virus polymorphes : virus dotés de fonctions de
chiffrement et de déchiffrement de leur signature
– Les rétrovirus : virus ayant la capacité de modifier les signatures des antivirus afin de les
rendre inopérants
– Les virus de secteur d'amorçage : virus capables d'infecter le secteur de démarrage d'un
disque (MBR master boot record)
– Les virus trans-applicatifs (virus macros) : virus situés à l'intérieur d'un banal document et
exécutant une portion de code à l'ouverture de celui-ci.

4-Les antivirus
Un antivirus est un programme capable de détecter la présence de virus et, dans la mesure du
possible, de désinfecter ce dernier. On parle ainsi d'éradication de virus pour désigner la
procédure de nettoyage de l'ordinateur.
Il existe plusieurs méthodes d'éradication :
– La suppression du code correspondant au virus dans le fichier
infecté (pas toujours possible)
– La suppression du fichier infecté
– La mise en quarantainedu fichier infecté : le déplacer dans un
emplacement où il ne pourra pas être exécuté (permet de le

27
restaurer si on est sûr qu’il n’est pas dangereux, fausse alerte).

5- Les autres mécanismes


Relèvent plutôt du réseau :
– Pare-feu (firewall)
• Filtrage de protocoles
• Filtrage d’adresses IP
• Filtrage de ports
• Filtrage d’applications
– Mandataire (proxy)
• Filtrage de serveurs

28