Académique Documents
Professionnel Documents
Culture Documents
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?
4
Évolution des ordinateurs et des systèmes
d’exploitation
Les origines et
les mythes
(16xx–1940)
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
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.
• 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
13
Évolution des ordinateurs et des systèmes
d’exploitation
Course à la puissance de calculs (années 1970)
15
Évolution des ordinateurs et des systèmes
d’exploitation
L’informatique moderne (1980–1995)
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
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
24
Comment introduire et exploiter les résultats
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
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
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.
35
Caractéristiques 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).
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
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
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
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é.
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.
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
– Segment BSS :
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
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
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.
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.
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
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
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
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
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
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
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é
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 :
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…
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 :
… …
… …
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
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é :
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.
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
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).
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
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
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.
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.
119
Qui les gère alors ?
● Les fichiers sont gérés par le système d’exploitation.
120
Les tâches d'un SGF
121
Deux Visions du système de Fichiers
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.
● 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.
● 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.
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
– 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
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
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).
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
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.
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
141
L'organisation du système de fichier
le superbloc
142
Organisation logicielle de l’espace du disque
143
Organisation de l’espace du disque
Taille des blocs
● Il faut alors déterminer la taille
optimale d’un bloc.
● 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 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ë
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).
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 i-node inclut
1)les attributs
2)et les adresses disque des blocs du 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
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.
156
Stockage des fichiers : Problème des i-node
● Les i-nodes posent cependant un problème :
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
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.
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
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
165
Taille maximale de partition dans FAT-16
● FAT avec des pointeurs de disques de 16 bits
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.
169
Les i-nodes sous UNIX
● Un i-node unix stocke à la fois les attributs (metadata) ainsi que les pointeurs sur les blocs
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
172
Les i-nodes d'UNIX
173
Les i-nodes d'UNIX
● Exemple : chemin d'accès /usr/ast/mbox
174
175