Vous êtes sur la page 1sur 175

SYSTÈME D'EXPLOITATION

M. Gatien KAMGA FOSSOUO


Enseignant chercheur
: gatienfk@gmail.com
: +237 699365545 1
SOMMAIRE
• Chapitre 01: Généralités sur les systèmes
d’exploitations
• Chapitre 02: Gestion des processus
• Chapitre 03: Gestion des mémoires
• Chapitre 04: Systèmes de gestion des fichiers

2
Chapitre 01: Généralités sur les
systèmes d’exploitations
PLAN DU COURS
• Introduction à L’Informatique
• Évolution des ordinateurs et des systèmes d’exploitation
• Architectures matérielles des ordinateurs
• La nécessité d’un système d’exploitation
• Les rôles du système d’exploitation
• Les Caractéristiques du système d’exploitation
• Les composants d’un système d’exploitation
• Les différents types d’architectures des systèmes
d’exploitation

3
C’est quoi l’informatique?

• Traitement automatique de l’information

4
Évolution des ordinateurs et des systèmes
d’exploitation

Les origines et
les mythes
(16xx–1940)

• FIGURE – La pascaline et une de ses évolutions, calculatrice inventée par Pascal.


• Les ouvrages sur l’informatique situent souvent l’origine des ordinateurs au XVIIe ou
au XVIIIe siècle en faisant référence à Blaise Pascal ou à Charles Babbage.

5
Évolution des ordinateurs et des systèmes
d’exploitation
La représentation binaire (Leibniz, 1703)
En 1703, Leibniz invente l'arithmétique binaire c'est à dire un système de calcul où chaque
nombre peut être écrit avec des 0 et des 1, c'est aujourd'hui encore le système utilisé par les
ordinateurs pour traiter les informations

Les « codes de hacker » vus dans les films reflètent la


manière dont un ordinateur code les informations 6
Évolution des ordinateurs et des systèmes
d’exploitation
Automatisation des machines (Jacquard, Babbage, Lovelace, XIXe siècle)

Cartes de la machine de
BabbageInformations

En 1801, Jacquard invente un métier à tisser qui utilise des cartes perforées (avec des trous
placés à des endroits précis) pour faire fonctionner un métier à tisser. Il s'agit du premier
système mécanique programmable.
En 1836, Babbage invente une machine utilisant les cartes perforées du métier Jacquard pour
faire des calculs de façon séquentielle (les uns après les autres).
En 1843, Ada Lovelace écrit le premier programme informatique capable de fonctionner sur
cette machine. 7
Évolution des ordinateurs et des systèmes
d’exploitation
Enjeux militaires (Gödel, Turing, seconde guerre mondiale)
Pendant la Seconde Guerre Mondiale, Alan Turing met au point la bombe, un ordinateur
mécanique capable de décrypter les messages secrets des Allemands chiffrés grâce à la
machine Enigma.
Durant cette même période les travaux académiques de Kurt Gödel, Alan Turing, et Alonzo
Church initient les bases fondamentales de l'informatique.

Une Bombe britannique 8


Évolution des ordinateurs et des systèmes
d’exploitation
• FIGURE – Alan Turing
(1912-1954) pose les
bases fondamentales de
l’informatique théorique
et s’interroge sur la «
calculabilité » des
algorithmes. En
particulier, il cherche à
déterminer si tout ce qui
est calculable
humainement peut être
calculé par ordinateur et
réciproquement.
L’application directe de
ses travaux lui
permettront de casser le
code de chiffrement
utilisé par les allemands
pendant la Seconde
Guerre mondiale (la
machine Enigma).
9
Évolution des ordinateurs et des systèmes
d’exploitation
La préhistoire
(1940–1955)

• FIGURE – The tabulating machine, utilisée pour le recensement des USA à la fin du XIXe
siècle. Son inventeur (Hermann Hollerith) fonda pour l’occasion l’entreprise « Tabulating
Machine Corporation », devenue en 1911 « Computing Tabulating Recording
Corporation », puis en 1924 « International Business Machines Corp » (plus connue sous
le nom d’IBM). 10
Évolution des ordinateurs et des systèmes
d’exploitation
ENIAC (1946)
Electronic Numerical Integrator Analyser and computer

FIGURE – John von Neumann (1903-1957),


le père de l’informatique moderne. Les • Poids 30 tonnes, Surface 72 m2, 330 multiplication/s
concepts édictés par von Neumann dans Le premier ordinateur fut construit en Pennsylvanie en 1946 et
permettait d’effectuer des calculs de tirs d’artillerie. Il utilisait 18000
les années 40 continuent aujourd’hui de tubes à vide et était absolument gigantesque : 30 m de long, 2,80 m de
régir la conception des ordinateurs. haut et 3 m de large! Doté d’une mémoire de 20 mots de 10 chiffres, il
était capable d’effectuer 5000 additions ou 350 multiplications par 11
seconde.
Évolution des ordinateurs et des systèmes
d’exploitation
Les ordinateurs à transistor (1955–1965)

D’autres ordinateurs ont vu le jour sur le même principe jusqu’en


1959, mais ils ont rapidement intégré des fonctionnalités
indispensables comme les mémoires, les langages de programmation
de type assembleur ou l’utilisation de cartes perforées pour stocker les
programmes.

FIGURE – EDVAC (Electronic Discrete


VAriable Computer), successeur d’ENIAC,
est indéniablement un ordinateur (et non FIGURE – UNIVAC (UNIVersal Automatic Computer)
un calculateur). construit en 1951. UNIVAC était suffisamment fiable et
suffisamment abordable pour être commercialisé. 12
Évolution des ordinateurs et des systèmes
d’exploitation
Les circuits intégrés (1965–1980)

Le traitement hors-ligne des entrées / sorties entraîna le


développement de deux gammes d’ordinateurs différentes : d’une
part, des gros ordinateurs très coûteux spécialisés dans les calculs
et, d’autre part, des petits ordinateurs beaucoup moins chers
spécialisés dans les entrées / sorties. La première gamme était
essentiellement utilisée par l’armée, les universités ou la
météorologie nationale. La seconde gamme était utilisée par les
banques, les assureurs et les grandes administrations.

13
Évolution des ordinateurs et des systèmes
d’exploitation
Course à la puissance de calculs (années 1970)

Les années 1970 signent le


début des super-
calculateurs qui ont été
développés pour réaliser des
simulations et des calculs
haute performance. L'un des
premiers ordinateurs de ce type
est le Cray-1 développé en
1976, capable de réaliser 150
millions d'opérations par
seconde, vendu au prix de 5
millions de dollars.
Cray-1
14
Évolution des ordinateurs et des systèmes
d’exploitation
Micro-informatique : vers la miniaturisation et la popularisation des ordinateurs
•Le Micral, conçu en 1973 par un ingénieur français était un ordinateur miniature, aux
dimensions et poids très réduits pour l'époque. C'est un des premiers micro-ordinateur.
D'autres modèles de micro-ordinateurs sont créés dans les années qui suivent, dont l'Apple II
en 1977 qui fut un succès commercial.

15
Évolution des ordinateurs et des systèmes
d’exploitation
L’informatique moderne (1980–1995)

Le MIT, les laboratoires Bell et la compagnie General Electrics décidèrent


de construire une machine sur laquelle pourraient se connecter des
centaines d’utilisateurs à la fois. Le système d’exploitation de cette
machine s’appelait MULTICS (MULTiplexed Information and Computing
Service). Il comportait des innovations intéressantes et intégrait
l’essentiel des services assurés jusqu’alors par l’ensemble des systèmes
d’exploitation. Malheureusement, le projet MULTICS était trop
ambitieux et fut abandonné.
Entre temps, les « mini-ordinateurs » avaient vu le jour : le premier de
ces ordinateurs était le DEC PDP-1, né en 1961, qui pour 120 000 dollars
offrait une capacité de 4096 mots de 8 bits. Cet ordinateur remporta un
franc succès et DEC produisit d’autres modèles, tous incompatibles
entre eux, ce qui permit de faire les meilleurs choix technologiques pour
chaque génération. Parmi ces ordinateurs, le PDP-7 et le PDP-11 sont les
plus connus.
FIGURE – Les « mini-ordinateurs » Dec PDP-1 et16PDP-7.
Évolution des ordinateurs et des systèmes
d’exploitation
Les ordinateurs personnels & Les systèmes d’exploitation
d’aujourd’hui
Les ordinateurs personnels datent du début des années 1980. On
parle parfois de micro-ordinateurs, mais cette considération est
aujourd’hui dépassée : la taille d’un ordinateur n’est pas proportionnelle
à sa puissance. Il est d’ailleurs difficile de distinguer de nos jours un
ordinateur personnel d’un ordinateur professionnel.
Les ordinateurs personnels sont naturellement groupés en deux
catégories : les PC et les Macintosh. L’origine de cette distinction n’est
pas déterminée et, une fois de plus, il devient aujourd’hui très difficile
de distinguer un PC d’un Mac.
MS-DOS et Unix
Les deux systèmes d’exploitation qui se sont propagés pendant cette période sont
MS-DOS et Unix. Une fois de plus, ces deux systèmes représentent les deux FIGURE – La Thinking Machine contenait 65536 processeurs
extrêmes des systèmes d’exploitation : la commodité contre l’efficacité. répartis dans un hypercube, à savoir les processeurs étaient à la
« même distance » les uns des autres, par le biais d’un réseau de
MS-DOS est un système rudimentaire très facile à utiliser. Unix est un système routage inter-processeurs. Elle pouvait toutefois être utilisée en
complexe et redoutablement efficace, mais de prime abord parfois rude. Peu à mode asynchrone pour simuler des cas réels tels que les grands
peu, MS-DOS s’est rapproché d’Unix et Unix a fait des efforts pour devenir plus réseaux électriques. 17
Évolution des ordinateurs et des systèmes
d’exploitation
•Le premier micro-ordinateur avec une souris et une interface
graphique est le Macintosh de Apple lancé en 1984. L'informatique se
popularise pour devenir une informatique grand public et les
ordinateurs deviennent des produits destinés aux foyers familiaux.
•Les années 2000, voit une miniaturisation encore plus grande et une
utilisation toujours plus nomade de l'ordinateur avec les ordinateurs
portables. Un changement s'opère avec l'arrivée du smartphone qui
transforme le téléphone en ordinateur et permet l'accès à des services
numériques depuis un appareil qui tient dans une poche.

