Vous êtes sur la page 1sur 37

CENTRE D’INFORMATIQUE ET DE RECHERCHE DE L’ARMEE ET DE LA SECURITE

Centre de formation en informatique

SYSTEME D’EXPLOITATION

Support de cours

Alain EKONDZI

Document strictement réservé aux étudiants de 2ème année de licence et DUT informatique du CFI-CIRAS

Reproduction interdite
2

PLAN DU COURS

Chapitre I : Généralités

Chapitre II : la gestion de la mémoire centrale

Chapitre III : la gestion des fichiers et mémoires secondaires

Chapitre IV : la gestion des entrées-sorties

Chapitre V : l’allocation du CPU

Chapitre VI : l’allocation des ressources et l’utilisation d’un ordinateur


3

Chapitre I : Généralités

Par définition, le système d’exploitation (operating system) d’un ordinateur est un ensemble de
programmes qui remplissent deux grandes fonctions :
• Gérer efficacement les ressources de l’installation matérielle en assurant leurs partages entre
un ensemble plus ou moins grand d’utilisateurs ;
• Assurer un ensemble de services en présentant aux utilisateurs une interface mieux adaptée à
leurs besoins que celle de la machine physique.

En d’autres termes, le système d’exploitation construit, sur une machine physique (telle qu’elle est
livrée par le constructeur), une machine virtuelle plus facile d’emploi et plus conviviale pour
l’utilisateur d’une part, et prend en charge la gestion complexe des ressources de l’ordinateur
(processeur, mémoires, périphériques d’entrée-sortie, etc…), en optimise l’utilisation et en permet le
partage entre les utilisateurs d’autre part.

Le système d’exploitation est un constituant de la partie logicielle d’un système informatique. En


effet, le système informatique est l’ensemble des moyens matériels et logiciels nécessaires pour
satisfaire les besoins informatiques des utilisateurs. Le matériel (hardware) représente l’ensemble des
éléments physiques tandis que le logiciel (software) désigne l’ensemble des programmes utilisables
pour effectuer des traitements sur ordinateur. Le logiciel est subdivisé en logiciels de base et en
logiciels d’application. Le logiciel de base comprend le système d’exploitation et les outils de service.
Le système d’exploitation est le programme qui est mis en route au démarrage de l’ordinateur ; il
tourne en permanence tout au long de la période où la machine reste allumée et assure l’interface
entre la machine physique et les applications.

Quelques types du système d’exploitation

I- HISTORIQUE

A l’apparition de l’ordinateur, il y avait une absence totale de système d’exploitation dans les
machines. Les systèmes d’exploitation sont nés bien après et ont obéi, tout au long de leur évolution,
4
à une même logique : faciliter l’exploitation de l’ordinateur grâce à l’utilisation d’un certain nombre
d’outils. Ainsi donc, les systèmes d’exploitation ont évolué de la manière suivante :

a- Le traitement par lots est la première technique utilisée. Des lots de travaux étaient soumis sous
forme de cartes perforées et recopiés sur bande puis traités dans l’ordre de soumission. Avec
l’arrivée des disques durs et grâce à l’introduction d’un module appelé planificateur (scheduler),
ces travaux n’étaient plus exécutés dans l’ordre de soumission.

b- Les systèmes multiprogrammés sont nés avec le concept d’indépendance des unités
d’entrées/sorties. En effet, bien qu’il soit possible d’exécuter les travaux soumis suivant l’ordre
défini par le scheduler, l’unité centrale de traitement reste inactive pendant toute la durée de
l’entrée-sortie. C’est ainsi qu’un nouveau module a enrichi le système d’exploitation : l’allocateur
(dispatcher). Parmi les nombreux programmes qui sont en mémoire centrale, l’allocateur choisit
un à qui il alloue le processeur. Lors de son exécution, si le programme exécute une entrée-sortie,
le processeur est alloué à un autre programme.

c- Avec l’apparition des terminaux, plusieurs utilisateurs peuvent être connectés simultanément à
l’ordinateur, chacun exécutant son programme ; ainsi, des temps de réponse très courts sont exigés
par les utilisateurs. Afin de donner à chaque utilisateur l’impression d’être seul, on a introduit le
concept de temps partagé (time sharing) où une tranche de temps est attribuée à chaque utilisateur
afin que celui-ci exécute son programme. Aucun programme ne peut ainsi être pénalisé.

d- L’apparition des micro-ordinateurs a ramené les systèmes mono-utilisateurs ; à cela s’est greffé le
concept de multitâche. La connexion des ordinateurs en réseau a donné naissance aux systèmes de
réseau qui permettent le partage des ressources de plusieurs ordinateurs tout en donnant
l’impression de dialoguer avec un seul ordinateur. L’apparition des ordinateurs multiprocesseurs
a introduit, au sein des systèmes gérant ce type d’ordinateur, des modules spécifiques permettant
des traitements parallèles (multi-processing) sur une même machine.

II- ELEMENTS DE BASE

II.1 NOTION DE PROGRAMME, PROCESSEUR ET PROCESSUS

Un programme est une suite ordonnée d’instructions, écrites dans un langage donné, définissant un
traitement exécutable sur ordinateur.

Le processeur ou unité centrale de traitement est l’agent qui exécute les instructions d’un programme.
Il dispose d’un certain nombre de registres tels que :
- Le compteur ordinal qui contient l’adresse de la prochaine instruction
- Le registre d’instruction qui contient le code de l’instruction ;
- L’accumulateur qui contient un opérande ou le résultat de l’opération ;
- Le registre d’état qui indique l’état de la machine après l’exécution d’une opération.

La notion de processus a été introduite dans les années 1960 par les concepteurs de MULTICS. L’idée
de base était de distinguer un programme de son exécution que nous appelons processus. Un
processus est une séquence d’opérations qui se déroule pour réaliser une tâche. Il dispose d’un
5
environnement ou contexte, c’est-à-dire, un ensemble d’informations qui lui sont nécessaires et
suffisantes. Cet ensemble est représenté par une structure appelée bloc de contrôle de processus
(process control block) ou BCP. Cette structure contient les informations suivantes :
- L’état du processus ;
- Le numéro qui l’identifie ;
- La valeur du compteur ordinal ;
- Les valeurs des registres ;
- Des informations relatives à la quantité de mémoire allouée au processus et des pointeurs vers
cette mémoire ;
- Des informations quantitatives telles que le temps CPU utilisé, le temps restant autorisé ;
- Des informations concernant les opérations d’entrée-sortie du processus (périphériques
alloués, opérations en attente de complétion, fichiers ouverts, etc…) ;
- Des informations concernant les files d’attente où figure le processus (numéros de priorité,
pointeurs vers ces files…).

Le BCP est sauvegardé si le processus est interrompu, ce qui permet de reprendre l’exécution du
processus en bonne et due forme.

Un processus peut être :


- En exécution ;
- Prêt : c’est-à-dire qu’il est en attente du processeur ;
- Bloqué : c’est-à-dire en attente d’une autre ressource que le processeur.

Les opérations réalisées sur un processus par le système d’exploitation sont :


- Créer et détruire ;
- Mettre en attente et réveiller ;
- Modifier la priorité.

En résumé, un programme spécifie l’exécution séquentielle d’une liste d’instructions par un agent dit
processeur ; on appelle processus cette exécution.

II.2 NOTION DE RESSOURCE

On appelle ressources les éléments qui contribuent à la progression d’un processus. Certaines relèvent
du matériel ; c’est le cas du CPU, de la mémoire centrale, des mémoires secondaires, des unités
périphériques, des bus, des réseaux, etc. D’autres sont de nature logicielle : les programmes
d’application (compilateurs, assembleurs, éditeurs de texte, tableurs, grapheurs, bibliothèques de
fonctions) et les processus systèmes (ordonnanceurs, distributeurs, chargeurs, éditeurs de liens) ou
les fichiers.

Une classe de ressource est le couple constitué d’une collection d’éléments regroupés sous un nom
commun et l’ensemble des opérations que l’on peut leur appliquer.
On distingue :
- les ressources préemptibles dont la libération est sous le contrôle du système ;
- Les ressources non préemptibles dont la libération est sous le contrôle du processus.
6
Une ressource peut être :
- Commune (utilisable par tous les processus) ;
- Partageable à un point d’accès (attribuable simultanément à un seul processus) ;
- Allouée à un seul processus.

Les opérations réalisées sur les ressources sont :


- Demander ;
- Allouer ;
- Utiliser ;
- Libérer.

La demande, l’allocation et la libération sont réalisées par le système d’exploitation (par exemple
demander ou libérer un périphérique, ouvrir ou fermer un fichier, allouer ou libérer de la mémoire).
Lorsqu’une ressource peut être à nouveau demandée après sa libération, elle est dite réutilisable.
C’est le cas en particulier des ressources matérielles.

Le système d’exploitation assure le contrôle des ressources grâce à une table qui permet d’indiquer
si une ressource est disponible ou non, et si elle est allouée, à quel processus. Ainsi, à chaque
ressource, est associée une file d’attente contenant les blocs de contrôle des processus qui l’attendent.
Chaque fois qu’un nouveau processus fait une demande de la ressource et que cette dernière n’est pas
utilisable, son bloc de contrôle est ajouté à la file d’attente.

II.3 DEUX MODES DE FONCTIONNEMENT (MACHINE A DEUX ETATS)

L’ordinateur fonctionne suivant deux modes : le mode superviseur, réservé au système d’exploitation
et le mode utilisateur dans lequel tournent les programmes d’application. En effet, certaines
instructions exécutées par l’ordinateur concernent des zones sensibles ; les faire exécuter par un
utilisateur ordinaire pourrait sérieusement perturber le fonctionnement du système. C’est pourquoi
elles ne peuvent être exécutées que par le système d’exploitation. Ces instructions sont appelées
instructions privilégiées. Les autres instructions sont exécutables aussi bien par le système
d’exploitation que par les programmes d’application. Ce sont les instructions de base. Au niveau du
processeur, il existe un registre appelé PSW (Process Status Word) dans lequel sont positionnés un
certain nombre de bits indiquant l’état général de la machine, dont un bit spécial qui est interrogé
automatiquement si l’instruction à exécuter est de type privilégié. Le passage du mode utilisateur au
mode superviseur est assuré par une instruction non privilégiée appelée requête au superviseur (SVC
= supervisor Call). Elle provoque un changement au niveau du PSW où la valeur du bit de contrôle
est modifiée. C’est ce que l’on appelle une commutation du mot d’état.

L’exemple le plus connu est celui des instructions d’entrée-sortie où les programmes utilisateurs ne
peuvent pas exécuter directement une instruction de transfert physique. Ceci provoque
automatiquement un SVC qui permet au système de passer en mode superviseur et lancer l’opération
de transfert dont il va contrôler le déroulement.

II.4 INTERRUPTION

Une interruption est une commutation de mot d’état provoquée par un signal généré par le matériel.
7

Ce signal est lui-même la conséquence d’un événement, qui peut être interne au processus et résultant
de son exécution, ou bien extérieur et indépendant de cette exécution. Lorsque le CPU reçoit le signal
d’interruption, il en examine la cause grâce à quelques bits du mot d’état qui constituent le vecteur
d’interruption. A chaque cause est associé un niveau d’interruption. On distingue, en général, au
moins trois niveaux :
- Interruptions externes ;
- Déroutements ;
- Appels au système.

Selon le niveau de priorité de l’interruption, par rapport au processus en cours, on peut :


- Soit traiter immédiatement l’interruption ;
- Soit retarder la prise en compte de l’interruption ;
- Soit ignorer la prise en compte de l’interruption.

III- STRUCTURE DU SYSTEME D’EXPLOITATION

Le système d’exploitation est défini comme un ensemble de programmes qui se chargent de


l’exploitation de la machine (ordinateur). A ce titre, il est composé d’un certain nombre de modules,
tous liés les uns aux autres.

Afin de faciliter l’utilisation de l’ordinateur, de nombreux programmes ou logiciels ont été


développés et superposés au système d’exploitation. Ils sont connus sous le nom de programmes
généraux ou outils de service.

III.1 COMPOSANTS DE BASE DU SYSTEME D’EXPLOITATION

Le système d’exploitation peut être décrit comme structuré en couches fonctionnelles superposées les
unes aux autres. Les couches les plus bases sont celles qui sont en interaction directe avec le matériel
et les plus hautes sont celles qui servent d’interface avec l’utilisateur. Ainsi, de bas en haut, on trouve :
- Le noyau dont les fonctions principales sont l’allocation du CPU, la gestion des interruptions
et le support d’environnement des processus ;
- Le gestionnaire de mémoire centrale ;
- Le gestionnaires des entrées-sorties ;
- Le système de gestion des fichiers ;
- Le planificateur ;
- L’interface utilisateur avec l’interpréteur de commandes.
8

Composants de base du système d’exploitation

III. 2 OUTILS DE SERVICES

Les outils de service forment, avec le système d’exploitation, le logiciel de base. Ils ne font pas partie
du système d’exploitation, mais aident au développement d’applications ou à l’automatisation et/ou
à la simplification de fonctions fréquemment utilisées.

III.2.1 Les éditeurs de texte

Un éditeur de texte (text editor) est un logiciel interactif qui permet de saisir un texte à partir d’un
clavier et de le stocker dans un fichier. Les informations contenues dans ce fichier sont du type texte,
c’est-à-dire un ensemble de caractères qui n’a pas de spécifications particulières. Un éditeur réalise
principalement les fonctions suivantes :
- La visualisation d’une partie du texte à l’écran ;
- Le déplacement et le positionnement du curseur n’importe où dans le texte ;
- La modification du texte par ajout, insertion, déplacement, copie, suppression ou
remplacement de chaînes de caractères ;
- La recherche de chaînes de caractères particulières ;
- Le choix d’une police particulière.

III.2.2 Les traducteurs

Un traducteur lit un programme écrit dans un langage de programmation et le traduit dans un langage
compréhensible par la machine (langage machine). Le programme ainsi traduit s’appelle programme
objet. Cette traduction n’est possible que si le programme source ne comporte pas d’erreurs. Dans le
cas contraire, ce sont des messages d’erreurs qui sont envoyés au programmeur qui a soumis le
programme à la traduction. On distingue trois types de traducteurs :

- L’interpréteur : il traduit et exécute le programme instruction par instruction ; il ne génère


pas de programme objet ;

- Le compilateur : c’est le traducteur des programmes écrits en langage évolué ; chaque


langage évolué à son compilateur ;
9
- L’assembleur : c’est le traducteur de programmes écrits en langage machine symbolique,
proche du langage machine.

III.2.3 Les éditeurs de liens

Un éditeur de liens (Linker ou linkage editor) est un logiciel qui permet de combiner plusieurs
programmes objets, (par exemple le programme principal et des sous-programmes), des modules de
librairie et des procédures externes pour former un programme complet exécutable.

III.2.4 Les chargeurs

Le rôle d’un chargeur (loader) est de charger le programme objet exécutable en mémoire centrale
pour que celui-ci soit exécuté par le CPU. C’est lui qui également traduit les adresses relatives
(comme si le programme était implanté à l’adresse 0) en adresses absolues.
Adresse absolue = adresse d’implantation (adresse où est logée la première instruction) + adresse relative
(adresse de l’instruction si le programme était implanté à l’adresse 0)

III.2.5 Les débogueurs