Des premiers micro-ordinateurs aux smartphones


18
Qu’est ce qu’un ordinateur ?
• Le mot « ordinateur » fut introduit par
IBM France en 1955
• Il veut dire: « ordonnateur » : celui qui
met en ordre
• Mot Ordinant: utilisé dans l'église
catholique
• Propose encore Ordinatrice électronique

19
caractéristiques fondamentales nécessaires
pour être considérées comme un ordinateur
• qu'il soit électronique,
• numérique (au lieu d'analogique),
• qu'il soit programmable,
• qu'il puisse exécuter les quatre opérations
élémentaires (addition, soustraction,
multiplication, division)
• qu'il puisse exécuter des programmes
enregistrés en mémoire.

20
Exemples d’ordinateur

21
Architecture matérielle de
l’ordinateur
Imitation du monde
naturel

Imitation du monde naturel

22
Processeur R.A.M: La
mémoire Vive
• Le composant qui
exécute les • Random Access Memory
programmes • R.A.M:Mémoire Volatile
• En anglais « CPU »

23
Disque Dur Chargement des données

• Mémoire de stockage permanente


(magnétique)
• Grande Capacité

24
Comment introduire et exploiter les résultats

Support: Carte mère

25
Périphériques
Exemples de Périphériques

26
Le langage de Langage de l’ordinateur et langage de l’utilisateur

l’ordinateur:
Langage binaire

27
Intermédiaire entre
ordinateur et utilisateur Programmes
une suite d’opérations prédéterminées destinées à être
exécutées de manière automatique par un appareil
informatique en vue d’effectuer des travaux, des calculs
arithmétiques ou logiques.

28
Intermédiaire entre La nécessité d’un SE
Deux besoins majeurs :
ordinateur et
utilisateur • Point de vue utilisateur
 Comment un utilisateur (ou plusieurs) peut
exploiter les ressources matérielles.
 Trouver des mécanismes pour optimiser
l’utilisation du matériels (facilité, rapidité,
partage,…)
• Point de vue système
Comment exploiter d’une manière optimale les
ressources matérielles pour améliorer leur
fonctionnement.
Trouver des mécanismes pour gérer efficacement
les ressources matérielles (mémoires centrales,
disque dur, temps processeur, …) 29
Système d’exploitation:
un élément du système informatique

Utilisateur 1 Utilisateur 2 Utilisateur N

Compilateur Editeur Base de données

Applications et Logiciels

Système d’exploitation

Matériel

30
Définition d'un SE ? ? ?
• Le terme « système d'exploitation » couvre un grand nombre de fonctionnalités
Wikipedia:
Une grande diversité d'architecture d'équipement ayant besoin d'un SE (des supercalculateurs au
smartphones) Le système d'exploitation (SE,
en anglais Operating System
• Une grande évolution du matériel informatique ou OS) est un ensemble de
puissance des équipements en constante augmentations émergence de nouvelles fonctionnalités/besoins programmes responsables de

• Il n'y a pas une définition consensuelle


la liaison entre les ressources
matérielles d'un ordinateur et
les applications de l'utilisateur
Selon Prof. Avi Silberschatz :« we have no completely adequate definition of an
(traitement de texte, jeu
operating system »
vidéo, …). Il fournit aux

• Est-ce qu’on peut lister les composants d'un SE ?


programmes applicatifs des
points d'entrée génériques
« we have no universally accepted definition of what is part of the operating pour les périphériques
system »
• Une vision simpliste :
« the operating system is the one program running at all times on the computer »
31
Le rôle du SE en tant que Machine virtuelle

• Le système d’exploitation correspond à « l’interface » entre


Les rôles du SE les applications et le matériel.
• De ce point de vue le système d’exploitation est
1. le rôle du système d’exploitation en assimilé à une machine étendue ou virtuelle plus
facile à programmer ou à utiliser que le matériel :
tant que machine étendue (ou «  Un programmeur doit se concentrer sur les fonctionnalités
machine virtuelle »), de son logiciel et non pas sur le fonctionnement du
matériel.
2. Le rôle du système d’exploitation en  Un utilisateur peut aussi manipuler un système
tant que gestionnaire de ressources. d’exploitation, sans pour autant avoir à créer un
programme ou connaitre le matériel. (masquer la
complexité du matériel).

Exemple du rôle du SE en tant que Machine virtuelle

• Sauvegarde d’un fichier sur disque


Le disque est composé de plusieurs plateaux Le plateau est
composé de secteurs et de pistes
• Comment l’utilisateur peut chercher une adresse vide, un
espace disque nécessaires, etc.. • Comment faire tourner
32
la tête de lecture du disque
Le rôle du SE en tant que • Le Système d’Exploitation doit assurer
gestionnaire de ressources – Le partage des ressources.
– La protection de l'accès aux ressources.
Les différents composants d’un ordinateur doivent
coopérer et partager des ressources.
Dans cette optique le travail d’un système
d’exploitation consiste à :
• Ordonnancer
• Contrôler l’allocation des ressources (processeurs,
mémoires, périphériques E/S…) entre les différents
programmes qui y font appel.
• Pour chacune des ressources d’un ordinateur, le
système d’exploitation doit :
– connaître à tout moment l’utilisateur de la ressource,
– en accorder l’usage de manière équitable,
– éviter les conflits d’accès entre les différents programmes ou
utilisateurs. 33
Exemple du rôle du SE comme étant
gestionnaires de ressources
• Trois programmes d’impression sur la même Edition
imprimante. Fic1 SPOOL
- Désordre total : Les premières lignes imprimées Impression
pourraient provenir du programme 1, les suivantes du
programme 2, puis du programme 3 et ainsi de suite.
Fic2 Fic1
Edition
Fic2
• Comment éviter ce problème ? Imprimante
- Système d'exploitation peut éviter ce chaos potentiel
en transférant les résultats à imprimer dans un fichier
tampon sur le disque. Lorsqu'une impression se
termine, le système d'exploitation peut alors imprimer
un des fichiers se trouvant dans le tampon.

34
Les taches(de base) d’un OS
1. La gestion des processus Autres Tâches du OS
– qui correspondent à l’exécution des programmes. • Les réseaux d’ordinateurs
2. La gestion de la mémoire – avec les protocoles de
– qui permet de gérer les transferts entre les mémoires communication, d’interconnexion et
principales et secondaires. d’application.

3. Le système de fichiers • Les systèmes répartis


– qui offre à l’utilisateur une vision homogène et structurée – avec les protocoles d’appels de
des données et des ressources : disques, périphériques. procédures à distance (RPC) – ou les
objets distribués.
4. Les entrées-sorties
– qui correspondent aux mécanismes qu’utilisent les • Les systèmes de fenêtrage graphiques, … etc.
processus pour communiquer avec l’extérieur.

35
Caractéristiques des Systèmes d’Exploitation

Systèmes multi/mono Tâches Systèmes multi/mono utilisateur

• Multiutilisateurs c’est la capacité à pouvoir


• Un système d'exploitation est dit «multi-tâches» (en
gérer un panel d'utilisateurs utilisant
anglais multithreaded) lorsque plusieurs «tâches»
simultanément les mêmes ressources
(processus) peuvent être exécutées simultanément.
matérielles.
Par exemple effectuer une compilation et consulter
• Un système multiutilisateurs est capable
le fichier source du programme correspondant.
d'exécuter de façon concurrente et
• Un système est dit préemptif lorsqu'il possède un indépendante des applications appartenant à
ordonnanceur (planificateur), qui répartit, selon des plusieurs utilisateurs.
critères de priorité, le temps machine entre les • Concurrente signifie que les applications
différents processus qui en font la demande. peuvent être actives au même moment et se
disputer l'accès à différentes ressources comme
le processeur, la mémoire, les disques durs...
• Indépendante signifie que chaque application
Remarque: Un système multiutilisateurs est nécessairement peut réaliser son travail sans se préoccuper de
multitâches mais la réciproque est fausse ce que font les applications des autres
utilisateurs. 36
Systèmes multi/mono processeurs
• Systèmes monoprocesseur (temps partagé
ou multiprogrammation)
Ressource processeur unique : Il a fallu développer un
mécanisme de gestion des processus pour offrir un (pseudo)
parallélisme à l'utilisateur : c'est la multiprogrammation;
Multiprogrammation :il s'agit d'une commutation rapide
entre les différents processus pour donner l'illusion d'un
parallélisme.

• Systèmes multiprocesseurs (parallélisme) :


 SIMD (Single Instruction Multiple Data) : Tous les processeurs
exécutent les mêmes instructions mais sur des données
différentes.
 MIMD (Multiple Instructions Multiple Data) : Chaque
processeur et complètement indépendant des autres et
exécute des instructions sur des données différentes.
 Pipeline : Les différentes unités d'exécution sont mises en
chaîne et font chacune partie du traitement à effectuer.
37
Comparaison des systèmes
d’exploitation

38
Composition du système
d’exploitation