Un débogueur (debugger) est un logiciel qui facilite la mise au point de programmes (détection et
correction d’erreurs ou bogues (bugs). Il permet d’examiner le contenu de la mémoire ainsi que celui
des registres. On peut ainsi suivre l’exécution pas à pas d’un programme et comprendre d’où viennent
certaines erreurs d’exécution.

III.2.6 Les utilitaires

Ils sont nombreux et variés ; ils visent la simplification de certaines tâches ou encore la facilitation
de l’exploitation de l’ordinateur. Certains sont livrés avec l’ordinateur ou le système d’exploitation,
d’autres sont réalisés par des sociétés spécialisées dans l’édition des logiciels. Parmi ceux- ci on peut
citer :
- Les utilitaires de tri ;
- Les utilitaires de manipulation de fichiers (copie de support, transcription de code à code…) ;
- Les utilitaires d’optimisation de la mémoire centrale ;
- Les utilitaires de sauvegarde ;
- Les utilitaires de récupération de fichiers ;
- Les utilitaires de création et de définition de masques de saisie ;
- Les utilitaires de réorganisation du disque dur ;
- Les utilitaires de diagnostic de contrôle de matériel ;
- Les utilitaires pour la comptabilisation de l’emploi des ressources ;
- Les utilitaires de création de partitions disque ;
- Les utilitaires de choix de partition ou système au démarrage ;
- Etc…

IV-FINALITE, FONCTIONS ET QUALITES D’UN SYSTEME D’EXPLOITATION

La finalité d’un système d’exploitation est d’assurer le stockage, la recherche et la protection des
informations, de gérer de manière optimale les différentes ressources matérielles et logicielles afin
d’assurer le partage de ces ressources entre usagers ; pour cela, il doit prendre en compte les
problèmes de sécurité. En outre, le système d’exploitation doit présenter à l’utilisateur une machine
simple (machine virtuelle), cachant la complexité de la machine réelle. La mise en œuvre d’un
parallélisme entre activités doit permettre l’augmentation des performances et une interface de
dialogue doit permettre la communication avec les utilisateurs.
10
Les principales fonctions d’un système d’exploitation sont :
- La gestion des travaux ;
- La gestion des fichiers ;
- La gestion des entrées-sorties ;
- La gestion de la mémoire centrale ;
- La gestion des processus ;
- La gestion des interruptions ;
- L’allocation des ressources
- La protection du système, des ressources et des utilisateurs.

Les qualités attendues d’un système d’exploitation sont :


- La fiabilité : limiter des conséquences des défaillances matérielles ou des erreurs des
utilisateurs ; en cas de panne, éviter les pertes d’informations ou leur incohérence ;
- L’efficacité : utiliser au mieux les ressources et possibilités matérielles (sans en consommer
trop pour lui-même) ;
- La facilité d’emploi : offrir un langage de commande et des diagnostics d’erreur clairs et
précis ;
- L’adaptabilité : permettre des modifications matérielles et logicielles les plus simples
possibles, à l’aide d’outils spécialisés ;
- La mesurabilité : enregistrer la comptabilité des ressources utilisées par les usagers, mesurer
les paramètres de fonctionnement et de charge.
11

Chapitre II : GESTION DE LA MEMOIRE CENTRALE

La mémoire centrale est l’organe de l’ordinateur qui stocke les programmes en cours d’exécution
ainsi que leurs données. C’est une mémoire volatile composée de mots-mémoire ayant chacun une
adresse. Ainsi donc, tout programme à exécuter doit au préalable être chargé en mémoire centrale.
Ses instructions seront ensuite traitées une à une par l’unité centrale de traitement ; les résultats des
traitements seront rangés dans la mémoire centrale.

Dans les systèmes actuels, la mémoire centrale est partagée entre plusieurs programmes de tailles
diverses. Le problème du système d’exploitation est donc de s’arranger, par différentes techniques, à
ce que toutes les demandes de chargement de programmes en mémoire centrale soient satisfaites.

I OBJECTIFS

Le programme, tel qu’il est développé par son concepteur, est une entité logique, c’est-à-dire une
suite d’instructions. Son chargement en mémoire centrale lui confère une représentation physique ;
celle-ci est liée aux contraintes de la mémoire physique. Les contraintes de la mémoire physique sont
d’une part celles relatives à l’organisation matérielle, d’autre part celles liées à la gestion de cette
mémoire physique.

I.1 ORGANISATION

Le système d’exploitation assure la fonction de structuration de la mémoire centrale. Celle-ci est


divisée en zones dont les tailles peuvent être identiques ou non selon les cas. Ces zones sont
composées de mots d’adresses consécutives. Chaque zone étant limitée, c’est-à-dire ayant une adresse
de début et une adresse de fin, le système d’exploitation doit garantir l’intégrité de ces zones, en
interdisant des accès non autorisés par des mécanismes de contrôle spécifiques.

Certains utilisateurs travaillant simultanément peuvent utiliser les mêmes programmes. Ainsi, le
contenu de certaines zones doit pouvoir être partagé, pour éviter la duplication des informations qui
causerait une occupation importante et inutile de la mémoire centrale.

I.2 GESTION

Chaque fois qu’une demande de chargement d’un programme est adressée au système d’exploitation,
celui-ci doit trouver de la place en mémoire centrale pour charger le programme. Pour pouvoir
satisfaire les différentes demandes, le système d’exploitation utilise des stratégies d’allocation qui
consistent à attribuer des zones mémoire. Il s’agit, en particulier, de trouver le meilleur espace
mémoire possible qu’il faut attribuer à un programme.

A la fin de son exécution, un programme doit libérer l’espace mémoire qu’il occupait. En outre,
lorsqu’il y a trop de demandes, le système d’exploitation peut être amené à sortir momentanément
certains programmes de la mémoire centrale pour les loger en mémoire secondaire. Il utilise pour cela
des stratégies de libération.

Les programmes exécutés par l’ordinateur n’ont pas tous la même taille ; à l’heure actuelle, la taille
des programmes croît de plus en plus et elle peut dépasser celle de la mémoire physique.

Le rôle du système d’exploitation est donc de fournir à l’utilisateur la possibilité de disposer de tout
l’espace mémoire qui lui est nécessaire, l’affranchissant ainsi des limitations imposées par la taille de
la mémoire centrale.
12
II- METHODES D’ALLOCATION

On distingue deux grands modes d’allocation d’espace mémoire : le mode d’allocation contiguë et le
mode d’allocation non contiguë.

II.1 MODE D’ALLOCATION CONTIGUË

Le mode d’allocation contiguë consiste à placer le programme à des adresses consécutives. L’espace
mémoire est divisé en plusieurs zones de tailles variables, mais d’un seul tenant, contenant chacune
un nombre entier de blocs et pouvant être soit vides, soit alloués. Le système d’exploitation maintient
en permanence une liste de zones libres. Quand une zone est allouée, elle est supprimée de la liste ;
lorsqu’elle est libérée, elle est ajoutée à la liste.

Le problème essentiel de ce mode d’organisation est de laisser inutilisées certaines zones de la


mémoire centrale. Le terme souvent utilisé est celui de fragmentation.

On perle de fragmentation interne lorsque l’espace alloué au programme n’est pas entièrement
occupé par celui-ci.

Fragmentation interne

Dans certains cas, on peut avoir plusieurs zones libres dont la somme est égale ou supérieure à la
taille du programme demandeur d’espace mémoire. Mais celles-ci étant placées à des adresses non
consécutives, il n’est pas possible de satisfaire la demande. On perle de fragmentation externe.
13

Fragmentation externe

II.2 MODE D’ALLOCATION NON CONTIGUË

Ce mode permet de fractionner le programme et de placer les fragments à des adresses dispersées.
Les blocs de mémoire dans lesquels sont placés les fragments de programme ne sont pas
nécessairement adjacents. Ceci évite des problèmes de réorganisation de la mémoire centrale posés
par le mode d’allocation contiguë. Mais, afin de retrouver les différents fragments de programme, le
système d’exploitation doit conserver plus d’informations. Ainsi, il doit tenir à jour des tables
indiquant les adresses où se trouvent les différents fragments.

Allocation non contiguë dans le système d’exploitation


14

III. ALLOCATION CONTIGUË EN MEMOIRE CENTRALE

Les méthodes d’allocation contiguë permettent de loger l’ensemble du programme dans une seule
zone de la mémoire centrale. L’organisation de la mémoire centrale varie selon qu’il s’agit d’un
système mono-programmé ou d’un système multiprogrammé. Il en est de même pour la politique
d’allocation car certains systèmes mono-programmés sont multi-utilisateurs.

III.1 SYSTEMES MONO-PROGRAMMES

Il s’agit des systèmes d’exploitation où, à chaque instant, un seul programme utilisateur est présent
en mémoire centrale. L’organisation, c’est-à-dire, la division de l’espace mémoire en zones, et la
gestion, c’est-à-dire l’occupation de l’espace par les programmes utilisateurs sont très simples.

La mémoire est divisée en deux zones :


- Une zone dite zone système qui contient le système d’exploitation ;
- Une zone utilisateur, dans laquelle un programme utilisateur peut être chargé.

Si le système d’exploitation occupe la zone allant de l’adresse 0 à l’adresse N, le programme


utilisateur aura à sa disposition l’espace allant de l’adresse N+1 à l’extrémité de la mémoire centrale.
L’adresse N est appelée adresse barrière. L’utilisateur ne peut accéder à la zone système. Ainsi donc,
chaque adresse fournie par l’utilisateur est comparée à l’adresse barrière ; si celle-ci fait référence à
la zone système, il se produit une interruption.

(Schéma)

Lorsque le système est mono-utilisateur, un premier utilisateur dispose de toutes les ressources de
l’ordinateur ; lorsqu’un autre utilisateur désire faire exécuter un programme, il doit attendre que le
premier ait terminé. Dans le cas d’un système multi-utilisateur, on gère simultanément plusieurs
programmes utilisateurs. Au départ, tous les programmes sont en mémoire secondaire, puis chacun
occupe à tour de rôle la mémoire centrale pendant une tranche de temps appelée quantum. La
libération de la mémoire centrale par le programme intervient à la fin du quantum, lors d’une
opération d’entrée-sortie ou en cas de terminaison normale du programme.

(Schéma)

III.2 SYSTEMES MULTIPROGRAMMES

Conçus pour augmenter le taux d’utilisation de la mémoire centrale, ils permettent à plusieurs
programmes de résider simultanément en mémoire centrale. La mémoire centrale est divisée en
plusieurs zones (partitions) dont une réservée au système d’exploitation. Chaque programme occupe
une zone. Deux techniques d’organisation sont utilisées : les partitions de taille fixe et les partitions
de taille variable.

III.2.1 Partitions de taille fixe

La mémoire centrale est découpée en partitions de tailles différentes mais fixes. Lorsqu’on alloue une
zone à un programme, celle-ci l’est entièrement pour ce programme. Les partitions étant fixées à
l’avance, il se pose un problème d’occupation de la mémoire centrale :
15

• Lorsque le programme n’occupe pas totalement la zone qui lui est attribuée, l’espace inoccupé
reste inoccupé pendant tout le temps que le programme réside en mémoire centrale. Il y a là
un gaspillage d’espace mémoire ;

• Si un programme demande un espace mémoire dont la taille est égale ou inférieure à la somme
des espaces inoccupés, celui-ci ne pourra être satisfait ; les programmes n’étant pas
relogeables.

La politique d’allocation des zones revêt donc une importance capitale. En ce qui concerne la
protection des zones, chaque adresse fournie par le programme est comparée aux adresses de début
et de fin de la zone afin d’éviter des accès à des zones non autorisées.

(Schéma)

III.2.2 Partitions de taille variable

Dans la méthode de partitions de taille variable, les zones sont créées au fur et à mesure des allocations
successives. Ainsi, lors du remplissage initial, les programmes sont chargés de façon à ne laisser
aucun espace entre eux.

Lorsqu’un programme termine son exécution, le système d’exploitation le sort de la mémoire


centrale, créant ainsi un trou. Après un certain nombre de sorties pour les mêmes raisons, on obtient
une mémoire émiettée. Le système procède alors à un compactage. Le compactage consiste à déplacer
certains programmes, c’est ce que l’on appelle la relocation ou réallocation ou translation
dynamique (dynamic relocation). La translation dynamique s’accompagne d’une modification
d’informations relatives au programme, en particulier l’adresse d’implantation et l’adresse supérieure
du programme. Le registre de base contient l’adresse de base tandis l’adresse supérieure est contenue
dans le registre borne. Ces deux registres sont mis à jour lors de la relocation. De nombreux
programmes étant logés en mémoire centrale, le système d’exploitation assure la protection des zones,
ceci grâce à un dispositif de vérification d’adresses. Si un programme fait référence à une zone non
autorisée, il se produit une interruption.

Lorsqu’il y a beaucoup de programmes en mémoire centrale et qu’il y en a d’autres en mémoire


secondaire qui demandent à être logés en mémoire centrale pour être exécutés, le système peut
procéder à un swapping, c’est-à-dire la sortie momentanée de certains programmes vers la mémoire
secondaire et leur remplacement par d’autres.

La méthode des partitions de taille variable, grâce à la relocation, offre un avantage certain par rapport
à la méthode des partitions de taille fixe, mais elle présente également quelques faiblesses :
- Le temps non négligeable passé à retasser la mémoire ;
- L’exigence d’allouer à un programme une zone d’un seul tenant, ce qui est souvent difficile.

IV ALLOCATION NON CONTIGUË EN MEMOIRE CENTRALE

Les méthodes d’allocation non contiguë ont été conçues pour pallier les défauts des méthodes
d’allocation contiguë. Cette fois, il faut :
- Dissocier complètement l’ensemble des adresses référencées par un processus en cours
d’exécution de l’ensemble des adresses physiques disponibles en mémoire centrale ;
- Créer, entre l’espace logique du processus et l’espace physique, une correspondance qui sera
réalisée dynamiquement pendant l’exécution de ce processus.
16
L’espace logique et l’espace physique sont divisés en zones ; la correspondance entre les zones
physiques et les zones logiques se fait à l’aide d’une table. Deux possibilités sont rencontrées :
- Dans la première, les zones sont de taille variable et sont appelées segments, on parle alors de
systèmes segmentés ;
- Dans la seconde, les zones sont toutes de même taille et sont appelées pages ; on parle de
systèmes paginés.

IV.1 LES SYSTEMES SEGMENTES

Les systèmes d’exploitation utilisant la segmentation constituent une amélioration des systèmes
à partitions variables. La segmentation consiste à diviser le programme en modules ou segments,
chaque segment correspondant à une entité logique (procédure, bloc de données, etc..)
indépendante des autres segments. Cette indépendance permet au système d’implanter un
segment n’importe où en mémoire centrale (espace libre suffisant) sans se soucier des autres
segments.

Le système d’exploitation charge en mémoire centrale les segments nécessaires l’exécution du


programme prêts à être utilisés par le CPU. C’est le système d’exploitation qui doit savoir où sont
stockés les différents segments. Pour cela, il organise et gère un ensemble de tables de segments
(segments tables), une table par job, contenant les adresses de chargement des segments de chaque
programme. Chaque segment est caractérisé par un nom (généralement un numéro pour faciliter
l’implantation) et une longueur.

(Schéma)

L’adresse logique est constituée d’un couple (s, d) où s est le numéro de segment et d le
déplacement (offset) à l’intérieur du segment. L’adresse physique est calculée à l’aide de la table
des segments. En effet, chaque entrée i de la table des segments contient l’adresse d’implantation
(AI) du segment i, encore appelée base et la longueur du segment, appelée limite. Le déplacement
d doit être compris entre o et la limite ; dans le cas contraire, lors d’une référence, une interruption
est générée.

Soit AI l’adresse d’implantation, m la longueur du segment et d le déplacement ; l’adresse


physique (AP) est calculée comme suit :
AP = AI + d, avec 0 ≤d  m
Si AP≥ (AI + m), il se produit une interruption.

(Schéma)

IV.2 LES SYSTEMES PAGINES

Les systèmes paginés sont une application du concept de mémoire virtuelle. L’idée de mémoire
virtuelle s’appuie sur trois aspects :
- La dissociation des adresses logiques (adresses virtuelles) et physique (adresses réelles) ;
- Le fonctionnement de l’espace logique d’un processus en blocs
- La non-contiguïté de l’allocation.

Le programme est donc construit dans un espace virtuel (qui n’existe pas) indépendamment de
l’espace réel qu’est la mémoire centrale. Les deux espaces pouvant être de tailles différentes, l’espace
virtuel peut donc être plus grand que l’espace réel. Ainsi à un instant donné, on ne peut avoir qu’une
partie du programme chargée en mémoire centrale. Le système d’exploitation tient à jour une table
de correspondance entre adresses logiques et adresses physique. Les deux espaces étant divisés en
17
zones de même taille, la conversion d’adresse se fait par simple remplacement de l’adresse
d’implantation logique par l’adresse d’implantation physique. Le déplacement est la même pour les
deux zones.

Toutes les zones n’étant pas présentes en même temps en mémoire centrale, la référence à une adresse
contenue dans une zone non chargée en mémoire centrale va provoquer le chargement de cette zone
(qui est en mémoire secondaire) en mémoire centrale, avec éventuellement, remplacement d’une autre
partie du programme qui était présente en mémoire centrale. On utilise pour cela des algorithmes de
choix et de remplacement.

(Schéma)

Le principe de la pagination est suivant : l’espace virtuel du programme est découpé en pages
(virtuelles) toutes de même taille (la taille est généralement une puissance de 2 (2 n). La mémoire
réelle est aussi divisée en pages (réelles) de même taille. Le programme étant stocké en mémoire
virtuelle, un mécanisme de gestion permettant un transfert de pages entre les deux mémoires est mis
en œuvre, grâce à une table de pages (une table par programme). Chaque entrée de la table contient
les informations relatives à une page. Il s’agit des informations suivantes :
- Un bit de présence qui vaut 1 si la page est présente en mémoire centrale et 0 sinon ;
- Un bit de protection (autorisation en lecture, écriture ou exécution) ;
- Un bit indicateur de modification (page modifiée/non modifiée) ;
- L’adresse en mémoire virtuelle ;
- L’adresse en mémoire réelle si la page est présente en mémoire centrale.

Le champ d’adresse est divisé en deux parties : l’une contient le numéro de page, l’autre contient la
position à l’intérieur de la page (offset). Le déplacement étant le même dans les deux pages, le passage
de l’adresse virtuelle à l’adresse réelle se fait par simple remplacement du numéro de la page virtuelle
par le numéro de la page réelle, ceci grâce à la table de pages.

(Schéma)

Lorsqu’une adresse référencée, (c’est –à-dire une page contenant cette adresse) est absente de la
mémoire centrale, on dit qu’il y a défaut de page (page default). Le système cherche alors sur disque
une copie de la page demandée, la charge en mémoire centrale et met à jour la table de pages. Cette
méthode qui consiste à charger une page si et seulement si elle est référencée est appelée pagination
à la demande (demand paging). Il existe une autre méthode de chargement de pages appelée
pagination anticipée qui consiste à charger les pages sans attendre un défaut de page.

Etant donné la différence de taille entre la mémoire virtuelle et la mémoire réelle, la nouvelle page à
charger peut remplacer un autre page déjà présente en mémoire centrale. Deux problèmes se posent
alors :
- Quelle page remplacer ?
- Que faire de la page à remplacer ?
En ce qui concerne le remplacement de pages, différents algorithmes de choix existent :
a) Random : le remplacement se fait de manière aléatoire ;
b) FIFO (ou PEPS = 1er entré, 1er sorti) c’est la première page chargée qui est remplacée ;
c) MRU = moins récemment utilisée (ou LRU = Least Recently Used) : on expulse la page
dont l’utilisation est la plus reculée dans le temps ;
d) MFU = moins fréquemment utilisée (LFU = Least Frequenlty used) : on remplace celle qui a
été le moins souvent utilisée pendant le dernier intervalle de temps ;
e) Algorithme mixte combinant les algorithmes cités.
18
La page à expulser, si elle a été modifiée, est recopiée en mémoire auxiliaire ; dans le cas contraire,
on ne fait rien.

V-UTILISATION DU CACHE

Pour réduire la différence de vitesse entre l’unité centrale de traitement et la mémoire centrale,
certains ordinateurs sont dotés d’une antémémoire ou mémoire cache (cache memory), une mémoire
plus rapide que la mémoire principale, rattachée au CPU. Ce qui permet d’augmenter les
performances.

Le CPU vient chercher les instructions dans le cache qui contient les instructions près (ou qui
viennent) d’être exécutées. La taille du cache est inférieure à celle de la mémoire principale. Celle-ci
est divisée en blocs de taille inférieure à celle d’une page (pour réduire le volume, donc le temps de
transfert entre le cache et la mémoire principale). Si l’adresse référencée est présente dans le cache,
son contenu est directement envoyé au CPU. Dans le cas contraire, on la recherche dans la mémoire
principale. Si elle y est présente, un transfert de bloc s’opère de la mémoire principale vers le cache.
Mais, en cas d’absence dans la mémoire principale, un transfert de page se fait entre la mémoire
virtuelle et la mémoire principale. Les algorithmes de remplacement des blocs sont les mêmes que
ceux des pages.

VI- PARTAGE DES DONNEES ET DU CODE

Dans les systèmes multiprogrammés, plusieurs programmes peuvent faire appel aux mêmes modules
ou utiliser les mêmes données. C’est le cas par exemple des bases de données (systèmes de
réservation, de banques, etc…), des compilateurs, des éditeurs de texte… La solution la plus simple
consisterait à dupliquer ces modules ou données pour chaque programme, ce qui a pour inconvénient,
l’occupation inutile de la mémoire centrale. C’est pourquoi les systèmes d’exploitation sont dotés de
mécanismes de gestion permettant le partage de données et modules en mémoire centrale.

VI.1 PARTAGE DE DONNEES

Si deux programmes utilisent la même donnée, le problème ne se pose pas lorsque celle-ci est
accessible uniquement en lecture. Par contre, si elle doit être modifiée par les deux programmes, il se
pose un problème dit celui de la section critique, c’est à-à-dire, comment faire pour que les deux
programmes ne puissent donner un résultat faux à la fin de leur exécution ?
Exemple : Programme P1 Programme P2
Lire A Lire A
A = A +1 A= A*2
Ecrire A Ecrire A
Au départ, A vaut 1

Dans un système à temps partagé, un programme peut démarrer avant la fin de l’exécution d’un autre.
Si P2 est exécuté après la fin de l’exécution de P1, à la fin A vaut 4. Mais s’il démarre avant la fin de
l’exécution de P1, le résultat sera 2 ; on aura donc un résultat faux. Ainsi, pour garantir un résultat
toujours correct, il faut pouvoir être certain que P2 ne démarre avant la fin de P1 ou inversement. Si
l’un démarre, l’autre doit être bloqué jusqu’à la fin de l’exécution de celui-ci. Ce problème est connu
sous le nom d’exclusion mutuelle.

VI.2 PARTAGE DU CODE

C’est le cas des routines d’accès aux fichiers, des routines d’entrées/sorties, des routines de calcul,
des compilateurs, éditeurs de textes, etc… qui peuvent être partagés entre différents programmes. On
19
a une seule copie de la routine qui est exécutée par chaque processus avec ses propres données. Le
CPU étant alloué pendant une tranche de temps à un processus, on peut, à un instant donné, avoir
plusieurs processus ayant exécuté une partie de la routine. Chacun d’eux a démarré l’exécution de la
routine avant la fin de l’exécution d’un autre processus. Pour obtenir un résultat comme si les
processus avaient exécuté à tour de rôle la routine, cette routine doit posséder une propriété
particulière : la réentrance.

Une procédure est réentrante si elle ne modifie ni son code, ni ses données (variables locales).
Généralement, on associe à chaque processus une pile dans laquelle on stocke les résultats
intermédiaires. Lorsqu’on interrompt le processus en cours, le changement de processus implique le
changement de pile, ceci permet de conserver les résultats du processus interrompu.
20

Chapitre III : LA GESTION DES FICHIERS ET MEMOIRES SECONDAIRES


Les mémoires secondaires sont des mémoires de grande capacité qui stockent des informations de
manière permanente. Les informations stockées dans ces mémoires le sont sous forme de fichiers. Il
s’agit des modules du système d’exploitation, des programmes d’application, des bibliothèques de
fonctions, des programmes et des données utilisateurs. Les problèmes qui sont posés sont ceux de
l’organisation et de la gestion de ces mémoires secondaires, afin de permettre un accès facile et une
manipulation aisée de ces informations. Au niveau du système d’exploitation, ces problèmes sont
confiés à un module particulier appelé système de gestion de fichiers (SGF)

En ce qui concerne la notion de fichier, on distingue le fichier logique qui présente l’organisation
telle que vue par l’utilisateur et le fichier physique qui représente la façon dont le fichier est
réellement implanté en mémoire secondaire. Le rôle du SGF est donc d’assurer la correspondance
entre ces deux représentations. Il doit en particulier prendre en charge :
- La gestion du support physique en masquant à l’utilisateur des détails de l’organisation
physique de ses fichiers ;

- La sécurité et la protection des fichiers, c'est-à-dire la garantie de leur intégrité en cas d’incident
ou de malveillance et le respect des règles d’utilisation fixées (droits d’accès, conditions de
partage, etc…)

I- FICHIERS LOGIQUES, COTE UTILISATEUR


Du point de vue de l’utilisateur, un fichier est une suite d’enregistrements logiques (logical records)
ou articles. Chaque article est structuré en rubriques (appelées champs). Tous les articles d’un même
fichier possèdent la même structure. Cette structure n’a de sens que pour l’utilisateur et elle est
indépendante de l’implantation du fichier en mémoire secondaire.

L’utilisateur dispose d’un minimum d’opérations manipulant les fichiers :


- Créer un fichier ;
- Ouvrir un fichier (en lecture ou en écriture) ;
- Fermer un fichier ;
- Détruire un fichier ;
- Pointer au début d’un fichier ;
- Éditer le contenu d’un fichier ;
- Copier un fichier dans un autre
- Renommer un fichier
- Fusionner des fichiers.

D’autres opérations permettent à l’utilisateur d’accéder aux informations contenues dans un fichier.
Il s’agit, en particulier, d’opérations sur les articles du fichier :

- Lire un article ;
- Écrire dans un article ;
- Modifier un article ;
- Insérer un article ;
- Détruire un article ;
- Retrouver un article.

Ainsi donc, les attentes de l’utilisateur vis-à-vis du système d’exploitation sont :


- Permettre la création et la destruction des fichiers ;
21
- Permettre l’ouverture et la fermeture des fichiers ainsi que des restrictions possibles
concernant possibles concernant l’ouverture (protection en lecture, en écriture, en exécution,
etc…)
- Permettre à l’utilisateur de donner un nom symbolique à un fichier et de l’appeler ensuite par
ce nom ;
- Assurer ou empêcher l’accès aux fichiers selon les directives de celui qui l’a créé ;
- Offrir des méthodes d’accès adaptées aux différentes applications (séquentiel, direct,
séquentiel-indexé) ;
- Permettre le partage des fichiers ;
- Protéger les fichiers contre toute défaillance du matériel ou du logiciel ;
- Faciliter la manipulation d’un fichier en supportant une variété d’opérations telles que la
subdivision, la concaténation, la reproduction, etc.

II-FICHIERS PHYSIQUES

C’est le système d’exploitation qui est responsable de l’organisation des fichiers, de leur stockage en
mémoire secondaire et de l’accès aux informations contenues dans les enregistrements. L’unité de
stockage manipulée par le système est l’enregistrement physique ou bloc. C’est la quantité
d’information transférée entre la mémoire principale et le support de stockage permanent. D’un point
de vue physique, le fichier est découpé en blocs de longueur fixe, correspondant généralement à la
taille d’un secteur (512, 1024, 2048 octets par exemple) ou à un multiple de cette taille. Suivant la
taille des articles et des blocs, le système peut grouper plusieurs articles dans un bloc (packing).