39
• Au lancement:
Noyau (kernel) – Boot: le programme qui initialise
Le noyau assure ces fonctionnalités : l’ordinateur
– gestion des périphériques (au moyen de pilotes) – Permet aux premiers services
– gestion des files d'exécution (aussi nommée d’accéder aux applications système
processus) : : gestion de la mémoire, accès aux
• attribution de la mémoire à chaque processus disques durs et accès aux
• ordonnancement des processus (répartition du périphériques
temps d'exécution sur le ou les processeurs) • Mémoire centrale (vive):
• synchronisation et communication entre
répartition
processus (services de synchronisation,
d'échange de messages, mise en commun de – Réservée pour le système
segments de mémoire, etc.) – Réservée pour les applications
– gestion des fichiers (au moyen de systèmes de
• Assure une indépendance entre
fichiers)
les applications et les matériels
– gestion des protocoles réseau (TCP/IP etc.) 40
Les bibliothèques Le système de
dynamiques fichiers
Un système de fichiers est une structure de données
• = Libraries permettant de stocker les informations et de les organiser dans
des fichiers sur des mémoires secondaires (disque dur,
• Regroupent les opérations souvent utilisées, selon les
disquette, CD-ROM, clé USB, etc.)
fonctionnalités (E/S, fichier, …)
• Ces opérations sont disponibles pour être appelées et • Ce stockage de l'information est persistant
exécutées par d’autres programmes
• Une telle gestion des fichiers permet de traiter, de
conserver des quantités importantes de données ainsi que
de les partager entre plusieurs programmes informatiques
• Il offre à l'utilisateur une vue abstraite sur ses données et
permet de les localiser à partir d'un chemin d'accès

41
Interface utilisateur-machine
Shell
• Via ligne de commande • Shell (coquille par opposition au noyau) =
L'interpréteur de commandes permettant la
(interpréteur de commandes) communication avec le SE par l'intermédiaire
d'un langage de commandes
– shell, MSDos • Permet à l'utilisateur de piloter les
périphériques en ignorant toutes les
• Interface graphique (Graphical caractéristiques du matériel qu'il utilise,
(exemple: la gestion des adresses
User Interface) physiques).

– Xterm, Linux, Windows, Macintosh • E.g. sur Unix/Linux: csh, tcsh, …


– ls : lister les répertoires et les fichiers
du répertoire courant
– mv x y : changer le nom du
fichier/répertoire « x » en « y »
42
Les appels systèmes

Deux Modes d’exécution • Les appels système sont des fonctions :

• But: protéger l'exécution du système d'exploitation


– appelées depuis un programme du mode utilisateur.
de celles des programmes utilisateurs,
– dont l’exécution (le traitement) est
• Le mode utilisateur dans lequel les programmes effectuée dans le mode noyau .
utilisateurs sont exécutés.
Dans ce mode certaines instructions sont interdites, de – dont le retour est effectué dans le
cette manière on contraint les programmes à faire appel au programme appelant dans le mode
système d'exploitation pour certaines opérations. utilisateur.
• Le mode protégé ou superviseur (également appelé
mode noyau) est réservé à l'exécution des primitives du
système d'exploitation. Dans ce mode le processeur peut
exécuter toutes les instructions. Les appels système
s’exécutent dans ce mode.

43
Utilitaires

44
Les différents types d’architectures
des systèmes d’exploitation
• On parle de structures du noyau
du système d’exploitation
– Monolithiques
– Modulaire / Multicouches
– Micronoyaux
– Exonoyaux
– Machine virtuelle • Le noyau est généralement exécuté dans un espace
mémoire séparé de l’espace des applications: espace noyau.
Par opposition à l’espace utilisateur. Le passage entre ces
deux espaces se fait via des appels systèmes. L’intérêt de
cette séparation est que le système ne crash/se plante pas si
une application plante.
45
Système d’Exploitation
Monolithiques
• Un seul bloc contenant l’ensemble
des services système (mode
noyau).
• Facilité de conception
Système
• Rapidité d’exécution d'exploitation
• Code dur à maintenir

• Dos, très vieux UNIX et Linux, etc.

46
Système d’Exploitation
Multicouches
– SE organisé en hiérarchie de couches. Chacune
construite sur la base des services offerts par la
couche inférieure.
– Facilité de conception et de développement
– Code plus organisé et maintenable. Système
– Chargement des fonctionnalités à la demande d'exploitation
– Linux, BSD, SOLARIS

47
Système d’Exploitation Micronoyau
• Déplace plusieurs fonctions du SE vers des « processus serveur » s’exécutant en mode utilisateur
réduction au maximum de la taille du code privilégié (en mode noyau).
• But: gérer les communications entre applications et serveurs pour:
– Renforcer la politique de sécurité
– Permettre l’exécution de fonctions système (accès aux registres d’E/S, etc.).
• Fiabilité augmentée: si un processus serveur « crash », le système continue à fonctionner et il est
possible de relancer ce service sans redémarrer.
• Modèle facilement étendu à des systèmes distribués
• MAC OS X, GNU HURD, WindowsNT

48
Autres types de noyaux…
• SE à Noyaux hybrides
• SE à Méta-noyaux
• SE à Exo-noyaux
• SE machine virtuelle(VMWARE)
• SE à noyaux temps réel

49
Exemples de Systèmes d’exploitation

Quelques exemples de SE

Dans le secteur informatique, les systèmes


d'exploitation les plus répandus sont Windows (pour
les PC), Mac OS (pour les ordinateurs d'Apple), Linux
(pour les PC et les serveurs) et Unix (pour les
serveurs). Pour les téléphones, on trouve Android,
iOS (chez Apple), Symbian et Windows Phone.

FIN DU CHAPITRE 01
50
Chapitre 02: Gestion des processus

PLAN DU COURS
• Processus Vs Programme
• États des processus
• Structure d’un processus
• Mémoire allouée aux processus
• Structures de données pour la gestion des processus
• Les processus sous Unix
• Ordonnancement

51
Contexte
● Les premiers OS autorisaient un seul programme à être
exécuté à la fois.
– Un tel programme avait un contrôle complet du système et
un accès à toutes les ressources du système

● Les OS actuels permettent à plusieurs programmes


d'être charger en mémoire et exécuter en même temps.
– Cette évolution a nécessité un contrôle plus strict et un
cloisonnement plus rigoureux des différents programmes.

52
Contexte
● Ces besoins ont conduit à la création de la notion de processus,
qui est « un programme en exécution ».
– Un processus est l'unité fondamental dans le cadre d’un OS moderne
temps partagé.

● Un système se compose d'un ensemble de processus:


– les processus du OS exécutent le code du OS
– et des processus utilisateurs exécutent le code de
l'utilisateur.

● Tous ces processus s'exécutent en même temps.


→ En commutant le processeur entre les processus,
le système d‘exploitation peut rendre l'ordinateur
plus productif.

53
Programme Vs Processus
● Le programme n'est pas en soi un processus !
– un programme est une entité passive, comme un fichier contenant une
liste d'instructions
– alors qu'un processus est une entité active avec un ensemble de
ressources associées.
→ Un programme devient un processus lorsqu'un fichier exécutable est
chargé en mémoire.
● Même si deux processus peuvent être associés à un
même programme, ils sont néanmoins considérés comme
deux séquences d'exécution séparées.
– Chacune d'elles est un processus distinct, et bien que les
sections de texte sont équivalentes, les data section, la pile, le
tas sont différents.
54
Etats des processus

55
Etats des processus
Nouveau : le processus est en cours de création ;
Prêt : le processus est prêt et attend que le système
d’exploitation lui attribue le processeur ;
En exécution : le processus dispose du processeur et
les instructions de son programme sont en train
d’être exécutées ;
En attente : le processus a besoin d’un événement
particulier pour pouvoir continuer, par exemple
l’achèvement d’une entrée / sortie ;
Stoppé (Interrompu) : le processus n’a besoin de rien
pour continuer et il pourrait demander l’accès au
processeur, mais il ne le fait pas ;
Terminé : toutes les instructions du programme du
processus ont été exécutées et le processus attend
que le système d’exploitation libère les ressources
correspondantes. 56
Transitions des états d’un
processus
1) en exécution → en attente : a lieu quand le processus ne
peut plus poursuivre son exécution car il a besoin d'une
ressource non disponible.
2) en exécution → prêt : a lieu quand le processus a
terminé le temps imparti par le système d'exploitation
pour son exécution.

Remarque:
Un processus ne s'exécute pas forcément jusqu'à la fin car le
système d'exploitation a d'autres processus à exécuter.
Cette transition a également lieu si un processus plus urgent
doit prendre la main (par exemple processus du système
d'exploitation)

57
Transitions des états d’un
processus
3) prêt → en exécution : signale que le système
d'exploitation a sélectionné un processus pour
l'exécuter.

4) en exécution → Terminé : indique que le


processus a fini son exécution.

5) En attente → prêt: a lieu sitôt que le processus


n'a plus de raison d'être bloqué; par exemple les
données deviennent disponibles. Le processus
passe à l'état prêt.
6) prêt → en exécution a lieu quand l'événement
attendu par le processus ne peut se réaliser. Il est
donc inutile de faire patienter davantage ce
processus, autant le terminer (interblocage).
58
Structure d’un processus et allocation de la
mémoire Structure d’un processus
● Un processus est souvent définit comme
étant un programme en exécution.
– Un processus est plus que le code du Structure d’un processus
programme (text section)
● Un processus inclus une représentation de l'activité en cours
du programme :
– Le contenu des registres du processeur tel que le program counter
(PC) (un registre qui contient l’adresse mémoire de l’instruction en
cours/prochaine selon les architectures des CPUs)
– une pile d’exécution (stack) qui contient des données provisoires
(tels que la fonction, les paramètres, des adresses de retour, et les
variables locales),
– une section de données (data section), qui contient les variables
globales.
– un tas (heap) qui est une mémoire allouée dynamiquement lors de
l'exécution processus. 59
La mémoire associée à un processus
Allocation de la mémoire
● Au cours de son exécution, un processus alloue de la
mémoire. Il existe trois types d’allocations :
1)allocation statique
2)allocation sur la pile (« stack allocation »)
3)allocation sur le tas (« heap allocation »)