Le système de gestion de fichiers de fichiers réalise les opérations telles que :


- La gestion de l’espace disque ;
- Le choix et l’implantation d’un système de catalogue ;
- La mise en œuvre d’un système de sauvegarde acceptable pour assurer l’intégrité des
données ;
- La protection des fichiers contre les erreurs des utilisateurs et du système et envers les accès
non autorisés ;
- Etc…

II.1 GESTION ET ALLOCATION DES BLOCS

Le système voit un fichier comme une suite de blocs. Lorsque l’utilisateur lance l’opération de
création d’un fichier, le système doit trouver un espace (ensemble de blocs) libre pour accueillir le
fichier. Lorsqu’un fichier est détruit, les blocs qu’il occupait deviennent libres. L’ensemble des blocs
libres subit des variations fréquentes du fait de la création et de la destruction des fichiers. La gestion
de ces blocs libres peut se faire de différentes façons :

- Le vecteur de bits (bit map) : le système d’exploitation gère un vecteur contenant autant de
bits que de blocs dans le disque. Chaque bit associé à un bloc est positionné à 0 si ce bloc est
libre, à 1 s’il est alloué.

Exemple : considérons un disque comportant 16 blocs numérotés de 0 à 15, avec les blocs 2, 3, 4,
8, 9, 13,14 et 15 libres. Le vecteur correspondant est 1100011100111000.

- La liste chaînée : dans chaque bloc libre, on place le numéro du bloc suivant (pointeur).

(Schéma)
22
Logiquement, un fichier devrait occuper des blocs consécutifs (allocation contiguë) ; mais dans la
réalité, c’est une opération difficile à réaliser. C’est pourquoi, on utilise des méthodes d’allocation
non contiguës plus souples et plus faciles à réaliser :

- Allocation chaînée : les blocs constituant un fichier donné sont chaînés, chaque bloc
contenant le numéro du bloc suivant ;

- Allocation indexée : ce mode évite la dispersion des pointeurs en rassemblant, dans une table,
la liste des blocs utilisés par un fichier. Il est donc possible d’accéder directement à l’un
quelconque des blocs d’un fichier.

II- CORRESPONDANCE ENTRE FICHIERS LOGIQUES ET PHYSIQUES

Le système d’exploitation assure la correspondance entre le nom logique d’un fichier


(l’identificateur connu de l’utilisateur) et son implantation physique à l’aide d’une table appelée
catalogue ou répertoire de fichiers (file directory ou directory). Les informations qui figurent
dans le répertoire sont :

- Le nom du fichier (le nom logique que connaît l’utilisateur) ;


- Le type de fichier (binaire, caractère, exécutable…) ;
- L’adresse physique du fichier (ce peut être l’adresse du premier bloc ou une adresse de table
de pointeurs) ;
- La taille du fichier (en nombre d’octets ou blocs) ;
- La position courante de lecture/écriture (pointeur) ;
- Le caractère temporaire ou permanent du fichier ;
- Le mode de protection du fichier (lecture, écriture, exécution…)
- Les compteurs d’utilisation (nombre de lectures et d’écritures, nombre de processus ayant
ouvert le fichier, etc…) ;
- La date de création et celle de la dernière modification.

Le répertoire est géré dynamiquement par le système d’exploitation qui peut créer, insérer, détruire,
modifier, rechercher ou fournir une liste des entrées. Grâce au répertoire, il n’est pas possible de créer
un fichier déjà existant où détruire un fichier qui n’existe pas. Le lancement de ces opérations
nécessite au préalable une vérification dans le répertoire.

On peut concevoir un répertoire à un, deux, …, N niveaux.

Un répertoire organisé sur un niveau contient tous les noms de fichiers gérés par le système.

Sur deux niveaux, on a un répertoire système (Master file directory) qui contient les pointeurs vers
les répertoires utilisateurs.
(Schéma)

IV- MODES D’ACCES AUX FICHIERS

Les opérations sur les fichiers comprennent, d’une part, les opérations sur les fichiers (création,
destruction, etc.), d’autre part, les opérations sur les articles (lecture, écriture, modification, etc…).
23
En ce qui concerne les opérations de lecture, d’écriture et de modification, elles consistent à
rechercher d’abord le bloc qui contient l’article, puis à effectuer l’opération proprement dite.
L’accès aux informations est plus ou moins rapide suivant le mode. Les modes d’accès les plus
couramment utilisés sont :
- L’accès séquentiel : ce mode d’accès permet seulement de lire (ou d’écrire dans) l’article
pointé. L’accès à un article est toujours précédé de l’accès aux articles qui le précèdent. Le
mode d’accès séquentiel est un mode hérité de l’époque où l’implantation physique des
fichiers se faisait sur bande magnétique ;

- L’accès direct : l’article recherché est repéré par son numéro d’ordre, indépendamment des
autres ;

- L’accès séquentiel-indexé : ce mode permet d’accéder directement à un article, en utilisant


certains champs appelés clés. On utilise pour cela une table appelée table d’index. Chaque
entrée de la table contient une valeur de la clé et l’emplacement de l’article correspondant.

(Schéma)

V- ETUDE DE QUELQUES SYSTEMES DE FICHIERS

V.I NOTIONS PRELIMINAIRES

Tous les systèmes de fichiers consistent en une structure nécessaire au stockage et à la gestion de
données. Ils effectuent trois fonctions principales :
- Le suivi de l’espace alloué et libre ;
- La gestion des répertoires et noms de fichiers ;
- Le suivi de l’emplacement dans lequel les différentes parties de chaque fichier sont
physiquement stockées.

Outre ces principes de base, chaque système de fichiers a ses propres caractéristiques, souvent liées
au type de système d’exploitation et à la technologie employée. Avant d’étudier quelques-uns de ces
systèmes de fichiers, nous allons revenir sur quelques notions nécessaires à la compréhension du
fonctionnement d’un système de fichiers.

V.1.1 Formatage du disque dur

Le formatage est une opération qui consiste à organiser le disque dur de façon à le préparer à recevoir
les informations et à faciliter la recherche de celles-ci. On distingue le formatage physique et le
formatage logique.

Le formatage physique est la première étape. Il est normalement effectué par le fabricant. Il divise un
disque dur en éléments physiques de base, c’est-à-dire en pistes, secteurs et cylindres. Ces éléments
définissent la manière dont les données sont physiquement enregistrées et lues à partir du disque.
24
Le formatage logique place un système de fichiers sur le disque. Il peut être fait au moyen d’utilitaires
(FDISK, FORMAT par exemple, etc…). Avant que le disque soit logiquement formaté, il peut être
divisé en partitions.

V.1.2 Partitions

Une partition est une division du disque dur. Lors du formatage logique, on peut diviser le disque en
partitions (un disque a toujours au moins une partition). Il existe deux types de partitions : les
partitions principales et les partitions étendues. La division du disque en plusieurs partitions offre
une meilleure utilisation de l’espace disque et la possibilité d’installer plusieurs systèmes
d’exploitation sur un même disque.

Une partition principale peut contenir n’importe quel système d’exploitation, ainsi que des fichiers
(applications et données utilisateurs). Une partition principale est formatée logiquement pour utiliser
un système de fichiers compatible avec le système d’exploitation sur lequel il est installé.

Remarque : il y a, à un instant donné, une seule partition principale active.

Les partitions étendues ont été inventées pour contourner la limite imposée de quatre partitions. Une
partition étendue est une partition qui ne contient pas directement les informations, mais dans laquelle
on peut continuer à diviser l’espace disque en créant un nombre illimité de partitions logiques qui,
elles, contiendront les données.

(Schéma)

V.1.3 Amorçage

Lorsque l’on met l’ordinateur sous tension, ce sont les instructions contenues dans le BIOS qui sont
exécutées. Dans la dernière partie des instructions du BIOS, figure la routine d’amorçage. C’est cette
routine d’amorçage du BIOS qui tente de lancer le système d’exploitation en lisant l’enregistrement
d’amorçage du BIOS qui tente de lancer le système d’exploitation en lisant l’enregistrement
d’amorçage principal (MBR = Master Boot Record) à partir du premier secteur du premier disque
dur physique. Le MBR contient un programme d’amorçage principal et une table de partitions
décrivant les partitions du disque. Une fois le programme d’amorçage principal lu, le BIOS lui
transfère le contrôle. Celui-ci se charge ensuite d’examiner la table de partitions pour voir quelle
partition (principale) est active. Une fois cette partition active déterminée, le chargement du système
d’exploitation commence, celui-ci est suivi du démarrage du système. Ceci a lieu à partir de
l’enregistrement d’amorçage du premier secteur de la partition active.

Remarque : Certains systèmes d’exploitation peuvent être amorcés à partir d’une partition logique
(OS/2 par exemple).
25
V.2 PANORAMA

V.2.1 FAT (File Allocation Table)

Le système de fichiers FAT est celui qui est normalement utilisé par DOS et Windows 95/98. Il peut
être utilisé par Windows NT et OS/2. Le système FAT se caractérise par l’utilisation d’une table de
216 (65536) entrées maximum et de clusters (ensembles de secteurs physiques du disque,
généralement de 512 octets) qui représentent la plus petite unité de stockage de données. Ainsi, une
structure de données permet au système de gérer l’espace disque, les zones libres, occupées et leur
allocation à des fichiers ou répertoires. Lorsque le système de fichiers a besoin d’espace disque, il
s’alloue des clusters.

Le système FAT utilise un répertoire racine qui peut recevoir un nombre maximal d’entrées de
répertoires autorisées et qui doit se trouver en un endroit spécifique. Lorsque l’on crée un fichier ou
un sous-répertoire, les informations y relatives sont stockées dans le répertoire racine sous forme
d’entrée de répertoire. Ainsi, une entée de répertoire FAT contient les informations telles que le nom
et la taille du fichier, la date et l’heure à laquelle les dernières modifications ont été apportées, le
numéro du cluster de départ et les attributs du fichier (caché, système, etc.).

Le système FAT est un système de fichiers très mauvais en matière de sécurité. On ne peut pas faire
d’audit, pas de gestion des droits, mais la fonction UNDELETE est implantée.

Le système FAT (FAT 16) ne peut gérer qu’une partition de 2Go maximum. Pour une partition de
1Go, la taille du cluster est de 32Ko ; ainsi, un fichier de 100 octets utilise un cluster entier (31 Ko
perdus). Plus la taille du cluster d’une partition est grande, plus il y’a perte d’espace.

Le système FAT32 est le système de fichiers utilisé par les versions mises à jour de Windows 95 et
Windows 98 (et même OS/2 et LINUX). Il est basé sur des entrées des tables d’allocation de fichiers
de 32 bits plutôt que de 16 bits pour FAT 16. FAT32 est capable de gérer des volumes allant jusqu’à
2 Téraoctets ; il utilise des clusters plus petits (par ex, 4ko pour des volumes allant jusqu’à 8 Go).

V.2.2 NTFS (New Technology File System)

C’est un système de fichiers utilisé par Windows NT. Il n’est pas recommandé avec des disques de
capacité inférieure à 400 Mo car il utilise une grande quantité d’espace pour les structures du système.

Sur NTFS, la table de fichiers permanente (MFT= Master File Table) constitue la structure centrale.
Des copies multiples de la partie critique de la table de fichiers sont conservées de manière à se
protéger d’une perte de données éventuelle.

NTFS peut gérer jusqu’à 16 milliards de Go. Il utilise des clusters pour stocker des données, mais il
n’y a plus dépendance entre la taille des clusters et celle du volume. On peut spécifier des clusters de
taille inférieure à 512 octets. Ce qui réduit la quantité d’espace perdu, ainsi que la fragmentation des
fichiers.
26
NTFS gère la réparation automatique des secteurs défectueux qui sont détectés et signalés de manière
à ce qu’ils ne soient pas utilisés. En matière de sécurité, NTFS permet d’associer des droits (lecture,
écriture, effacement, etc.) à chaque fichier, groupe de fichiers ou répertoires, ainsi qu’à chaque
utilisateur. Il permet de faire des audits sur les fichiers ou répertoires, ce qui permet de savoir qui a
effectué une opération sur un fichier. NTFS possède également des fonctions de tolérance de pannes
et de RAID.

V.2.3 HPFS (High Performance File System)

C’est le système de fichiers utilisé par le système d’exploitation OS/2 d’IBM, HPFS trie les
répertoires sur la base des noms de fichiers et utilise une structure plus efficace pour organiser le
répertoire. Ce qui se traduit par un accès aux fichiers plus rapide.

Quant à l’utilisation de l’espace disque, HPFS attribue les données à des secteurs plutôt qu’à des
clusters. Pour conserver la trace des secteurs utilisés et ceux qui ne le sont pas, HPFS organise un
volume en bande de 8 Mo, avec une allocation de bitmaps de 2 Ko entre les bandes. Les bandes
améliorent la performance car les têtes de lecture/écriture n’ont pas à revenir à la piste zéro chaque
fois que le système d’exploitation a besoin d’accéder à des informations relatives à l’espace volume.

OS/2 reconnaît le système de fichiers FAT.

V.2.4 Autres systèmes de fichiers

a) Linux Ext2
Ce système de fichiers a été développé pour les systèmes d’exploitation Linux (version gratuite
d’UNIX). Il gère une taille de volume d’un maximum de 4 téraoctets.

b) NetWare

Ce système de fichiers a été spécialement conçu pour être utilisé avec les serveurs NetWare.
27
Chapitre IV LA GESTION DES ENTREES-SORTIES

Les opérations d’entrée/sortie permettent à l’ordinateur d’échange les informations avec l’extérieur.
Elles sont réalisées par des programmes inclus dans le système d’exploitation et qui constituent ce
qu’on appelle le système d’entrée/sortie. Le rôle de ce module est de faire face à un certain nombre
de problèmes liés aux opérations d’entrée/sortie tels que :
- La diversité fonctionnelle de unités périphériques (disque, imprimante, clavier, etc…) :
- la différence de vitesse entre les différentes unités ;
- La différence entre les méthodes d’accès aux unités
- la différence des conditions de partage de périphérique (le disque est partageable par plusieurs
processus alors que le terminal n’est partageable qu’entre processus d’un utilisateur, l’imprimante est
partageable dans le temps, etc. …) ;
- le contrôleur d’erreur ;
- la complexité des systèmes de liaison entre périphériques et unité centrale (DMA, canaux, bus ;
unités de commande, unités de télécommunication, etc.) ;
- la protection des utilisateurs ;
- la nécessité d’une indépendance de programmes vis à vis des unités périphériques.

Côté utilisateur, il s’agit d’entrées-sorties logiques (ou virtuelles) à l’aide de commande de haut
niveau telles que READ, WRITE, PRINT. Ces opérations, le système d’exploitation les transforme
en entrées-sorties physiques (ou réelles) car il est seule habilité à effectuer les opérations d’entrées-
sorties. Ces opérations sont effectuées en mode système, mode dans lequel on exécute des instructions
privilégiées (telles que sont les instructions d’entrée-sortie).

I- ENTREES-SORTIES PHYSIQUE
Les deux opérations de base à réaliser sont d’une part, de sélectionner et d’adresser individuellement
les périphériques d’entrée-sortie et, d’autre part, d’effectuer un transfert d’information, vers ou depuis
le périphérique.

La première de ces opérations est essentiellement effectuée au niveau du matériel ou des signaux de
contrôle, les adresses des périphériques et les données sont transmis sur des lignes.

Le second fait intervenir des éléments matériels et des modules du système. Parmi les méthodes
utilisées pour le transfert, on peut citer celles utilisant l’accès direct à la mémoire ou les canaux de
commande.
I.1 ACCES DIRECT A LA MEMOIRE

La technique d’accès direct à la mémoire consiste à transférer l’information, sans le concours de


l’unité centrale de traitement. Les paramètres du transfert sont zone du mémoire et la taille de la zone
de transfert. On utilise pour cela des circuits spéciaux de contrôle qui gèrent plusieurs registres. Il
s’agit des registres suivants :
- Un registre générant les adresses mémoire ;
- Un registre comptant le nombre de mots transférés ;
- Un registre contenant la commande issue du système, qui spécifie l’opération d’entrée-sortie
souhaitée.
28
Ces registres sont initialisés par programme, puis les circuits de contrôle les utilisent sans avoir
recours à l’unité centrale de traitement. Les unités plus complexes comme les disques peuvent
nécessiter d’autres registres.
Etant donné que l’unité centrale vient rechercher ou stocker les informations en mémoire centrale (il
Ya donc conflit d’accès), l’accès direct à la mémoire utilise la technique du vol de cycle (cycle
stealing).

I .2 CANAL DE COMMANDE

Sur des machines plus élaborées, les circuits de contrôle sont remplacés par un processeur autonome,
capable d’exécuter des programmes (avec toutefois un jeu restreint d’instructions). On appelle ce
processeur un canal de commande (command channel) et on parle de programme de canal. Les
programmes de canal sont rangés en mémoire centrale. Le système d’exploitation initialise une
opération d’entrée-sortie en voyant une commande spéciale au canal de commande,
qui lui indique où trouver le programme de canal et qui en lance l’exécution. L’exécution du
programme de canal et celle de l’entrée-sortie se poursuivent indépendamment de l’unité centrale de
traitement. Il faut noter que le canal de commande s’occupe également de la vérification de l’intégrité
des informations échangées.

III- NOTION DE PERIPHERIQUE D’ENTREE-SORTIE VIRTUELS

Les types de périphériques sont extrêmement nombreux. Ils se distinguent par la vitesse, le mode de
transfert, le type d’informations transférées, etc. Un type de périphérique existe en plusieurs modèles
qui peuvent être produits par des constructeurs différents. Comme on le voit, chaque périphérique a
ses propres particularités.

Pour résoudre le problème de la diversité des unités et les conséquences qui en découlent, le système
d’exploitation s’efforce de traiter les périphériques de la même manière. Pour cela les processus
utilisateurs ne doivent pas directement traiter avec les périphériques d’entrée/sortie réels, mais avec
des intermédiaires appelés périphérique d’entrée/sortie virtuels ou flots, une correspondance est
établie entre flots et périphériques réels. Une table de descripteur de flots indique pour chaque flot le
périphérique correspondant. Cette table indique également si les périphériques sont actuellement
alloués ou non.

Les traiteurs spécifiques aux différents périphériques sont assurés par des modules spécialisés appelés
pilotes ou conducteurs de périphériques (device driver). C’est dans ces modules que les
caractéristiques spécifiques de périphériques sont prises en compte.
Avec l’utilisation des périphériques d’entrée-sortie virtuels, du point de vue de l’utilisateur, il n’ya
aucune différence entre écrire sur un disque ou sur une imprimante.

III-CORRESPONDANCE ENTRE ENTREES-SORTIES LOGIQUES ET ENTREES-


SORTIES PHYSIQUES

Au niveau utilisateur on dispose d’un jeu d’instructions d’entrée/sortie virtuelles (READ, WRITE,
PRINT). Mais au niveau machine l’exécution de ces instructions d’entrée/sortie n’est assurée que par
le système d’exploitation ; c’est-à-dire l’exécution d’une entrée/sortie se fait par l’activation d’une
29
requête au superviseur (system call, supervisor call, SVC). Après la reconnaissance de l’appel au
superviseur, il y une interruption qui est générée. Il s’en suit alors un certain nombre d’opération :
- Reconnaissance de l’opération : non du flot, nature de l’opération, quantité d’informations à
transférer, la source et la destination du transfert.
- Consultation de la table de description de flots pour déterminer quel périphérique réel est concerné ;
test de la consistance des paramètres d’une part avec le type, d’autre part avec le contenu de
descripteur du périphérique.
- Consultation de la file d’attente associée au périphérique ; 3 cas possibles (utilisables, en attente ou
en travail). Dans le cas des systèmes multiprogrammés, il se peut que d’autres processus soient déjà
en attente du même périphérique ; le bloc de contrôle du processus est alors ajouté à la file d’attente
du périphérique.
- Si le périphérique est utilisable, il y activation du périphérique qui réalise effectivement l’opération,
(par accès direct à la mémoire ou programme de canal).
- Lorsque l’entrée sortie est terminée, le périphérique concerné génère une interruption, il s’en suit
l’exécution d’un traitant (handler).
- Vérification, par le traitant, de la terminaison correcte de l’opération d’entrée-sortie.

A chaque type de périphérique est associée une table appelée descripteur de périphérique qui décrit
les caractéristiques du périphérique. Si celui-ci comprend plusieurs unités (cas du contrôleur de
terminaux à plusieurs lignes), une table appelée descripteur d’unité sera associée à chaque unité.

Chaque demande d’entrée-sortie est transformée en un paquet d’informations (stocké dans un pool
mémoire) qui contient des informations telles que :
- L’adresse mémoire d’une zone tampon ;
- La longueur de l’entrée-sortie ;
- Le type de l’entrée-sortie (lecture ou écriture) ;
- L’adresse du programme d’un mot d’état destiné à recevoir le statut final de l’exécution de
l’opération ;
- Le numéro du drapeau que le système positionnera à la fin de l’opération ;
- En option, l’adresse d’une routine fournie par le programme que le système exécutera à la fin
de l’opération.
30

Chapitre V- L’ALLOCATION DU CPU