60
La mémoire associée à un processus
Allocation de la mémoire
● Allocation statique :
– Exemple : static int exemple=1 ;
– Espace mémoire nécessaire précisé dans le code avant
l’exécution
– Espace réservé au moment de la compilation dans le
fichier binaire résultant
– Espace accessible lors du chargement du binaire avant
l’exécution
→ Pas d’allocation lors de l’exécution

61
La mémoire associée à un processus
Allocation de la mémoire
● Allocation statique :
– La mémoire allouée statiquement placée dans le segment de
données ou le segment bss (block storage segment)
– Segment de données:

• variables globales

• variables statiques initialisées

– Segment BSS :

● zone de données non initialisées


● les variables globales et statiques qui sont
initialisées à zéro ou non initialisées 62
La mémoire associée à un processus
Allocation de la mémoire
● Allocation dynamique de mémoire du processus
– Se fait pendant l’exécution du programme
– Espace non prévue dans le binaire du programme
– Demande d’allocation se fait durant l’exécution

● Deux segments de processus concernés :


– Segment de pile
– Segment de tas

63
La mémoire associée à un processus
Allocation de la mémoire
● Allocation sur la pile (stack allocation: Utilisé pour l' allocation de
mémoire statique dans la RAM)
– Programme : routines (fonctions/procédures) + variables locales (lexicales)
– Variables locales (lexicales) : sa portée est définie par le texte du programme

● Mémoire allouée à l’entrée de la routine

● Mémoire libérée au retour de la routine

● → Le segment de pile est utilisé pour ces allocations/dés-


allocations 64
La mémoire associée à un processus
Allocation de la mémoire
● Allocation sur le tas (heap allocation)

– Selon l’execution, un programme peut allouer de la mémoire


(malloc) et la libérer par la suite

– l’allocation se fait alors dans le segment de tas.

– Un tas (heap en anglais): est une structure de données de type


arbre qui permet de retrouver rapidement un élément. C’est
aussi un emplacement de la mémoire utilisé pour les allocations
dynamiques, par exemple les pointeurs.
65
Exemple : Anatomie d’un
processus sous Linux

66
Exemple : Anatomie d’un
processus sous Linux

67
Exemple : Anatomie d’un
processus sous Linux

68
Structures de données pour la gestion des
processus
Process Control Block (PCB)
● Chaque processus est représenté dans le SE par un
PCB (process control block) qui représente le contexte
d’un processus

PCB: le Contexte d’un processus est une structure de


données qui décrit un processus en cours
d'exécution. Ce bloc est créé au même moment que
le processus et il est mis à jour en grande partie lors
de l'interruption du processus afin de pouvoir
reprendre l'exécution du processus ultérieurement.

69
Structure d’un PCB
Le contexte d'un processus comporte
principalement les informations suivantes :
● Le compteur ordinal : adresse de la prochaine
instruction à exécuter par le processeur
● Les contenus des registres généraux : ils
contiennent les résultats calculés par le
processus
● Les registres qui décrivent l'espace qu'il
occupe en mémoire centrale (l'adresse de
début et de fin par exemple)
● Le registre variable d'état qui indique l'état du
processus D'autres informations telles que la
valeur de l'horloge, la priorité du processus
● Etc …..
70
Table des processus

71
Commutation de contextes de processus et
transition d’états

72
Programme réentrant: plusieurs processus
pour un même programme

73
Processus Sous UNIX
Contexte : la division cellulaire

74
Contexte : UNIX est multitâche
● La qualité du fonctionnement multitâche d’Unix
représente l’un des points les plus attractifs de ce
système d’exploitation.

● On peut faire exécuter simultanément plusieurs


programmes sans qu’aucun d’eux ne ressente la
présence des autres, ou à l’inverse en leur permettant
de dialoguer entre eux.

75
Appel systéme fork()
Appel système c’est quoi?
Un appel système désigne le moment ou un programme s’interrompt pour
demander au SE d’accomplir pour lui une certaine tâche.

NB: Exécuté un
● Le parallélisme Unix bas niveau est fourni
programme c’est demandé
par le noyau qui duplique un processus
qu’un processus soit créer
lorsqu’on invoque l’appel-système fork() .
avec l’appel système
Fork(), puis chargé
● Les deux processus sont alors strictement
l'exécutable en mémoire
identiques, et seule la valeur de retour de
dans ce processus, par un
fork() permet de les distinguer.
appel système nommé
exec. 76
Comment faire un processus ?
● Un nouveau processus est créé par fork() du système appelant.
● Le nouveau processus comprend une copie de l'espace
d'adressage de l'original processus.
– Ce mécanisme permet au processus parent de communiquer
facilement avec son processus enfant.
● Les deux processus (le parent et l'enfant) poursuivre l'exécution à
l'instruction après le fork(), avec une différence:
– le code retour du fork() est égal à zéro pour le nouveau (enfant)
processus,
– alors que le PID (non nulle) de l'enfant est retourné au processus
père.
77
Comment faire un processus ?
● L'appel-système fork() est déclaré dans <unistd.h> : pid_t fork(void);
● DEUX valeurs de retour en cas de succès:
– Dans le processus père : valeur de retour = le PID du fils,
– Dans le processus fils : valeur de retour = zéro.
● Sinon
– Dans le processus père : valeur de retour = -1.
● Afin d'obtenir le numéro du processus, il suffit de faire l'appel
système getpid(), ou getppid() pour obtenir le numéro du père.
– PID (Process IDentifier)
– PPID : numéro du processus père (Parent Process Identifier)

78
Naissance d’un processus
exemple

79
Mort naturelle et Zombie
Un processus peut se terminer normalement ou
anormalement.

● Dans le premier cas, l'application est abandonnée à la


demande de l'utilisateur, ou la tâche à accomplir est
finie.

● Dans le second cas, un dysfonctionnement est


découvert, qui est si sérieux qu'il ne permet pas au
programme de continuer son travail
80
Orphelin et Zombie
● Processus orphelins ● Un processus fils peut devenir orphelin
– si un processus père meurt avant son si son père termine avant lui, auquel cas le
fils ce dernier devient orphelin. noyau s'arrange pour le « faire adopter »
par un processus système (INIT), le
● Processus zombie processus fils peut donc lui transmettre
– Si un fils se termine tout en disposant son statut de terminaison.
toujours d'un PID celui-ci devient un
processus zombie ● Un processus est dit zombie s’il s'est
– Le cas le plus fréquent : le processus achevé, mais qui dispose toujours d'un
s’est terminé mais son père n’a pas identifiant de processus (PID) et reste
(encore) lu son code de retour. donc encore visible dans la table des
processus. On parle aussi de processus
défunt.
81
Ordonnancement des processus
• Un processeur ne peut exécuter qu’un seul processus

• Les systèmes actuels permettent l’exécution de plusieurs


processus simultanément

Solution 1: Un processeur pour chaque processus

Solution 2: partager le processeur entre les processus demandant


simultanément le processeur

On parle d’ordonnancement des processus


82
Objectifs de l’ordonnancement
• Maximiser le nombre de processus exécutés par unité de temps
• Maximiser le temps d’attente d’exécution de chaque processus
• Maximiser le temps d’utilisation des processeurs et autre ressources
• Eviter le problème de famine
• Favoriser les processus les plus prioritaires
• Minimiser le nombre de changements de contexte

→ Difficile de satisfaire tous les objectifs à la fois

Solution: Satisfaire les objectifs selon un ordre de priorité (sachant les


objectifs derrière l’utilisation du SE)
83
L’ordonnanceur
• Le système d'exploitation applique un programme pour gérer l'ordre
d'exécution des processus, appelé scheduler, dispatcher ou
ordonnanceur.

• L'ordonnanceur dispose de plusieurs algorithmes d'ordonnancement


qui correspondent à différentes politiques d'organisation des processus
: équitable, avec priorité, plus court d'abord. Il agit sur la file des
processus prêts et l'organise en appliquant un algorithme donné.

• Il faut souligner à ce stade que l'ordonnanceur ne change pas de


politique d'ordonnancement. Chaque système d'exploitation applique
un algorithme choisi par les concepteurs. 84
Mode d’ordonnancement
Deux classes d’ordonnanceur:
1. Non préemptif: (sans réquisition) Sélectionne un processus, puis le
laisse s’exécuter jusqu’à ce qu’il bloque (soit sur une E/S, soit en
attente d’un autre processus) où qu’il libère volontairement le
processeur. Même s’il s’exécute pendant des heures, il ne sera pas
suspendu de force. Aucune décision d’ordonnancement n’intervient
pendant les interruptions de l’horloge.
2. Préemptif: (avec réquisition) Sélectionne un processus et le laisse
s’exécuter pendant un délai déterminé. Si le processus est toujours
en cours à l’issue de ce délai, il est suspendu et le scheduleur
sélectionne un autre processus à exécuter.
85
Règles d’arbitrages
• Si deux processus ont le même ordre selon la politique
d’ordonnancement, le système d’exploitation utilise des
règles d’arbitrages pour choisir le processus à exécuter

• Les règles d’arbitrages possibles:


- Aléatoire,
- plus court processus,
- processus le plus prioritaire,
- etc…

86
Système multi-processus ordonnancement
haut niveau et bas niveau

87
Critère d’évaluation de la performance de
l’ordonnancement
• Rendement (throughput) : Nombre de travaux exécutés par unité de
temps.
• Temps de service (turnaround time): Temps qui s'écoule entre le
moment où un travail est soumis et où il est exécuté (temps d'accès
mémoire + temps d'attente en file des éligibles + temps d'exécution
dans le processeur et E/S).
• Temps d'attente (waiting time) : Temps passé dans la file des
processus éligibles.
• Temps de réponse (response time): Temps qui s'écoule entre la
soumission d'une requête et la première réponse obtenue.
88
Politique d’ordonnancement 1 FCFS
• Le processus qui arrive premier occupera
le processeur • L’implantation de la politique
FCFS est facilement gérée avec une file
d’attente FIFO. Une fois que la CPU a été
allouée à un processus, celui-ci garde la CPU
jusqu’à ce qu’il la libère (fin ou E/S).
• FCFS est particulièrement inapproprié pour
le temps partagé où il est important que
chaque utilisateur obtienne la CPU à des
intervalles réguliers.
• Temps moyen d’attente: généralement
n’est pas minimal et peut varier
substantiellement si les temps de cycles de
la CPU du processus varient beaucoup 89
EXERCICE 01
Processus Date arrivée Temps CPU
P1 0 9
P2 3 5
P3 4 7
P4 10 4

1) Donner le Diagramme de Gantt de l’exécution des


processus en utilisant l’ordonnanceur FCFS
2) Calculer les indicateurs de performance suivants: Temps
d’attente Moyen (TA), Temps de réponse Moyen (TR)

90
EXERCICE 02
Instant Temps
Pi
d'arrivée d'exécution
A 0 3
B 1 6
C 4 4
D 6 2
E 7 1

1) Donner le Diagramme de Gantt de l’exécution des


processus en utilisant l’ordonnanceur FCFS
2) Calculer les indicateurs de performance suivants: Temps
d’attente Moyen (TA), Temps de réponse Moyen (TR)

91
Politique d’ordonnancement 2 SJF
• Short Job First (SJF)Le plus court en premier: Le
processus qui a le temps CPU le plus minimale sera
exécuté
• Associe à chaque processus la longueur de son
prochain cycle de CPU. Quand la CPU est
disponible, elle est assignée au processus qui
possède le prochain cycle le plus petit.
• Si deux processus possèdent la même longueur,
le FCFS peut être utilisé (arbitrage).
• SJF est optimal: il obtient le temps moyen
d’attente minimal pour un ensemble de processus
donné.
• Difficulté: pouvoir connaître la longueur de la
prochaine requête de la CPU , problème famine
92
• Deux mode: Non préemptif et préemptif.
Processus Date arrivée Temps CPU
EXERCICE 03 P1 0 9
P2 3 5
P3 4 7
P4 10 4

1) Donner le Diagramme de Gantt de l’exécution des processus en utilisant


l’ordonnanceur SJF sans réquisition
2) Calculer les indicateurs de performance suivants: Temps d’attente
Moyen (TA), Temps de réponse Moyen (TR),

93
EXERCICE 04
Instant Temps
Pi
d'arrivée d'exécution
A 0 3
B 1 6
C 4 4
D 6 2
E 7 1

1) Donner le Diagramme de Gantt de l’exécution des processus en utilisant


l’ordonnanceur SJF sans réquisition
2) Calculer les indicateurs de performance suivants: Temps d’attente
Moyen (TA), Temps de réponse Moyen (TR),

94
Politique d’ordonnancement 3 Tourniquet
• Appelé aussi Round Robin (RR)
• Chaque processus a une petite unité de
temps appelée tranche de temps ou
Quantum q.
• Le scheduleur de la CPU parcourt la file
d’attente des processus prêts en allouant la
CPU à chaque processus pendant un intervalle
de temps allant jusqu’à un quantum.
• Lorsque un processus actif épuise son
quantum q, il libère le processeur ensuite il
est placé en queue d’une liste
• La file d’attente des processus prêts est
implantée comme une file FIFO.
• Les nouveaux processus sont placés à la fin
de la liste
• tous les processus ont la même priorité 95
Politique d’ordonnancement 3 Tourniquet
Performance:
• Si le quantum est trop grand: RR devient FCFS
• Si le quantum est très petit: RR est appelé partage du
processeur (si n processus résident dans la file, la vitesse
du processeur est ralentie de 1/n, selon l’utilisateur
• Généralement, q doit être suffisamment grand par
rapport au temps de commutation

96
EXERCICE 05
Processus Date arrivée Temps CPU
P1 0 9
P2 3 5
P3 4 7
P4 10 4

1) Donner le Diagramme de Gantt de l’exécution des processus en


utilisant l’ordonnanceur Round Robin avec q=3.
2) Calculer les indicateurs de performance suivants: Temps d’attente
Moyen (TA), Temps de réponse Moyen (TR),

97
EXERCICE 06
Instant Temps
Pi
d'arrivée d'exécution
A 0 3
B 1 6
C 4 4
D 6 2
E 7 1

1) Donner le Diagramme de Gantt de l’exécution des processus en


utilisant l’ordonnanceur Round Robin avec q=2.
2) Calculer les indicateurs de performance suivants: Temps d’attente
Moyen (TA), Temps de réponse Moyen (TR),

98
Politique d’ordonnancement 4 Avec Priorité
• Une priorité est associée à chaque processus. CPU est allouée
au processus de plus haute priorité (priorité = 1 < priorité = 2 )
• Les processus ayant la même priorité sont schedulés dans un
ordre FCFS ou SJF (règle d’arbitrage).
• Exemple Processus Temps de cycle Priorité

• Deux Modes d’exécutions: Préemptif et non préemptif


• Problème: Famine ou blocage indéfinie: processus avec
des basses priorités peuvent attendre indéfiniment (ne
jamais être exécutés).
• Solution: Vieillissement : technique qui consiste à
augmenter la priorité des processus plus vieux.

99
Evaluations des algorithmes
d’ordonnancement
• FCFS: pénalise les processus de court temps
d’exécution
• SJF: problème de famine
• Tourniquet: Bien choisir le Quantum de temps
par rapport au cout de commutation de contexte
• Priorité :Risque de famine des processus de
faible priorité

FIN CHAPITRE O2
100
Une mémoire peut être classée sous plusieurs critères comme
la volatilité (volatile, non-volatile), l’accessibilité (accès aléatoire RAM
ou séquentiel), l’adressage (par octet ou associatif), la capacité, les
performances ... Intéressons-nous à certains critères :

• Mémoire Volatile : se dit d’une mémoire ne gardant pas les


informations stockées (données ou code) en cas de perte de
l’alimentation. Prenons l’exemple de la mémoire principale
(SDRAM, DDRAM), mémoires cache, registres.

• Mémoire Non-volatile : se dit donc d’une mémoire gardant les


informations stockées (données ou code) en cas de perte de
l’alimentation. Prenons l’exemple des mémoires de stockage de
masse (disque dur, SD-card, DVD, CD, Blue-Ray…), du BIOS…

101
• Mémoire Morte : Mémoire morte ou ROM (Read Only Memory) se
dit d’une mémoire non-volatile accessible qu’en lecture qui donc
préprogrammée. Prenons l’exemple du BIOS, du séquenceur
microcode MSROM dans les architectures Nehalem et Sandy
Bridge, de nombreux systèmes embarqués…

• Mémoire Vive : Mémoire vive ou RAM (Random Access Memory –


accès n’importe quelle case sur un temps quasiment fixe) se dit
généralement d’une mémoire volatile accessible en lecture et
écriture. Par exemple la mémoire principale (SDRAM, DDRAM) d’un
ordinateur. Néanmoins, beaucoup d’ambiguïté et d’abus de langage
existent autour des termes RAM, vive, ROM … amenant très
souvent à des maladresses et incompréhensions.

102
• Mémoire Adressable par octet : Beaucoup de familles mémoire
sur ordinateur ou sur processeur embarqué (MCU, DSP, SoC) sont
dîtes adressables par octet. Cela signifie qu’à chaque adresse
mémoire correspond 1 octet. Prenons 2 exemples de mapping
mémoire sur 16bits d’adresse et 32bits d’adresse :

Memory 64Kb Memory 4Gb


Address 16bits Address 32bits
1 byte 1 byte
216-1= 65535 0xFFFF 232-1= 4294967295 0xFFFFFFFF

… …

… …
0 0x0000 0 0x000000000

103
Sur beaucoup de processeurs modernes, la mémoire est le
plus souvent hiérarchisée est peut-être découpée via un modèle en
couche :

- +
Core Registers

Cache (L1D/L1P, L2, L3, Cacheable Main Memory)


Speed
Size

Main Memory (SDRAM, DDRAM...)

Mass Storage (Hard Disk, SD, DVD, Blue-Ray...)


+ -

104
L’unité de gestion mémoire (MMU ou Memory Managment
Unit) est intégrée dans la plupart CPU’s modernes et est exploitée par
tout système d’exploitation évolué actuel (Windows, iOS, MAC OS,
GNU/Linux…). Elle fut intégré sur GPP Intel sous ce nom depuis le
80286. Observons les principaux services offerts par cette unité :

• Unité de Segmentation (translation adresses logiques en adresses


linéaires)
• Unité de Pagination (translation adresses linéaires en adresses
physiques)
• Unité de Protection (MPU ou Memory Protection Unit). Génération
exceptions en cas d’accès mémoire illégaux.
• Arbitrage des bus…

105
Les adresses virtuelles et les
adresses physiques
le terme « adresse » se définit comme une indexation des octets disponibles dans la
mémoire principale de l’ordinateur. Nous appellerons désormais ce type d’adresse des
« adresses physiques » dans la mesure où elles font directement référence à la réalité
physique de la machine. Une adresse physique est donc un nombre qu’il suffit de
passer au contrôleur de mémoire pour désigner une donnée stockée en mémoire.

Le nombre d’adresses physiques différentes dépend de la taille des adresses :