Le CPU est l’organe qui effectue des traitements dans l’ordinateur. A un instant donné, il ne peut
effectuer qu’un seul traitement. Ainsi donc, il ne peut y avoir, à un instant donné, qu’un seul processus
en exécution, quel que soit le nombre de processus sollicitant une exécution par le CPU. Seul est
exécuté le processus auquel le CPU est alloué ; les autres doivent attendre que le CPU leur soit alloué.
Le processus en exécution est choisi parmi plusieurs processus ; ce choix est effectué en fonction
d’une politique d’allocation qui tient compte d’un certain nombre d’éléments. De nombreux systèmes
d’exploitation ont été développés à travers le monde, chacun avec ses caractéristiques ; deux grandes
tendances se dégagent :

- Systèmes mono-tâches. Ils exécutent un processus jusqu’à la fin avant de passer à un autre. Il
s’agit en particulier de systèmes monoprogrammés (un seul programme chargé en mémoire
centrale) ;

- Systèmes multi-tâches. Ils gèrent plusieurs processus (ou tâches) à la fois, ceux-ci se partagent
alternativement le contrôle du CPU. Ce sont des systèmes multiprogrammés.

Remarque : les notions de mono-tâche et multi-tâche ne doivent pas être confondues avec celles de
mono-utilisateur et multi-utilisateur.

I-SYSTEMES MONO-TÂCHES

Un système mono-tâche gère un seul processus à la fois. Lorsque le système alloue le CPU au
processus, le CPU est entièrement à sa disposition jusqu’à la fin de son exécution. Il peut arriver, qu’à
un instant donné, le processus suspende momentanément son exécution, perdant ainsi le contrôle du
CPU, parce qu’il est en attente d’une ressource autre que le CPU (cas d’une entrée-sortie par
exemple), ce dernier ne sera pas alloué à un autre processus mais restera inactif. L’exécution
reprendra dès que le processus sera en possession de la ressource attendue. Ce n’est qu’à la fin de
l’exécution du processus en cours que le CPU sera alloué à un autre processus.

Ce type de système présente des inconvénients :


- Inactivité du CPU pendant que le processus attend une autre ressource ;
- Impossibilité de gérer plusieurs utilisateurs simultanément ;
- Pas de partage de ressources entre plusieurs processus.

Soit un processus P associé au programme PGM en exécution ; si le programme PGM contient des
instructions d’entrée-sortie, l’exécution des calculs et des entrées-sorties est donnée par le schéma
suivant :
(Schéma)

II-MULTIPROGRAMMATION SIMPLE

L’objectif de la multiprogrammation est le partage des ressources de l’ordinateur entre les différents
travaux en présence. Parmi ces ressources qui ont des vitesses très différentes, on peut citer le CPU.
L’idée est de ne pas laisser inactif pendant un long temps. Ainsi, lorsqu’un processus qui détient le
contrôle du CPU est en attente d’une autre ressource, on peut lui retirer ce contrôle et allouer le CPU
à un autre processus qui est en attente du CPU. On obtient ainsi un parallélisme entre l’utilisation du
CPU et celle d’une autre ressource.

En multiprogrammation simple, le processus qui prend le contrôle du CPU garde le contrôle jusqu’à
ce qu’un des événements suivants ait lieu :
31

- Exécution d’une entrée sortie ;


- Terminaison.

Lorsqu’un de ces événements se produit, le CPU est alloué à un autre processus. Dans le cas d’une
entrée sortie, le processus qui a perdu le contrôle du CPU reprendra le contrôle de celui-ci plus tard.

La multiprogrammation simple a défini trois états d’un processus :


- Le processus qui a le contrôle du CPU est dit « en exécution » (running) ou « élu » (curent) ;
- Celui qui est prêt à prendre le contrôle du CPU est dit « prêt » ou « éligible » (ready)
- Celui qui a perdu le contrôle du CPU pour faire une entrée-sortie est dit « bloqué » (blocked) ou
« en attente » (waiting). Il restera dans cet état jusqu’à la fin de l’entrée-sortie pour passer à
l’état prêt.

Le schéma suivant donne les transitions entre les différents états :

(Schéma)

Deux modules sont au centre de la multiprogrammation :


- Le planificateur (scheduler) qui ordonne les processus prêts dans une file d’attente ;
- L’allocateur (dispatcher) qui choisit le processus devant prendre le contrôle du CPU suivant
l’ordre établi par le planificateur.

III-SYSTEMES A TEMPS PARTAGE (TIME SHARING)

Dans les systèmes à temps partagé, une cause supplémentaire de perte de main s’ajoute : la tranche
de temps (time slice). Afin de ne pas pénaliser certains utilisateurs en laissant un seul processus
prendre le contrôle du CPU, l’allocateur répartit le temps CPU entre les différents processus. Ces
processus sont classés par ordre de priorité. Cette priorité est attribuée par le planificateur selon
l’urgence du traitement et les ressources requises ; elle est ensuite modifiée dynamiquement sur la
base de certains critères de choix entre deux exécutions partielles.

Ainsi donc, le processus perd la main dans les trois cas suivants :
- Terminaison normale ;
- Exécution d’une entrée-sortie ;
- Expiration du temps alloué.

Les états d’un processus sont toujours en exécution (ou élu ou actif), prêt (ou éligible) et bloqué (ou
en attente). Mais le schéma de transition des états est le suivant :

(Schéma)

Chaque processus pris en compte par le système s’accompagne d’un ensemble d’informations que
l’on appelle le contexte (ou environnement). Le contexte est rangé dans une structure appelée Bloc
de contrôle du processus (process control block ou BCP). Cette structure contient les informations
suivantes :
- L’état du processus ;
- Le numéro qui l’identifie ;
- La valeur du compteur ordinal ;
- Les valeurs des registres
- Des informations relatives à la quantité de mémoire allouée au processus et des pointeurs vers
cette mémoire ;
32

- Des informations quantitatives telles que le temps CPU utilisé, le temps restant autorisé ;
- Des informations concernant les opérations d’entrée-sortie du processus (périphériques alloués,
opérations en attente de complétion, fichiers ouverts…) ;
- Des informations concernant des files d’attente où figure le processus (périphériques alloués,
opérations en attente de complétion, fichiers ouverts…) ;
- Des informations concernant les files d’attente où figure le processus (numéros de priorité,
pointeur vers ces files…)

Le BCP est sauvegardé si le processus perd le contrôle du CPU, ce qui permet de reprendre
l’exécution du processus comme s’il n’avait pas été interrompu à la prise en main suivante du CPU.

IV-ALGORITHMES D’ORDONNANCEMENT

C’est l’allocateur qui est responsable de l’attribution du CPU aux différents processus. Le choix du
processus dépend de l’algorithme d’ordonnancement défini par les concepteurs du système
d’exploitation.

L’algorithme de choix utilise un certain nombre de paramètres pour prendre des décisions :

- L’état de chaque processus ;


- La priorité associée à chaque processus (de nombreux algorithmes utilisent les notions de
priorité de base et de priorité actuelle) ;
- La tranche de temps.

Deux concepts importants sont mis en œuvre dans l’algorithme de choix :


- Le concept d’événement significatif : un événement qui, lorsqu’il survient, provoque
obligatoirement l’exécution par le système de l’algorithme de choix (par ex fin d’E/S, horloge,
fin de tranche…) ;

- Le concept de préemption : lorsqu’un processus « important » passe dans l’état prêt, il faut
que l’algorithme décide si l’on arrête l’exécution du processus en cours (même s’il n’a pas
encore épuisé sa tranche) pour donner la préférence au processus « important » et dans quel
délai cette opération doit se faire.

Les algorithmes d’ordonnancement les plus connus sont :

a- La plus haute priorité d’abord

Les processus sont rangés par ordre croissant dans la liste des processus prêts. C’est le premier sur la
liste qui est choisi ; il garde le contrôle du CPU soit jusqu’à ce qu’il se termine, soit jusqu’à ce qu’il
se bloque lui-même, soit jusqu’à l’expiration de la tranche de temps. C’est le planificateur qui attribue
les priorités. Généralement chaque processus (ou classe de processus) a une priorité de base ; ensuite,
cette priorité est modifiée dynamiquement pour permettre à tous les processus de prendre le contrôle
du CPU.

Si le système met en œuvre la préemption, quand un processus de priorité supérieur à celle du


processus en cours entre dans la liste des processus prêts, il interrompt le processus en cours qui
retourne dans la liste des processus prêts, pour attribuer le CPU au processus de plus haute priorité.
Cela se fait lorsque l’entrée du processus de plus haute priorité est considérée comme un événement
significatif.
33
b- L’algorithme du premier entré, premier servi ou FCFS (First-come, First-served)

Les processus sont ordonnancés selon l’ordre d’arrivée. C’est le processus le plus ancien qui est
sélectionné pour prendre le contrôle du CPU.

c- L’algorithme du plus court temps de travail d’abord

Appelé également algorithme SJF (Shortest Job First), il sélectionne le processus dont le il suppose
que le temps de traitement sera le plus court. En cas d’égalité, l’ordonnancement FCFS peut être
utilisé. Le SJF présente l’inconvénient de favoriser les processus les plus courts. Cela peut conduire
à des situations de famine.

d- L’algorithme du plus court temps de travail restant d’abord

C’est la version préemptive du SJF ; on l’appelle SRT (Shorstest Remaining Time). Chaque fois
qu’un nouveau processus entre dans le système, l’ordonnanceur compare la valeur estimée de son
temps de traitement à celle du temps restant du processus en cours. Si le temps du processus arrivant
est inférieur, celui-ci prend le contrôle du CPU.

e- Le tourniquet

Cette méthode n’utilise pas les priorités. Ici, on prend le premier de la liste des processus prêts, on lui
donne une tranche de temps CPU puis on le met en queue de liste à l’expiration de la tranche de
temps.

(Schéma)

f- Les files d’attente rétroactives

On utilise N files d’attente avec les règles suivantes :


- Un processus qui entre dans le système est mis dans la première file ; en un mot, il reçoit la
plus haute priorité ;
- Après avoir reçu une tranche de temps CPU, il est dans la deuxième file ;
- Après chaque tranche reçue, le processus passe dans la file suivante ;
- L’algorithme choisit le premier processus de la première file non vide.

(Schéma)

V-QUELQUES VARIANTES DES SYSTEMES MULTI-TACHES

Avec l’avènement de la micro-informatique, on a vu la renaissance des systèmes mono utilisateurs.


Dans ces systèmes un seul utilisateur peut lancer plusieurs processus simultanément sur une même
machine. Bien que mono-utilisateurs, ces systèmes gèrent donc simultanément plusieurs processus.
Ils sont dits multi-tâches. Selon les conditions et/ou le mode d’alternance entre processus, on parle
de :
- Multi-tâche non préemptif ;
- Multi-tâche préemptif ;

Certains systèmes sont spécialisés dans la conduite d’applications particulières. Ce qui modifie
légèrement leurs structures et fonctionnement. On peut citer par exemple :
- Des systèmes temps réel ;
- Des systèmes transactionnels.
34