• une adresse de 8 bits permet de coder 2 8 = 256 zones d’un octet, soit 256 octets ;
• une adresse de 32 bits permet de coder 2 32 = 2 2 ×2 10 ×2 10 ×2 10 = 4 Go.
Pendant longtemps, la taille des bus d’adresses ne permettait pas de passer une
adresse en une seule fois et diverses méthodes étaient utilisées pour recomposer
l’adresse à partir de plusieurs octets. Aujourd’hui les bus d’adresses ont une taille de
32 ou 64 bits, ce qui permet de passer au moins une adresse à chaque fois.

106
• Observons succinctement les mécanismes de translation d’une
adresse virtuelle vers une adresse physique :

Virtual Address
Linear Address Physical Address
Logical Address

Segmentation Pagination
Unit Unit

• Nous verrons que dans les grandes lignes, pour un système comme
Linux, ces mécanismes de translation peuvent être réduit à la
pagination :
Virtual Address
Logical Address Physical Address

Linear Address
Pagination
Unit

107
Intéressons-nous à l’unité de segmentation faisant partie
intégrante de la MMU. Sont but est de séparer en espaces
logiquement indépendants le code, les variables statiques, les
variables dynamiques … Ce mécanisme de virtualisation mémoire
assure une meilleure structuration des développement logiciel,
facilite l’édition des liens et peut aider au partage de ressources dans
le cadre d’application multithread. Exemple de segmentation
mémoire : Segmented Memory
heap Dynamic variables allocation

Local variables, procedures contexts… (dynamic)


stack

Static variables
Static variables

Code Segment
code

108
Etudions la segmentation mémoire implémentée sur CPU
8086 de Intel. Le 8086 possède un espace mémoire adressable de
1Mo (20bits d’adresse physique).

: bus d’adresse 20 bits


(adresse physique)

109
Le 8086 autorise la manipulation de 4 segments mémoire de
16bits d’adresse (DS=Data Segment, SS=Stack Segment, CS=Code
Segment et ES=Extra Segment) :
Segments Registers
or
Segments Selectors
Index Registers
and
Stack manipulation
registers

Segmentation Unit
(physical address generation)

Dr J. Y. Haggège

110
Chapitre 04: Système de gestion des
fichiers
PLAN DU COURS
• Introduction
• Formatage et partitionnement
• Le concept de fichier & La notion de répertoire
• Rôle d’un SGF & Types de Système de fichier
• Gestion de l’organisation espace disque
• Technique d’allocation des blocs sur le disque
• Allocation contiguë, Allocation chaînée, Allocation
non contiguë indexée
• Gestion de l’espace libre sur le disque

111
À quoi ressemble un disque
dur ? Structure physique d'un disque dur

112
Géométrie d'un disque dur Adressage CHS :
Cylinder/Head/Sector

Cylindre: superposition de plusieurs pistes


– Les pistes au dessus les unes des autres
sont accessibles sans bouger les têtes de
lecture

113
Géométrie d'un disque dur Adressage CHS :
Cylinder/Head/Sector
Head:
– Les têtes de lecture/enregistrement sont solidaires des bras mobiles
– Le plus souvent il y a une tête par surface soit deux par plateau
– Le chemin parcouru par une tête particulière sur un cylindre particulier
s'appelle une piste

Secteur :
– La piste est divisée en secteurs (aussi appelés blocs) contenant les données.
– La taille d'une piste diminue en allant vers le centre du disque → le nombre de
secteur par piste diminue aussi en allant vers le centre
– Taille d'un secteur plus commune= 512 octet

114
Taille d'un disque
Taille d'un disque = (Nombre de cylindre) x (Nombre de piste par cylindre) x
(Nombre moyen de secteur par piste) x (Taille du secteur)

Exemple=
– Nombre de piste par cylindre 255
– Nombre de cylindre = 36481
– Nombre moyen de secteur par piste = 63
– Taille du secteur = 512 octets
– Taille du disque ≈ 300 GB (255 * 36481 * 63 * 512 = 300066439680 octets)

115
Pourquoi a-t-on besoin de fichiers ?
Définition d'un fichier

 Toutes les applications informatiques doivent enregistrer et


retrouver des informations.
 L’espace d’adressage étant insuffisant, on utilise des fichiers
pour cela.
 Fichier (nom masculin)
– Meuble, boîte servant à recevoir des fiches.
– Ensemble de données regroupées en une unité indépendante
de traitement informatique.

116
Information indépendante du processus
Un processus en cours d’exécution peut enregistrer une quantité d’informations dans
son espace d’adressage mais cette façon de faire présente trois inconvénients :

1)La capacité de stockage est limitée à la mémoire vive. Cette taille peut convenir pour
certaines applications, mais elle est beaucoup trop faible pour d’autres (applications des
banques, réservations, téléchargement p2p,...)
2)Les informations stockées en mémoire vive sont perdues, lorsque le processus se
termine ou lors du plantage de l'ordinateur. Pour un grand nombre d'applications, les
informations doivent être conservées pendant des durées importantes.
3)Il ne peut pas y avoir d’accès simultané à ces informations. Un répertoire téléphonique
stocké dans l’espace d’adressage d’un processus ne peut être examiné que par ce seul
processus (pour les raisons de protection des données expliquées lors de l’étude des
processus), de telle sorte qu’on ne peut rechercher qu’un seul numéro à la fois.

→ Pour résoudre ce problème, il faut rendre l’information indépendante d’un processus117


donné.
Stockage à long terme des informations
Trois caractéristiques sont donc requises pour le stockage des
informations à long terme :

1) Il faut pouvoir stocker des informations de très grande taille ;

2) Les informations ne doivent pas disparaître lorsque le processus qui


les utilise se termine ;

3) Plusieurs processus doivent pouvoir accéder simultanément aux


informations.

118
Fichiers = solution au problème
● La solution à tous ces problèmes consiste à stocker les informations dans
des fichiers sur des disques ou d’autres supports.
– Les processus peuvent alors les lire ou en écrire de nouvelles.

● Les informations stockées dans des fichiers doivent être permanentes, c’est-
à- dire non affectées par la création ou la fin d’un processus.

● Un fichier ne doit disparaître que lorsque son propriétaire le supprime


explicitement.

119
Qui les gère alors ?
● Les fichiers sont gérés par le système d’exploitation.

● La façon dont ils sont structurés, nommés, utilisés, protégés et


implémentés sont des points majeurs de la conception du
système d’exploitation.

● La partie du système d’exploitation qui gère les fichiers est


appelée le gestionnaire du système de fichiers (en anglais file
system)

120
Les tâches d'un SGF

● Le stockage des fichiers sur le disque dur


● La gestion de l'espace libre sur le disque dur
● La gestion des fichiers dans un environnement multi-utilisateurs
● La donnée d'une interface conviviale pour manipuler les fichiers
(commandes et des attributs simples pour manipuler et décrire les
fichiers)
● La donnée d'utilitaires pour le diagnostic, la récupération en cas
d'erreurs, l'organisation des fichiers

121
Deux Visions du système de Fichiers

● Point de vue de l’utilisateur: nommage des fichiers,


protection et droit d’accès, opération autorisées, etc.

● Point de vue concepteur : organisation physique


d’un fichier sur un disque, gestion des blocs et
manipulation des blocs physiques attribués à un
fichier, gestion de l’espace libre du disque.

122
Les fichiers
Les fichiers du point de vue utilisateur
● L’utilisateur attache la plus grande importance à l’interface d’un système de
fichiers, c’est-à-dire à la manière de nommer les fichiers, de les protéger, aux
opérations permises sur eux, etc.

– Il est moins important pour lui de connaître les détails de son implémentation,
c’est-à-dire de connaître le nombre de secteurs d’un bloc logique ou de savoir si
l’on utilise des listes chaînées ou des tables de bits pour mémoriser les
emplacements libres.

– Ces points sont, en revanche, fondamentaux pour le concepteur du système


de fichiers.
123
Nom d’un fichier : Pourquoi ?
● Les fichiers sont un mécanisme d'abstraction.
– Ils permettent d’écrire des informations sur le disque et de les lire
ultérieurement.

● Ceci doit être fait de manière à masquer le fonctionnement et


l’emplacement de stockage des informations à l’utilisateur.
– Il ne doit pas avoir à choisir tel ou tel secteur, par exemple.

● La gestion et l’affectation des noms des objets sont les parties les plus
importantes d’un mécanisme abstrait.
– Un processus qui crée un fichier lui attribue un nom.
– Lorsque le processus se termine, le fichier existe toujours et un autre
processus peut y accéder au moyen de ce nom.
124
Nom d’un fichier : Règles de formation ?
● Les règles d’affectation des noms de fichiers varient d’un système à un autre,
mais tous les systèmes d’exploitation autorisent les noms de fichiers constitués
de chaînes de un à huit caractères non accentués.
– Ainsi « esen » et « manouba » sont des noms de fichiers valides.
– Les chiffres et des caractères spéciaux sont quelquefois autorisés. Ainsi « 2 », «
urgent! » et « Fig.2-14 » peuvent être des noms valides.

● Certains systèmes de fichiers différencient les lettres majuscules et minuscules


alors que d’autres ne le font pas.
– Unix fait partie de la première catégorie et MS-DOS de la deuxième.
– Les noms suivants désignent donc des fichiers distincts sur un système Unix : «
esen », «Esen» et « ESEN ».
– Sur MS-DOS, ils désignent le même fichier.
125
Nom de fichier: extension
● De nombreux systèmes d’exploitation gèrent des noms en deux parties, les deux
parties étant séparées par un point, comme dans « prog.c ». La partie qui suit le
point est alors appelée extension ; elle donne en général une indication sur la
nature du fichier.
– Sous MS-DOS, par exemple, les noms de fichiers comportent 1 à 8 caractères
éventuellement suivis d’une extension de 1 à 3 caractères.
– Sous Unix, la taille de l’extension éventuelle est libre, le fichier pouvant même
avoir plus d’une extension comme dans « prog.c.Z ».

● Dans certains cas, les extensions sont simplement des conventions et ne sont
pas contrôlées. Un fichier « fichier.txt » est vraisemblablement un fichier texte,
mais ce nom est destiné davantage au propriétaire du fichier qu’au système
d’exploitation. En revanche, certains compilateurs C imposent l’extension « .c » à
tous les fichiers à compiler
126
Les attributs des fichiers
● Chaque fichier possède un nom et des données.

● Les systèmes d'exploitation associent des informations


complémentaire :
– l'heure et la date de sa création et sa taille

→ Ces informations sont appelés les attributs du fichier (file's


attributes) ou metadonnées (metadata)

127
Les attributs des fichiers

128
Les opérations sur les fichiers
● Create
● Delete
● Open
● Close
● Read
● Write
● Append
● Seek
● Get atributes
● Set attributes
● Rename
129
La structure des fichiers

● Les fichiers peuvent être structurés de


différentes manières

– Suite d'octets

– Suite enregistrement

– Arbre

130
Fichier= suite d'octets
● Le fichier est une suite d'octets
sans structure
– Le système d'exploitation ne
connaît pas et ne s'occupe pas du
contenu de ce fichier
– Il ne voit que des octets
– Toute signification doit être
apporté par le programme des
utilisateurs
– UNIX et Windows suivent tout deux
cette approche
131
Fichier= suite d'enregistrements
● Le fichier est une suite d'enregistrements de longueur
fixe
– Concept principal : une opération de lecture renvoie
un enregistrement/une opération d’écriture réécrit ou
ajoute un enregistrement
– 80 caractère → carte perforées de 80 colonnes
– 132 caractères → imprimantes de 132 colonnes
– Les programmes lisaient les données par bloc de 80
caractère est écrivaient par bloc de 132 caractères
– Obsolète
132
Fichier= arbre
● Le fichier est un arbre d'enregistrement
– Les enregistrement n'ont pas la même longueur
– Chaque enregistrement contient une clé dont la position est fixe
dans l'enregistrement
– L'arbre est trié en fonction des clés → permet de rechercher
rapidement une clé donnée
– L'opération fondamentale ne consiste pas à obtenir le prochain
enregistrement, mais obtenir un enregistrement avec une clé
donnée

133
Les fichiers ASCII
● Les fichiers ASCII se composent de lignes de texte

– Chaque ligne se termine par le caractère retour


chariot (CR : Carriage Return) ou le caractère saut de
ligne (LF : Line Feed)

– On peut les afficher et les éditer avec n'importe quel


éditeur de texte

134
Les fichiers binaires
● Ce ne sont pas des fichiers ASCII !
– Si on les affiche cela donne un résultat incompréhensible
– Ils possèdent une structure interne connue des programme qui
les exploitent

● Bien que techniquement le fichier soit juste une structure


d'octets, le système d'exploitation exécutera ce fichier seulement
s'il possède un certain format

135
L'accès au fichiers : accès séquentiel
● Les premiers systèmes d'exploitation proposaient
un seul type d'accès au fichiers : l'accès séquentiel
(sequential access).

– Dans ce système, un processus pouvait lire tous les


octets ou tous les enregistrements d'un fichier dans
l'ordre en commençant au début

136
L'accès au fichiers : accès aléatoire
● Lorsque les disques ont servi à l'enregistrement des
fichiers, il est devenu possible de lire des octets ou des
enregistrement d'un fichier dans n'importe quel ordre

● Les fichiers dont les octets ou les enregistrement


peuvent être lus dans n'importe quel ordre sont appelés
fichier à accès directe ou accès aléatoire (random
access)

137
La conception des systèmes de fichiers
utilisateur vs. concepteur
● Nous examinons maintenant le système de fichiers du point de vue
du concepteur.

● Les utilisateurs se préoccupent des noms des fichiers, des opérations


qui permettent de les manipuler, de l’arborescence des fichiers, ...

● Les concepteurs portent d'avantage leur attention sur l’organisation


de l’espace du disque et sur la manière dont les fichiers et les
répertoires sont sauvegardés.

→ Ils recherchent un fonctionnement efficace et fiable


138
L'organisation du système de fichier
rôle de l'MBR
● Les systèmes de fichiers sont enregistrés sur des disques.

● Les disques peuvent être divisés en une ou plusieurs partitions, avec


des systèmes de fichiers indépendants sur chaque partition.

● Le secteur 0 du disque appelé enregistrement d'amorçage maître


(MBR – Master Boot Record) sert à amorcer la machine

● La fin du MBR comprend la table de partitions, laquelle indique


l'adresse de début et de fin de chaque partition
– Une de ces partitions est marquée comme étant la partition active
139
L'organisation du système de fichier
le bloc d'amorçage
● Quand l’ordinateur est amorcé, le BIOS lit et exécute
le MBR

– Le programme MBR détermine la partition active, y lit


le premier bloc appelé bloc d'amorçage (boot block) et
l'exécute

● Le programme du bloc d'amorçage charge le système


d'exploitation contenu dans cette partition

140
L'organisation du système de fichier
● Pour une question d'uniformité, chaque partition commence un bloc
d'amorçage, même si elle ne contient pas de système d'exploitation
– Elle pourrait en contenir un ultérieurement

● Une organisation possible d'un système de fichiers

141
L'organisation du système de fichier
le superbloc

● Après le bloc de boot, vient généralement le superbloc (superblock)


– Contient tout les paramètres clé concernant le système de fichier
– Contient un numéro magique qui identifie le type de système de fichier

142
Organisation logicielle de l’espace du disque

● Les fichiers étant habituellement sauvegardés sur des


disques, l’organisation logicielle de l’espace du disque
est primordiale pour les concepteurs de systèmes de
fichiers.

● Celle-ci porte sur la stratégie de stockage, sur la taille


des blocs et sur la façon de repérer les blocs libres.

143
Organisation de l’espace du disque
Taille des blocs
● Il faut alors déterminer la taille
optimale d’un bloc.

● Si l’on prend des blocs de 1 Ko sur un


disque dont les secteurs font 512 octets, le
système de fichiers lit et écrit deux secteurs
consécutifs en les considérant comme un
ensemble unique et indivisible, appelé unité
d’allocation (cluster).
144
Les méthodes de stockage des fichiers
● Les fichiers étant constitués d’un certain nombre de
blocs, le système de fichiers doit mémoriser les blocs
des différents fichiers.

● Le principe fondamental pour stocker un fichier est de


mémoriser l’adresse des blocs le constituant.

● Différentes méthodes sont utilisées pour cela :


– allocation contiguë,
– allocation par liste chaînée,
– allocation par liste chaînée indexée
– et nœud d’information (i-node) 145
Stockage des fichiers Allocation contiguë
● La méthode d’allocation la plus simple consiste à stocker chaque
fichier dans une suite de blocs consécutifs. Un fichier de 50 Ko, par
exemple, occupera 50 blocs consécutifs sur un disque dont la taille des
blocs est 1 Ko.

● Cette méthode a deux avantages importants :


1)elle est simple à mettre en œuvre puisqu’il suffit de mémoriser un
nombre, l’adresse du premier bloc, pour localiser le fichier.
2)les performances sont excellentes puisque tout le fichier peut être lu
en une seule opération.

→ Aucune autre méthode d’allocation ne peut l’égaler. 146


Stockage des fichiers Allocation contiguë
Malheureusement, l’allocation contiguë présente également deux inconvénients importants :
– Premièrement, elle ne peut être mise en œuvre que si la taille maximum du fichier est connue
au moment de sa création.

● Sans cette information, le système d’exploitation ne peut pas déterminer l’espace à réserver sur le
disque.
● Dans les systèmes où les fichiers doivent être écrits en une seule opération, elle peut néanmoins
être avantageusement utilisée.

– Le deuxième inconvénient est la fragmentation du disque qui découle de cette politique


d’allocation.

● Elle gaspille de l’espace sur le disque.

● Le compactage du disque peut y remédier mais il est en général coûteux. Il peut cependant être
réalisé la nuit lorsque le système n’est pas chargé.
147
Stockage des fichiers Allocation contiguë

(a) Allocation contiguë de l'espace disque pour 7 fichier


(b) (b) L'état du disque après suppression des fichiers D et F 148
Stockage des fichiers Allocation par liste
chaînée
● La deuxième méthode consiste à sauvegarder les blocs des fichiers dans une liste chaînée. Le
premier mot de chaque bloc, par exemple, est un pointeur sur le bloc suivant. Le reste du bloc
contient les données.

● Cette méthode possède les avantages suivants :


– Contrairement à l’allocation contiguë, tous les blocs peuvent être utilisés → Il n’y a pas d’espace
perdu en raison d’une fragmentation du disque.
– L’entrée du répertoire stocke simplement l’adresse du premier bloc. Les autres blocs sont trouvés
à partir de celui-là.

● Elle possède également des inconvénients :


– Si la lecture séquentielle d’un fichier est simple, l’accès direct est extrêmement lent.
– Le pointeur sur le bloc suivant occupant quelques octets → l’espace réservé aux données dans
chaque bloc n’est plus une puissance de deux.
● Ceci est moins efficace car de nombreux programmes lisent et écrivent des blocs dont la
taille est une puissance de deux. 149
Stockage des fichiers Allocation par
liste chaînée

150
Stockage des fichiers Allocation par liste
chaînée indexée
● Les inconvénients de l’allocation au moyen d’une liste chaînée peuvent être
éliminés en retirant le pointeur de chaque bloc pour le placer dans une table ou en
index en mémoire. MS-DOS utilise cette méthode avec la FAT (File Allocation Table).

● Cette méthode possède les avantages suivants :