Chapitre VI L’ALLOCATION DES RESSOURCES ET L’UTILISATION D’UN


ORDINATEUR

I- ALLOCATION DES RESSOURCES

On peut définir une ressource comme un élément nécessaire pour mener à bien l’exécution d’un
processus.

Les ressources peuvent être matérielles (CPU, mémoire, dispositifs d’entrée-sortie, etc…) ou
logicielles (éditeurs, compilateurs, bibliothèques de fonctions, etc…). Ces ressources sont en quantité
limitée et doivent être partagées entre différents processus. Le système doit donc mettre en place des
stratégies de répartition et d’allocation afin de satisfaire les demandes formulées par les différents
processus. Ces stratégies tiennent compte de plusieurs critères. En effet, les ressources peuvent être
classées de différentes manières :

• Préemptibles et non préemptibles ;


• Partageables et non partageables ;
• Réutilisables et non réutilisables :

Les objectifs de la politique d’allocation des ressources sont principalement :

• Assurer une bonne utilisation des ressources. Comptabiliser et fournir des statistiques sur
l’exploitation des ressources principales ;
• Permettre à chaque processus d’obtenir des ressources nécessaires dans des limites de temps
raisonnables ;
• Exclure mutuellement les processus qui demandent une même ressource non partageable et
éviter les situations de blocage (attente sans fin d’une ressource par plusieurs processus).

Les opérations réalisées sur les ressources sont :


• Demander ;
• Allouer ;
• Utiliser ;
• Libérer.

Certaines ressources sont regroupées en classe de ressource. On appelle classe de ressource le couple
constitué d’une collection d’éléments regroupés sous un nom commun et de l’ensemble des
opérations que l’on peut leur appliquer. On peut par exemple parler de classe imprimante, classe
mémoire centrale, etc… Une demande de ressource peut se faire pour une classe ou une unité d’une
classe. Suivant le cas, la demande peut être satisfaite ou non. Pour cela, le système gère une table qui
permet d’indiquer si la ressource est disponible ou non, et, si elle est allouée, à quel processus. Pour
chaque ressource, il est indiqué la quantité totale gérée par le système et la quantité déjà utilisée.
Lorsqu’une demande ne peut être satisfaite, celle-ci (c’est-à-dire le BCP du processus) est rangée
dans la file d’attente associée à la ressource.

(Schéma)

Dans certains cas. On autorise une opération supplémentaire sur certaines ressources : la réquisition.
Lorsqu’une ressource est allouée et qu’une demande survient de la part d’un processus prioritaire,
cette ressource peut être retirée au processus en cours et attribuée au processus, Naturellement, l’état
de la ressource doit être sauvegardé en cas de réquisition, de sorte qu’elle puisse ensuite être rendue
au premier processus.
35

II- LE DEMARRAGE D’UN ORDINATEUR

Démarrage d’un ordinateur consiste en un ensemble d’opérations préalables avant toute utilisation
d’’un ordinateur. Parmi celles-ci, il y a le chargement du système d’exploitation en mémoire centrale.
Sans la présence du système d’exploitation (ou une partie de celui-ci) en mémoire centrale, il est
impossible d’utiliser l’ordinateur. L’opération de chargement a lieu soit à partir d’une ROM soit sur
un support externe (disque, CD, bande…). Le démarrage d’un micro-ordinateur ne nécessite
généralement pas de connaissances très poussées, tandis que celui d’un gros ordinateur est effectué
par une équipe spécialisée.

Lorsque l’on met l’ordinateur sous tension, ce sont les instructions intégrées dans le BIOS (Basic
Input/Output System) qui sont exécutées, c'est-à-dire, un programme qui contient les informations de
démarrage est exécuté par le CPU. Ce programme contient une routine qui permet de lancer le
système d’exploitation stocké dans un enregistrement spécifique d’un disque. Dans le BIOS, est
indiqué l’ordre dans lequel sont examinés les disques susceptibles d’héberger le système
d’exploitation. Un programme d’amorçage examine la table de partitions du disque pour déterminer
à partir de quelle partition (principale) peut-on démarrer le système d’exploitation. Une fois cette
partition déterminée, le chargement du système d’exploitation peut commencer ; celui-ci est suivi du
démarrage effectif du système. La dernière partie du démarrage consiste en l’exécution de certains
fichiers qui contiennent des informations de configuration (informations sur les quotas, les droits, le
nombre maximum d’utilisateurs simultanés, etc.

La fin du démarrage est indiquée par un message d’invitation (ou un menu particulier) que le système
affiche, ouvrant ainsi à l’utilisateur l’ensemble des services qu’il propose. C’est à partir de ce moment
que l’utilisateur peut dialoguer avec le système.

III- L’INTERFACE UTILISATEUR

L’interface utilisateur est le module du système d’exploitation qui permet le dialogue homme-
machine. Du côté de l’utilisateur on s’adresse au système en lançant une commande ; celle-ci est
ensuite examinée, interprétée puis exécutée. La réponse du système est l’affichage du résultat de
l’exécution de la commande. Une fois la commande exécutée, pour permettre à l’utilisateur de
soumettre une nouvelle commande, le système affiche un message invitant l’utilisateur à soumettre
de nouvelles requêtes.

Suivant les systèmes, l’interface utilisateur se présente sous l’une des deux formes suivantes :
l’interface basée sur le langage de commandes et l’interface graphique. Certains systèmes combinent
les deux.

III.1 LE LANGAGE DE COMMANDES

La nature du langage de commandes dépend du système concerné mais le langage de commande


possède toujours une syntaxe particulière qui permet au système de reconnaître sans ambiguïté les
ordres qui lui sont données. Les commandes ont la forme d’un mot-clé suivi de 0, un, deux ou
plusieurs paramètres. On distingue des commandes principales et des commandes cataloguées.

a) Commandes Principales

Il s’agit des commandes telles que :


36

• Des commandes de conduite de session : LOGON nom-utilisateur + mot de passe, LOGOUT,


LOGOFF ;
• Des commandes de communication entre utilisateurs : TELL, PHONE, MAIL (cas du système
multiposte) ;
• Des commandes de manipulation de fichiers : EDIT, COPY, TYPE, DELETE, ERASE,
RENAME ;
• Des commandes relatives au développement d’un programme : CC, COMPILE, LINK, RUN,
DEBUG, etc ;
• Des commandes de communication avec le système : DATE, TIME, SYSTEM ;
• Des commandes de manipulation de supports : MOUNT, DISMOUNT, ALLOC, FREE… ;

b) Commandes cataloguées

Pour éviter d’entrer toujours les mêmes commandes, il est possible de grouper un ensemble de
commandes en leur donnant un nom.

Exemple : on peut remplacer la séquence COMPILE, LINK, LOAD, RUN par EXEC.

III.2 L’INTERFACE GRAPHIQUE

Jusqu’au début des années 80, toutes les interfaces utilisateurs étaient basées sur des langages de
commandes où pour chaque action à effectuer, l’utilisateur devait connaître le nom de la commande
et la taper sur un clavier. A partir de travaux effectués dans les laboratoires de XEROX Park, un
nouveau type d’interface utilisateur est né : celui des interfaces graphiques (GUI : Graphical User
Inter), basés sur l’utilisation d’un écran graphique. Ainsi, de nouveaux concepts sont apparus, les
principaux étant ce de fenêtres, d’icônes, de menus déroulants, de souris. Etc… L’utilisateur n’est
plus obligé de connaître le nom d’une commande ou de la taper car celle-ci est proposée dans un
menu ; il ne lui reste plus qu’à la choisir pour que celle-ci soit exécutée par le système.

IV- LA SOUMISSION ET LA GETION DES TRAVAUX

III.1 DEUX MODES DE SOUMISSION DES TRAVAUX

On distingue deux modes d’exécution des travaux : le mode conversationnel et le mode différé.

a) Le mode conversationnel

C’est généralement le mode réservé pour des travaux courts ou des mises au point des programmes.
L’utilisateur lance un travail (commande par commande) et attend une réponse immédiate à chaque
commande. Ce mode de soumission est adapté au système à temps partagé.

b) Le mode différé

Appelé généralement batch (par abus de langage), ce mode est réservé aux gros travaux de production
dont le résultat n’est pas attendu dans l’immédiat ; ce qui permet d’optimiser la charge de la machine.
C’est le système qui choisit le meilleur moment de lancement du travail.

Le travail (job) à soumettre est préparé complètement à l’avance sous forme d’une suite d’étapes
distinctes, chaque étape correspondant à une action globale à réaliser. Le dialogue avec l’utilisateur
étant coupé dès la soumission du travail, il importe donc à l’utilisateur de spécifier, dans le fichier de
commandes, toutes les informations nécessaires à l’exécution du travail.
37
III.2 LA GESTION DES TRAVAUX

Les travaux soumis au système peuvent l’être suivant les deux modes décrits ci-dessus. Cette
soumission s’accompagne d’un certain nombre d’éléments et se déroule en plusieurs étapes.
Un travail passe par les étapes suivantes : l’introduction, la planification, l’exécution et la sortie.

L’étape d’introduction a pour but d’attribuer un numéro (identification) au job.

L’étape de planification (scheduling) a pour rôle de planifier les jobs en fonction de divers
paramètres :
• Les classes de travaux et leurs priorités de planification (chaque classe possède une priorité
vis-à-vis des autres classes) ;
• Le nombre de travaux possibles dans le système.

Le planificateur peut sélectionner un travail pour le soumettre à l’exécution si :


• Le travail est à l’état de planification et si le nombre de travaux possibles général dans le
système n’est pas atteint ;
• La classe à laquelle appartient le travail est éligible ;
• Le nombre de travaux de cette classe en cours d’exécution est inférieur au nombre maximum
autorisé de cette classe ;
• Sa priorité est supérieure à celle des autres travaux.

NB : les éléments (critères de sélection) que l’on vient de citer peuvent être modifiés par un opérateur.

Une fois le job sélectionné, c’est l’étape d’exécution qui commence. Au cours de cette étape le
système va :
• Affecter les ressources nécessaires (mémoires, fichiers, etc…) ; certaines ressources peuvent
être explicitement déclarées lors de la soumission ou implicitement consommées par le
système ;
• Charger les modules du programme ;
• Exécuter le travail en concurrence avec les autres ;
• Libérer les ressources à la fin de l’exécution.

La dernière étape est la sortie où la fin de l’exécution est signalée et les fichiers de résultats sont
imprimés.

Remarque : Le passage dans les différentes étapes ci-dessus décrit est celui d’un déroulement
normal. En effet, après s’être introduit dans le système, un travail peut être bloqué par l’opérateur ou
un autre travail, ce qui le prive d’une sélection éventuelle. En phase d’exécution, un travail peut être
temporairement suspendu par l’opérateur ou le système. Ainsi, son exécution ne reprendra qu’une
fois cette suspension levée

Vous aimerez peut-être aussi