– Elle libère intégralement l’espace du bloc pour les données → Elle facilite les
accès directs.
● La liste doit toujours être parcourue pour trouver un déplacement donné
dans le fichier, mais elle réside entièrement en mémoire et peut être parcourue
sans accéder au disque.
– Comme pour la méthode précédente, l’entrée du répertoire contient un seul
entier (le numéro du premier bloc) qui permet de retrouver tous les autres blocs
quelle que soit la taille du fichier.
151
Stockage des fichiers Allocation par liste
chaînée indexée

Le fichier A utilise les


blocs 4,7 2 10 et 12

Le fichier B utilise les


blocs 6,3 11 et 14

152
Stockage des fichiers Allocation par liste
chaînée indexée
● Le principal inconvénient de cette méthode vient du
fait que la table doit résider entièrement en mémoire
en permanence.

● Un grand disque de 500 GO, avec une taille de


bloc=1ko. Déterminer le nombre d’entrée dans la table
nécessaire pour indexer ce disque?

● Si chaque entée est codée sur 3 octets, déterminer la


taille de la table.
153
Stockage des fichiers Nœuds
d’information i-node
● Pour mémoriser quel bloc appartient à
quel fichier, une dernière méthode consiste
à associer à chaque fichier un structure de
donnée appelée nœud d'index ou i-node.

● Un i-node inclut
1)les attributs
2)et les adresses disque des blocs du fichier

● En fonction de l'i-node il est possible de


trouver tous les blocs d'un fichier

154
Stockage des fichiers: Avantage des i-node
● Le grand avantage de cette conception est que le i-node a besoin
d'être en mémoire seulement quand le fichier correspondant est
ouvert.
– Si chaque i-node occupe n octets
– Et un maximum de k fichiers peuvent être ouvert en même temps
– La mémoire totale occupée par le tableau contenant les i-nodes
des fichiers ouverts est k*n octets

→ seul cet espace pourra être réservé à l'avance.

155
Stockage des fichiers: Avantage des i-node
● Le tableau des i-node des fichiers ouverts est plus petit que l'espace occupé
par la table du cas de l'allocation par liste chaînée indexée.

– La taille de la table de maintient de la liste chaînée croît proportionnellement


avec la taille du disque : si le disque contient n blocs la table contient n entrée
→ elle croît linéairement à mesure que la taille du disque augmente

– Le concept de i-node requiert un tableau en mémoire dont la taille est


proportionnelle au nombre maximum de fichier qui peuvent être ouvert
simultanément → quelque soit la taille du disque

156
Stockage des fichiers : Problème des i-node
● Les i-nodes posent cependant un problème :

– si chacun d'eux a la place pour un nombre donné


d'adresse disque, que se passe-t-il lorsqu'un fichier croît
au-delà de cette limite ?

– La solution est de réserver la dernière adresse disque,


non pour un bloc de données du fichier mais pour
l'adresse d'un bloc comprenant plusieurs adresse
supplémentaire

157
Organisation de l’espace du disque Repérage
des blocs libres
● Dès qu’on a choisi la taille des blocs, on doit trouver
un moyen de mémoriser les blocs libres

● Les deux méthodes les plus répandues sont


– Liste chaînée
– Table de bits

158
Organisation de l’espace du disque Repérage
des blocs libres

159
Organisation de l’espace du disque Repérage
des blocs libres
● La première méthode consiste à utiliser une liste
chaînée des blocs du disque, chaque bloc contenant des
numéros de blocs libres.

● La deuxième technique de gestion des espaces libres


a recours à une table de bits, chaque bit représentant
un bloc et valant 1 si le bloc est occupé (ou libre suivant
le système d’exploitation).
– Un disque de n blocs requiert une table de n bits.

160
Organisation de l’espace du disque Repérage
des blocs libres - liste chaînée
Considérons un disque dur de 500GB. Une taille d'un bloc de 1KO.
→ Le disque contient (500* 2³⁰ )/ (1*2¹⁰ *2³)= 500* 2¹⁷ blocs
Le numéro de bloc codée sur 32 bits. c’est la Taille d'un élément de la
liste chaînée => un bloc contiendra 2⁸ =256 numéros de bloc libres
● Nombre de numéro de bloc libre que peut contenir un bloc de 1Ko =
● Taille d'un bloc en bit / taille du numéro du bloc
● (2¹⁰ * 2³ )/2⁵ = 2⁸ =256 numéros
Le nombre de blocs nécessaires pour adresser tous les blocs du disque
dur : (500*2¹⁷ / 2⁸ = 500*2⁹ blocs)
→ 256000 blocs !!!!
161
Organisation de l’espace du disque Repérage
des blocs libres – table de bit
Considérons un disque dur de 500GB. Une taille d'un bloc de 1KO.
→ Le disque contient 500* 2¹⁷ blocs

1 bloc est représenté par un bit → taille max de la table de bit = 500*
2¹⁷ bits

Pour adresser tous les blocs du disque dur il nous faut combien de
blocs ??
→ 500* 2¹⁷ bits / 2¹⁰ *2³ bits = 500*2⁴ = 8000 blocs

162
Exemple de systèmes de fichiers
Les systèmes de fichiers de MSDOS : FAT (16/32) Taille maximale d'un fichier MSDOS

● C'est un système de fichier qui a été ● MS-DOS enregistre la taille exacte


utilisé sur les premiers ordinateurs du fichier en utilisant un nombre
personnels d'IBM sur 32 bits – Les fichiers peuvent
ainsi avoir en théorie une taille
– Il est utilisé (Fat32) dans toutes les maximal de 4Go (2^32 =
version de Windows et dans des 4294967296 = 4Go). – Cependant,
appareils embarqué la taille maximale d'un fichier est
– Il est utilisé par Apple dans ces limité à 2Go.
appareils embarqué
– Plus utilisé que le système de fichier
moderne NTFS (journalisé)
163
MSDOS et FAT
● MS-DOS conserve une trace des blocs de fichiers dans une table
d'allocation en mémoire principale

– L'entrée du répertoire comprend le numéro du premier bloc

– Celui-ce sert de l'index dans les entrées de la FAT (File Allocation


Table) de 64 Ko qui présente en mémoire principal

– En suivant le chaînage, on peut trouver tous les blocs

164
FAT 12 – 16 -32
● Il existe trois versions du système de fichier de type
FAT : FAT-12, FAT-16 et FAT-32, selon le nombre de bits
d'une adresse disque

● FAT-32 porte mal son nom, puisque seuls les 28 bits


de poids faible des adresses disque sont employées.
– On aurait dû l'appeler FAT-28 !

165
Taille maximale de partition dans FAT-16
● FAT avec des pointeurs de disques de 16 bits

– Taille de bloc de 8,16,32 Ko

– Taille maximale de la partition 2¹⁶ adresses x 32 Ko


chacune = 2 Go

– Un disque supporte 4 partitions → taille maximal d'un


disque de 8 Go

166
Taille maximale de partition dans FAT-32
● FAT avec des pointeurs de disques de 28 bits
– Taille maximale de la partition = 2²⁸ adresse x 32
Ko = 2²⁸ x (2⁵ ) x (2³²) = 2 To

167
Avantages de FAT-32
● Nombre de partition :
– Un disque de 8Go peut être constitué d'une seule partition au lieu de 4 (dans FAT-
16).

● Taille de bloc :
– FAT-16 doit absolument utilisé un bloc 32 Ko pour une partition de 2 Go
– FAT-32 on peut utilise des blocs de 4 Ko pour une partition de 2 Go
– L'avantage de disposer de blocs de plus petite taille est que l'on gaspille moins
d'espace
● un fichier est de 10 octets occupe 32 Ko d'espace disque
● Avec un fichier de 8 Ko et des blocs de 32 Ko : 3/4 du bloc gaspillé
● Avec un fichier de 8 Ko et un bloc de 4 Ko → pas de gaspillage disque

168
Système de fichier d'UNIX
● Un répertoire UNIX comprend une entrée pour chaque fichier
de ce répertoire.

● Chaque entrée est extrêmement simple


– Le nom du fichier (14 octets)
– Et le numéro de son i-node (2 octets)
– Ces paramètres limitent à 64 Ko le nombre de fichier par
système de fichier

169
Les i-nodes sous UNIX
● Un i-node unix stocke à la fois les attributs (metadata) ainsi que les pointeurs sur les blocs

● Les i-nodes UNIX contiennent certains attributs


– La taille du fichier
– Trois information temporelles
● Date et heure de créations
● Date et heure du dernier accès
● Date et heure de la dernière modification
– Le nom du propriétaire
– Le nom du groupe
– Les information de protection
– Un compteur indiquant le nombre d'entré de répertoires pointant sur lui (pour les liens)
● Un compteur indiquant 0 → l'i-node est récupéré et les blocs de disque sont placés dans la lste
des blocs libres

170
Les i-nodes sous UNIX
● Les 10 (12) premières adresses des locs sont enregistrées
dans l'i-node lui-même
– Pour les petits fichiers, toutes les informations
nécessaire se trouvent dans l'i-node, lequel est chargé dans
la mémoire quand le fichier est ouvert
– Pour de plus grands fichiers, une des adresses de l'i-
node correspond à l'adresse d'un bloc de disque appelé
bloc de simple indirection (single indirect block)
● Ce bloc contient non pas de données mais des
adresses supplémentaires

171
Les i-nodes sous UNIX
● Si cela n'est pas suffisant, une autre adresse de l'i-node, appelée
bloc de double indirection (double indirect block), contient
l'adresse d'un bloc qui contient une lise de bloc de simple
indirection
– Chacun de ces blocs de simple indirection pointe sur quelques
centaines de blocs de données

● Si cela ne suffit toujours pas, on peut avoir recours à un bloc de


triple indirection (triple indirect block)

172
Les i-nodes d'UNIX

173
Les i-nodes d'UNIX
● Exemple : chemin d'accès /usr/ast/mbox

174
175

Vous aimerez peut-être aussi