Vous êtes sur la page 1sur 124

Introduction aux systèmes

d’exploitation

Filière Réseaux et Télécoms


EMI
FZ Belouadha
Z Bakkoury

2020-2021 1
Plan

 Introduction

 Gestion de Processus
 Système de gestion de fichiers

 Gestion de la mémoire

 Les Entrées/Sorties

2
Introduction

 Système informatique
 Fonctionnalités du SE

 Historique

 Classes des systèmes

 Modes d'exécution et Appels systèmes

 Interpréteur de commandes

3
Système informatique

Applications (Jeux, Word,…)


Programmes
Système

Compilateur Editeur Interpréteur de commande


Système d’exploitation
Matériel

4
Fonctionnalités du SE (1/3)

 Offrir une machine virtuelle

 Interface plus simple à utiliser que le matériel.

 Exemple : Utilisation du contrôleur de disquettes


 16 commandes : lecture, écriture d’un secteur,
déplacement de bras, formatage,…
 Une Commande a plusieurs paramètres :
nombre de secteurs, distance entre les
secteurs, Numéro de secteurs…
 démarrer le moteur… 5
Fonctionnalités du SE (2/3)

 Gérer la mémoire pour l'exécution des tâches


 Gérer et conserver l'information
 Assurer l'interaction et la communication
entre programmes
 Assurer la protection et gérer les erreurs…
6
Fonctionnalités du SE (3/3)

 Gérer et contrôler les ressources partagées


 Répartir les ressources entre les utilisateurs ou
programmes demandeurs
 Eviter les conflits d’accès à ces ressources
 Exemple : Partage d’imprimante
 Verrouiller l’accès à l’imprimante lors
d'impression
 Gérer les tampons d’impression

 Gérer la file d’attente…


7
Historique
 Premiers systèmes, Tubes à vide
(1945−1955)
 Systèmes de traitement par lot, transistors
(1955−1965)
 Systèmes multiprogrammés et à temps
partagé, Circuits intégrés (1965−1980)
 Systèmes des ordinateurs personnels, LSI
(1980-1990)
 Systèmes "micro-noyau", VLSI (1990…)

8
Premiers systèmes (1945−1955)
 Machines à tubes à vide volumineuses, très
fragiles et très lentes
 Absence de système d’exploitation
 Calculs simples (tables des sinus et cosinus)
 Programmation en langage machine sur des
cartes enfichables ou cartes perforées
 Construction, programmation et maintenance
effectuées par un seul groupe
 Système mono-usager (réservation)
 Mauvaise utilisation de la CPU 9
Systèmes de traitement par lots
(1955−1965)
 Machines à transistors fiables mais coûteuses
 Programmation en Fortran et Assembleur
 Premiers logiciels de base : chargeur et
compilateur Fortran
 Distinction entre opérateurs, constructeurs,
programmeurs et utilisateurs
 Soumission des travaux
 Enchaînement des travaux par l'opérateur
 Inactivité de la CPU lors de la préparation

 Traitement par lots 10


Traitement par lots : Inconvénients
 Mono-programmation

 CPU encore mal utilisée (E/S)

 Machines incompatibles et SE différents :


 IBM 7094 : calcul scientifique (equ. diff…)
 IBM 1401 : traitement commercial (tri,
impression…)
 Coût de maintenance élevé
11
Systèmes multiprogrammés et à temps
partagé (1965−1980)
 Machines à circuits intégrés moins coûteuses
et plus performantes

 Famille d’ordinateurs compatibles et SE


unique (machines avec même architecture et
jeu d’instructions : IBM 360, 370…)

 E/S spoolées : Utilisation de la MS au lieu


des bandes magnétiques

 Apparition de la multiprogrammation 12
Multiprogrammation
 Exécution d'une autre tâche si celle en cours
attend une E/S
Travail1
 Partitionnement de la mémoire Travail2
(plusieurs tâches à la fois en MC)
 Ordonnancement des travaux …
SE

 Systèmesnon interactifs
 Systèmes à temps partagé
13
Systèmes à temps partagé (time sharing)
 Partage de l'UC entre plusieurs tâches par
quantum de temps  Traitement "simultané"
 Plusieurs utilisateurs connectés en ligne sont
servis à la fois de façon interactive
 Systèmes d’exploitation complexes
 CTSS
 MULTICS (MULTiplexed Information and
Computing Service) ancêtre d'Unix
 Unix (le plus porté)
14
Systèmes des ordinateurs personnels
(1980-1990)

 Machines à circuits LSI (Large Scale


Integration) : des transistors au cm2
 Machines moins coûteuses

 Ms-Dos, Windows, Mac OS, Linux…

 Apparition des systèmes centralisés en


réseaux
 Apparition des systèmes distribués

15
SE en réseaux et SE répartis
 SE en réseaux (Windows, Linux…)
 Chaque machine a son propre SE
 Connexion à des machines distantes, transferts
de fichiers
 Machine utilisée par plusieurs utilisateurs

 SE répartis ou distribués
 Système réparti sur un domaine
 1 Machine virtuelle (à plusieurs processeurs)

 Transparence à la localisation des ressources

 Fiabilité et tolérance aux pannes 16


Systèmes "micro−noyau" (1990…)
 Systèmes embarqués réalisés avec + ou - de
modules (fonctions)

 Adaptés aux ordinateurs portables et de


poche
 PDA : Personal Digital Assistant
 PIC : Personal Intelligent Communicator

 Palm OS, Windows CE…


17
Classes des systèmes
Selon les contraintes d'utilisation
 Mono-utilisateur/mono-tâche (MS-DOS)
 Un seul utilisateur/une seule tâche à la fois
 Mono-utilisateur/multi-tâches(Windows XP)
 Un seul utilisateur à la fois exécute plusieurs
tâches simultanément
 Multi−utilisateurs/multi-tâches (Unix)
 Plusieurs utilisateurs à la fois exécutent chacun
plusieurs tâches simultanément et partagent les
mêmes ressources matérielles
18
Classes des systèmes
Selon les services
 Systèmes temps réel
 Utilisés dans des domaines spécifiques
(procédés, robotique, centrales nucléaires…)
 Temps de réponse des tâches critiques court

 Fiables et tolérants aux pannes

 Systèmes transactionnels
 Gestion des bases de données énormes (systèmes
de réservation, systèmes bancaires…)
 garantir des mises à jour sans incohérence
19
Classes des systèmes
Selon l'architecture matérielle
 Systèmes mono-processeur
 Multiprogrammés et à temps partagé (pseudo-
parallélisme)

 Systèmesparallèles : multiprocesseurs
(SunOS 4, SunOS 5, Solaris 2 et Linux)
 Traitement parallèle par plusieurs processeurs
 Grande capacité de traitement, temps de
réponse court et fiabilité
20
Modes d'exécution
 Mode utilisateur : non protégé
 Exécution des programmes des utilisateurs
 Permet à l'utilisateur de modifier des données de
son programme

 Mode noyau : protégé et réservé au SE


 Accès au code et données utilisées par le SE
 Lecture et écriture sur les ports d’E/S

 Permet de protéger les données sensibles


21
Interpréteur de commandes
 Utilitaire et non pas une partie du SE

 Exemple : Shell sous Unix

 Il tourne constamment dès la connexion

 Dès qu'une commande (ls, cat, sort… sous


Unix) est lancée, il fait un appel système à la
fonction correspondante.
22
Chapitre 2 : Gestion de processus

 Notions de processus
 Gestion de processus

 Gestion des interruptions

 Appels système sous Unix

 Ordonnancement de processus

23
Notions de processus
 Processus=programme en cours d'exécution

 Un processus est exécuté par un processeur

 Plusieursprocessus peuvent être associés à


un programme

 Chaque processus possède un espace de


travail en mémoire, son compteur ordinal et
ses registres
24
Espace de travail d’un processus

Appels de fonctions + Pile


Variables locales

Variables globales + Données


Allocations dynamiques
Code
Instructions

25
Systèmes à temps partagé

 Le processeur est commuté entre plusieurs


processus
 Un seul processus est exécuté à la fois

 Tous les processus progressent (Pseudo


parallélisme)

26
Etats d'un processus

 Actif (élu)
s'il est en cours d'exécution par le processeur
 Prêt

s'il est en attente du processeur pour s'exécuter


 Bloqué

s'il est en attente d'un événement extérieur


(lecture disque/clavier, données d’un autre
processus…)
 …
27
Exemples sous Unix

 who | wc -l
 Le processus wc se bloque en attente des
résultats du processus who

 cc programme.c & cat lettre.txt


 cc et cat sont 2 processus concurrents
 Le processus cc reste prêt en attente de
l'exécution du cat 28
Diagramme de transitions d'états d'un
processus

3 Actif
1

Bloqué Prêt

4
29
Exemple de transitions d'états
Processus A Processus B Processus C
Exécution
Lecture du fichier Exécution
Données disponibles Exécution
Exécution Affichage à l'écran
Exécution
Ecriture fichier Exécution
Exécution Données transférées Fin du processus
Lecture du fichier Exécution
30
Exemples de processus

 Une maman (Processeur) prépare une recette


avec des ingrédients (processus).
 Sa fille est piquée par une abeille (événement
prioritaire)
 La maman interrompt la préparation, marque
le point où elle a interrompu la recette et
soigne sa fille grâce au livre de soins (autre
processus).
 La maman peut reprendre la recette là où elle 31

l’avait interrompue
Gestion de processus

 Chaque processus possède un PCB (Process


Control Block)
 Compteur ordinal,
 Registres de l’UC (Pointeur pile, pointeur code,
pointeur données…)
 Numéro du processus (PID), PPID, état, priorité,
 Liste des fichiers ouverts, E/S utilisées,
 Temps UC utilisé,
…
 LesPCBs sont rangés dans une table de 32
processus
Création de processus

 Un processus ne peut être créé que par un


autre au moyen d'un appel système
 Un fils a un PCB initialisé à celui du père
(sauf le PID, le PPID et le temps UC) et une
copie des blocs de données et de code
 Les processus sont structurés en arborescence
à partir d'un ancêtre créé au démarrage
init
Ksh (Korn shell)… Démon1
Cas d'Unix :
pwd … ls 33
Destruction de processus

 Un processus est détruit en général à la fin


de son exécution
 Il peut être détruit à la demande d'un autre
processus ayant ce droit (comme le père)
 Lorsqu'un processus est détruit, son PCB et
ses ressources sont libérés
 La destruction du père peut entraîner celle de
sa descendance 34
Commutation et ordonnancement de
processus
 Le processeur bascule successivement d'un
processus à l'autre à chaque fin de quantum
 Le processeur est commuté également suite à
un appel système ou une interruption : E/S…
 La commutation est réalisée au moyen d'un
ordonnanceur et un mécanisme d'interruption
 L'interruption provoque un changement de
contexte (CO, registres…)
 L'ordonnanceur choisit parmi les processus
prêts celui qui doit devenir actif 35
Commutation de processus

36
Interruptions
 Une interruption est provoquée par un signal
généré par le matériel
 Les interruptions sont dues à des événements
internes ou externes et peuvent être de type :
 Horloge (Quantum épuisé)
 Disque (E/S)
 Appel système fait par le processus…

A chaque type est associée une routine de


traitement d'interruption dont l'adresse se
trouve dans le vecteur d'interruption
37
Types d'interruptions Unix

N° d'interruption Type
0 Horloge
1 Disque
2 Terminaux
3 Autres périphériques
4 Logicielle (Traps)
5 Autres
38
Appels systèmes
 Unappel système est un moyen d'accès aux
données sensibles protégées par le système
(mémoire, disque…)

 Un appel système provoque une interruption


logicielle (trap) suivie du chargement du
code de la fonction appelée

 Un appel système n’est en général pas


interruptible (haute priorité : swapper…)
39
Appels système pour la gestion de
processus sous Unix (1/3)

 Identification
 int getpid(void) : identité du processus courant
 int getppid(void) : identité du processus père

 Création :
 int fork(void) : crée un processus fils et retourne
 -1 en cas d’erreur

 0 dans le processus fils

 L'identité du fils dans le processus père

40
Appels système pour la gestion de
processus sous Unix (2/3)
 Terminaison
 void exit(int ) : termine le processus appelant et
met la valeur int dans son PCB
 Attente :
 int wait(int *) : provoque une attente de la fin
d’un processus fils et retourne
 -1 si le processus n'a pas de fils

 Identité d'un processus fils terminé (Retour

immédiat ou blocage jusqu’à terminaison


d’un fils)
41
Appels système pour la gestion de
processus sous Unix (3/3)

 Recouvrement : Le code du processus


appelant est remplacé par un nouveau code
donné en paramètre
 6 primitives exec (nombre de paramètres)
 execv(char *, char *[])
 execvp(char *, char *[])
 execve(char*, char*[], char*[])
…

42
Ordonnancement (scheduling)
 L'ordonnanceur élit un processus prêt selon
un algorithme
 L'algorithme doit garantir :
 Equité
 Efficacité (Taux d’utilisation )
 Temps de réponse minimal
 Temps moyen d'exécution minimal (Attente )
 Rendement maximal (Travaux effectués )
2 types d'ordonnancement : avec réquisition
et sans réquisition
43
Ordonnancement et algorithmes sans
réquisition
 Un processus n'est élu qu'après terminaison
ou blocage du processus courant
Appliqué dans des systèmes de traitement
par lot
 Premier arrivé, premier servi
 File d'attente ordonnée selon l'ordre d'arrivée
 Plus court d'abord
 Suppose que les temps d'exécution sont connus
d'avance
 File classée par lots de processus arrivés au
même instant
44
Ordonnancement avec réquisition
 Suspension du processus courant suite à une
interruption horloge (expiration du quantum)
ou une autre interruption matérielle

 Choix du quantum est crucial (100ms)


 Trop petit => moins d'efficacité
 Trop élevé => temps de réponse élevé

 Des mécanismes de résolution de conflit


d'accès sont nécessaires (synchronisation)
45
Algorithmes avec réquisition (1/2)

 Circulaire ou tourniquet (round robin)

 Utilise une liste circulaire chaînée


 Le processeur est retiré et alloué au processus
suivant à la fin d'un quantum de temps ou au
blocage ou achèvement du processus courant
 Algorithme simple et fiable

46
Algorithmes avec réquisition (2/2)

 Avec priorité
 Les processus sont rangés par classes de
priorité
 Les processus de la classe de haute priorité
sont exécutés en premier
 A chaque classe correspond une file d'attente
gérée par l'algorithme du tourniquet
 En général, les priorités sont dynamiques afin
d'éviter le monopole de l'UC
47
Ordonnancement dans Unix

2 classes de priorité : noyau et utilisateur


 Chaque classe contient plusieurs priorités
 A 1 priorité est associée 1 file de processus
 Priorités dynamiques
 Les processus de haute priorité sont non
interruptibles
 Un processus modifie sa priorité par l'appel
système : int nice(int) de unistd.h
 Un super-utilisateur peut supprimer un travail
48
gourmand
Synchronisation des processus
 Les processus concurrents peuvent être
coopératifs ou indépendants
 Les processus peuvent coopérer en
partageant des ressources (mémoire,
imprimante…) ou par communication de
données
 L'accès concurrent peut engendrer des conflits
 Le SE permet de synchroniser les activités
des processus et l'accès aux ressources en
cas d'accès concurrents
49
Exemple du spool d'impression

out=3 fichier3
 Fichiers à imprimer classés dans un
4 fichier4
répertoire dans l'ordre de leur arrivée 5 fichier5
in=6

 Processus demandeur d'impression met le fichier à


imprimer dans le prochain emplacement libre (in)

 Processus d’impression retire le prochain fichier à


imprimer (out)
50
Accès concurrents et Sections critiques
 Demande d’impression :
 1. lire in;
 2. placer_fichier (in);
 3. in=in + 1;

 Accès concurrent à la variable partagée in


 Les processus A et B demandent simultanément
l’impression mais A est interrompu avant 3
 Demande d’impression est une section critique
 Partie du programme où peut se produire des
accès concurrents
51
Exclusion mutuelle

 Deux processus ne peuvent utiliser la section


critique (SC) à la fois

 Contrôler l'accès et la sortie de la SC


 1- Réserver l'accès si la SC est libre ou attendre
 2- Utiliser la SC
 3- Signaler la sortie de la SC aux autres

52
Règles de la synchronisation

 Exclusion mutuelle
 Famine : Aucun processus ne doit attendre
trop longtemps pour entrer en SC
 Interblocage : Aucun processus suspendu en
dehors des sections critiques ne doit bloquer
les autres
 Aucune hypothèse sur les vitesses relatives
des processus
53
Solutions pour la synchronisation
 Masquage des interruptions

 Solutions avec attente active


 Verrous
 TSL

 Alternance

 Alternance de Peterson

 Solutions sans attente active


 sleep et wakeup, Les sémaphores, Les
moniteurs, La communication par message
54
1ère Solution :
Masquage des interruptions
 Masquer les interruptions avant d’entrer en
SC et les restaurer après
 Plus de commutation : l’interruption horloge
est ignorée
 inadaptée aux systèmes multi-processeurs

 Dangereuse

 Inéquitable

 Peut bloquer un processus prioritaire

55
Solutions avec attente active :
Les verrous
 Algorithme :
 1- while (verrou == 1) ; /*Attente active*/
 2- verrou=1 ; /*Verrouillage*/
 3- section_critique();
 4- verrou=0 ; /*Déverrouillage*/
 Attente active : un processus ne pouvant
entrer en SC utiliserait l’UC inutilement
 Deux processus se trouvent à la fois en SC :
 Si le système est multi-processeur
 S'il y a interruption entre 1 et 2

Protéger le verrou par l'instruction TSL 56


Solutions avec attente active :
L'instruction câblée TSL
 L'appel de TSL bloque l'accès en mémoire
 Algorithme :

Entrer_en_SC :
 TSL reg,verrou ;met la valeur du verrou dans le
;registre et la remplace par 1 en
;mémoire si elle est nulle
 CMP reg,0 ;Teste si verrou est libre
 JNZ Entrer_en_SC ;Boucle si verrou non libre

 CALL Section_Critique

 MOV verrou,0 ;Libération du verrou 57


Solutions avec attente active :
L’alternance
 Algorithme d’utilisation pour N processus
While (1) {
 while (tour != monNumero) ; /*Attente active*/
 Section_critique();
 tour = (monNumero +1) % N ; /*Au suivant*/
 Suite du programme }

 Simple et facile
 Famine si le tour est cédé à un processus non
intéressé immédiatement par la SC
 Interblocage si le tour est cédé à 1 processus
bloqué 58
Solutions avec attente active :
Solution de Peterson (1981)

 Plus de famine ni d'interblocage


 Un processus souhaitant utiliser la SC doit le
signaler et positionner soit même la variable tour
 Un processus intéressé peut entrer en SC même
si c’est pas son tour quand l’autre ne l’est pas

 Utilise un drapeau (tableau) et une variable


tour
59
Solutions avec attente active :
Solution de Peterson (1981)
 Algorithme pour deux processus P0 et P1
 interesse[ps]=1 ; /*Lever le drapeau*/
 tour = ps ; /*Passer en dernier*/

 while (tour==ps && interesse[1-ps]==1);

 Section_critique();

 interesse[ps]=0;

 Attente active
 Processus prioritaire est mis en attente si
l'autre est intéressé et a le tour
60
Solutions sans attente active

 Un processus s'endormit et ne sera réveillé


que lorsqu'il pourra entrer en SC
 Appels système sleep et wakeup

 Les sémaphores

 Les moniteurs

 La communication par message

61
Exemple du Producteur/Consommateur
 Producteur : Vérifie si le tampon est plein
 Consommateur : Vérifie si le tampon est
vide
 Le producteur informe le consommateur en
attente d'un objet dans le tampon
 Le consommateur informe le producteur en
attente d'un emplacement vide
 Deux processus ne doivent accéder
simultanément au tampon
62
Exemple du Producteur/Consommateur
Algorithme du producteur
 while (1) {
 produire_objet(…) ;
 if (compteur == N) sleep () ; /*Si tampon plein*/
 while (verrou == 1) ; /*attendre l'accès au tampon*/
 verrou=1 ; /*Verrouillage d'accès au tampon*/
 mettre_objet(…) ;
 verrou=0 ; /*Déverrouillage*/
 compteur ++;
 if (compteur == 1) /*Si le tampon était vide*/
 wakeup(consommateur) ;
 }
63
Exemple du Producteur/Consommateur
Algorithme du consommateur
 while (1) {
 if (compteur == 0) sleep() ; /*Si tampon vide*/
 while (verrou == 1) ; /*attendre l'accès au tampon*/
 verrou=1 ; /*Verrouillage d'accès au tampon*/
 retirer_objet(…)
 verrou=0 ; /*Déverrouillage*/
 compteur -- ;
 if (compteur == N-1) /*Si le tampon était plein*/
wakeup (producteur) ;
 consommer_objet(…) ;
 }
64
Chapitre 3 : Système de Gestion de
Fichiers

 Introduction

 Concepts de fichiers et répertoires


 Stockage des fichiers et répertoires

 Structure logique et physique du disque

 Organisation du disque

 Quelques appels système

65
Introduction

2 types de mémoire : Centrale et Secondaire


 Mémoire secondaire ?
 Disque, disquettes, CD-ROM… moins coûteux
et de grande capacité mais d'accès lent
 Support de stockage permanent d'informations
énormes dans des fichiers et répertoires
 Unsystème de gestion de fichiers est
nécessaire
66
Système de Gestion de Fichiers
 Objectifs
 Gérer l'information (organisation sur le disque,
protection, partage…)
 Offrir une interface permettant d'y accéder :
Création, lecture…suppression indépendamment
de la structuration physique
 Fonctions
 Allouer et récupérer de la MS
 Mémoriser les zones libres en MS
 Optimiser le temps d'accès et protéger
l'information
67
Concepts de fichiers
 Un fichier est la plus petite unité de stockage
d'informations en MS
 Il est stocké en mémoire secondaire selon
une représentation physique (série de blocs)
 Il est accessible à l'utilisateur par son nom
(représentation logique)
 La correspondance entre les représentations
logique et physique est assurée par le SE

68
Types de fichiers
 Fichiers ordinaires
 contiennent les données des utilisateurs

 Fichiers spéciaux (bloc ou caractère)


 modélisent les disques ou les périphériques d'E/S
(bloc: disque,bande…/caractère: écran,clavier…)

 Répertoires
 sont des regroupements de fichiers et/ou d'autres
répertoires
69
Fichiers ordinaires
 Types
 Fichiers Texte : lignes de codes ASCII
 Fichiers binaires à différentes structures
internes (fichiers exécutables, archives…)
 Opérations
 Création/Suppression
 Lecture/Ecriture,

 Ouverture/Fermeture,

 Concaténation, Copie, renommage…


70
Exemple de structures internes de
fichiers binaires sous Unix
Nombre magique Nom du module

Entête
Taille code Taille Date Propriétair
données e
Entête

Protection Taille
Taille BSS Taille table
symboles Module object

Entête
Code
Module object
Données
Entête
Numéros de ligne
Module object
Table des symboles
Fichier exécutable Fichier d'archive 71
Attributs de fichiers
 Différents attributs
 Type
 Nom
 Taille
 Propriétaire
 Dates (création, dernière modification, dernier
accès…)
 Protection (droits d'accès : lecture, écriture,
exécution)
 ...
72
Attributs de fichiers sous Unix
 $ ls −l
−rw−r−−r−− 1 c1 cours 342 Oct 18 15:28 fichA
Nom
Date de modification
Taille
Groupe
Propriétaire
Liens
Droits d'accès des autres
Droits d'accès du groupe
Droits d'accès du propriétaire
Type (-, d, b ou c)
73
Opérations sur les fichiers sous Unix

 Quelques commandes sous Unix

 cat fichier1 fichier2


 cp fichier1 fichier2

 mv fichier1 fichier2

 rm fichier

74
Typages et extensions de fichiers
 Typage fort (MS-DOS)
 L'extension (.txt, .dat, .exe…) est nécessaire
pour déterminer la nature des fichiers
 Un fichier dans MS-DOS ne peut être exécuté
que s'il porte l'extension .exe, .com ou .bat

 Typage déduit (Unix)


 L'utilisation d'extension est indifférente
 La nature du fichier est déduite par le système
75
Concepts de répertoires
 Les répertoires (catalogues) assurent une
meilleure organisation des informations
 Organisation
 à un niveau:1 répertoire pour tous les utilisateurs
 à 2 niveaux: un répertoire pour chaque utilisateur
 arborescente: plusieurs répertoires par utilisateur
(Unix, Dos)
Root
User1 User2 User3

76
Représentation des répertoires
 Liste dont chaque entrée représente un fichier ou
répertoire,en général, par son nom, ses attributs et
le numéro de son premier bloc

Fichier1 Attributs+N° Fichier1


Fichier2 Attributs+N° Fichier
Fichier3 Attributs+N° 2
Fichier
Fichier4 Attributs+N° 3
Fichier
4
Attributs+N° dans le répertoire Attributs+N° dans des structures
(Ms-Dos) (Unix)
77
Opérations sur les répertoires
 Différentes opérations
 Création, destruction, Liste du contenu,
changement de répertoire, Accès aux fichiers…
 Quelques commandes sous Unix
 mkdir répertoire
 rmdir répertoire
 ls répertoire
 cd répertoire
78
Structure physique des fichiers
 Suite d’octets (Unix, MS-DOS)
 Suite d'enregistrements de taille fixe (CP/M)
 Arbre d'enregistrements de taille variable
(ISAM : Indexed Sequential Access Method)
 classés dans des blocs hiérarchiques selon
les valeurs de leurs clés
A G N

B E H K M P

I J 79
Stockage des fichiers

 Un fichier est stocké en MS sous forme de


blocs d'octets
 L'allocation des blocs d'un fichier en MS
influe sur la performance du SGF
 Deux stratégies d'allocation
 L'allocation contiguë
 L'allocation non contiguë

80
Allocation contiguë
 Allocation d'un nombre de blocs consécutifs
selon la taille du fichier
MS
Fichier1 Fichier2
 Implémentation simple
 Accès rapide
 Gaspillage de mémoire (fragments inutilisés)
 Compactage coûteux de fichiers
 Déplacement du fichier en cas de son
extension (Réallocation mémoire)
81
Allocation non contiguë
 Allocation de blocs de fichier non forcément
consécutifs
MS
Blocs du Fichier 5 6 1 2 3 4
 Pas de gaspillage mémoire
 Extension de fichiers sans réallocation
 Trois méthodes pour retrouver les blocs
 Liste chaînée de blocs
 Liste chaînée indexée (des numéros de blocs)
 I-noeud
82
Liste chaînée de blocs
 Un bloc contient des données et un pointeur
sur le numéro (en mémoire) du bloc suivant
Pointeurs
MS
0 34 6 8 910
Premier bloc du fichier
 Accès lent : parcourir tous les blocs
précédents à un bloc pour le retrouver
 Les pointeurs sont stockés sur le disque
83
Liste chaînée indexée
 Listechaînée de numéros de blocs : File
Allocation Table (MS-DOS et OS/2)
 Entrée=N° du bloc suivant | EOF | inutilisée
 Le numéro du premier bloc du fichier se
trouve dans le catalogue
EOF 4 8 1 6 9 5 EOF 2
0 1 2 3 4 5 6 7 8 9 10 11
Début du fichier1 Début du fichier2
 La FAT contient une entrée par bloc (utilisé
ou non) du disque
84
Avantage et inconvénients de la FAT

 Accèsrapide si la table est entièrement


présente en permanence en MC

 FAT de grande taille si le disque l'est (même


si peu de blocs utilisés)

 Toute la FAT est nécessaire Même s'il y a un


seul fichier ouvert

85
I-nœud (Unix)

 Petite table par fichier (Nœud d’information)

 Contient les attributs et les adresses de blocs


 1 entrée par adresse pour les 10 premiers blocs
 1 entrée d'indirection simple : adresse d'1 bloc de
256 adresses additionnelles si le fichier est grand
 1 entrée d'indirection double si insuffisant
 1 entrée d'indirection triple si insuffisant

86
Structure d'un i-noeud

87
Avantages des I-nœuds

 Accès rapide : Maximum 4 accès par parcours

 Adapté aux disques de grande capacité


 Seuls les i-nœuds des fichiers ouverts et les
blocs d'indirection utilisés sont en MC

88
Stockage des répertoires

 Table d’entrées : une entrée par répertoire ou


fichier
 Une entrée contient :
 Le nom du fichier ou répertoire
 Les attributs et le numéro du 1er bloc (DOS)

 Le numéro d'i-nœud (Unix)

89
Exemple de répertoire Unix

90
Recherche d'un fichier sous Unix
A partir d’un chemin absolu
 1. accès à la table root directory
 2. accès à l’i-nœud du sous-répertoire ou fichier
 3. accès au N° du bloc du sous-répertoire ou
fichier
 4. si sous-répertoire aller à 2
 5. chargement du i-nœud en mémoire

A partir d’un chemin relatif : idem


 .. : répertoire parent
 . : répertoire courant
91
Structure logique du disque (Unix)
Bloc boot Super bloc Liste des i-noeuds Blocs de données

 Bloc boot occupe en général le 1er secteur et


permet d'amorcer le système
 Super bloc décrit l’état du SGF (nombre de
fichiers qu'il peut stocker, blocs libres, taille
des blocs…)
 Liste des i-nœuds
 Blocs de données : blocs logiques et libres
 Une partie du disque est réservée pour le
swap 92
Structure physique du disque
 Empilement Secteur
de surfaces Cylindre Piste
magnétiques
 Piste : cercle
 Cylindre : ensemble de pistes
de même rayon
 Secteur : fraction de surface
angulaire
 Têtes de lecture et d’écriture : Accès aux
données
 Bras/tour de disque : déplacement des têtes
93
Organisation du disque
 Un bloc est une portion de piste
 Le disque est constitué de blocs de taille fixe
 La taille d'un bloc est multiple d'1 KO
 Doit minimiser le temps d'accès (petit+accès)
 Doit maximiser le taux de remplissage (grand
gaspillage mémoire+chargements inutiles)
 L'accès à un bloc est réalisé au moyen de son
numéro
 Le SGF mémorise les blocs libres et les
blocs occupés 94
Accès aux blocs sur disque
 lecontrôleur du disque convertit une adresse
logique (N° de bloc) en adresse physique
 Adresse physique est fonction de :

N° de cylindre, N° de secteur, N° de surface


 Le temps d'accès à un bloc est constitué de :
 Temps de recherche (Placer la tête sur la piste)
 délai de rotation (Placer la tête sur le secteur)
 Temps de transfert (Lecture/écriture de données)

 Temps recherche+rotation >> temps transfert


 Nécessité du buffer cache
95
Buffer cache

 Mémoire tampon contenant les données les


plus récemment utilisées

 Avantage : minimiser la fréquence d'accès au


disque (accès rapide aux données se trouvant
sur le buffer)

96
Mémorisation des blocs libres

 Mémoriser les blocs libres pour les retrouver


facilement lors d'allocation

 Deux méthodes
 Liste chaînée de blocs
 Table de bits

97
Liste chaînée de blocs
Numéros de blocs
42 230 86
136 162 234
210 612 897
97 342 422
41 214 140
63 160 223

310 180 142


516 482 141
Un bloc de 1KO peut contenir 255 numéros de blocs codés sur 32
bits et un pointeur

 Chaque bloc contient les numéros de blocs


libres et un pointeur vers un autre bloc
 Possibilité de charger un seul bloc en MC
98
Table de bits
 Chaque bloc est représenté par 1001101101101100
0110110111110111
un bit de valeur 0 s'il est libre, 1010110110110110
0110110110111011
1 sinon 1110111011101111
1101101010001111
0000111011010111
1011101101101111
 Facile à utiliser 1100100011101111

 Occupe moins de mémoire


0111011101110111
sauf quand le disque est plein 1101111101110111

(1 seul bit pour chaque bloc)


 Accès rapide si elle est en MC
99
Quelques appels système sous Unix
 Fichiers
 int open(char *nomfic, int mode)
-1 en cas d'erreur O_CREAT, O_RDONLY…
 int read (int fd, char *adresse, int nombre_octets)
 int write (int fd,char *adresse,int nombre_octets)
 int lseek(int fd, int deplacement, int position)
 int close (int fd)…

 Répertoires
 DIR * opendir (char * chemin)
 struct dirent readdir (DIR * pt_repertoire)
100
Chapitre 4 : Gestion mémoire

 Introduction

 Monoprogrammation

 Multiprogrammation avec partitions fixes


 Va et vient et partitionnement dynamique

 Notions de pagination

101
Introduction
 Mémoire Centrale :
 RAM : Random Access Memory
 ROM : Read Only Memory (BIOS)

 Accès rapide mais faible capacité et coût


élevé
 Utilisée lors de l’exécution des programmes
UC MC Périphériques d’E/S

BUS

102
 Un gestionnaire de mémoire est nécessaire
Gestionnaire de la mémoire
 Fonctions
 Connaître les zones libres et utilisées
 Allouer et récupérer la mémoire
 Offrir de la mémoire virtuelle : Utiliser la MS

 Stratégies
 Monoprogrammation
 Multiprogrammation avec partitions fixes
 Va et vient et partitionnement dynamique
 Pagination…

103
Monoprogrammation
 Un seul processus à la fois et entièrement en
MC
 Organisation de la MC : cas de MS-DOS

Pilotes de
périphériques en ROM

Programme

SE en RAM

 Problème : Cas de programme volumineux


ne pouvant tenir en MC
104
Segments de recouvrement (Overlays)
 Solution : Découper le programme en parties
 Modules les plus utilisés placés dans une zone
permanente
 Modules interchangeables dans des overlays
placés dans la zone interchangeable (ZI)
 Si une fonction appelée n'est pas présente dans la
ZI, son overlay sera chargé
 Inconvénients
 Fastidieux : découpage fait par le programmeur
 Chargement d'un overlay entier pour exécuter un
module
105
Multiprogrammation avec partitions fixes
 Plusieurs processus coexistent en MC
 MC répartie en un nombre fixe de partitions
au démarrage (OS 360 d'IBM)
 Un processus est mis dans une file en attente
d’une partition libre
 Deux méthodes de gestion
 Files multiples
 File unique
106
Partitionnement fixe avec files multiples

 Une file par partition Partition


4
Partition
3
 Chaque processus est mis Partition
dans la file de la plus petite 2
Partition
partition pouvant le contenir 1
SE

 Des petits processus en attente alors qu’une


partition grande est libre
107
Partitionnement fixe avec file unique
 Une file pour toutes les partitions Partition
 Attribuer la partition libérée
4
Partition
3
au 1er processus qui y tient
(OS/360) Partition
2
 Problème : Perte de mémoire Partition
1
SE
(1 petit processus dans 1 grande partition)
 Solution
 Attribuer la partition libérée au plus grand
processus qui y tient Attente de petits processus
 Réserver une partition pour les petits processus
 Choisir le processus ayant trop attendu
108
Accès et protection mémoire
 L'exécution de processus ne doit pas générer des
erreurs d'accès en mémoire
 Accéder aux adresses utilisées par le programme sans
erreur indifféremment de sa partition
 Protéger la mémoire : Interdire l'accès à une zone
réservée au SE ou à un autre processus
 Problème : Adresse de début du programme non
connue lors de l’édition de liens  Erreur d'accès
 Programme qui débute par exemple à l'adresse 200
 Appel d’une fonction à l’adresse relative 100 à partir du
début de fichier
 Saut à l’adresse absolue 100 : Erreur !!
109
Accès et protection mémoire :
Solutions (1/2)
 Translation d'adresse :
 L’éditeur de liens insère dans le code la liste des
positions des adresses
 Au chargement, l’adresse de début de partition est
rajoutée à l’adresse relative
 Inconvénient : Pas de protection

 Bits de protection (IBM)


 Associer à chaque bloc mémoire 4 bits de
protection
 Interdire l’accès à tout processus n’ayant pas le
même code dans son PSW
 Inconvénient : Pas d'interaction entre les processus
110
Accès et protection mémoire :
Solutions (2/2)
 Registres de base et de limite
 Registre de base : adresse de la partition
 Registre de limite : longueur de la partition
 Adresse réelle=adresse relative+registre de base
 Base ≤ Adresse réelle ≤ Limite

 Avantages
 Réaliser la translation et assurer la protection
 Déplacer les programmes en MC de façon
transparente
111
Va et vient (swapping) et
Partitionnement dynamique
 Déplacement de processus inactifs en MS si
la MC est insuffisante pour exécuter d'autres
processus
 Partitions variables
Temps

Processus3
Processus2 Processus2
Processus1
Processus1 Processus1
Processus4 Processus4
112
Partitionnement dynamique

 Les nombre, taille et position des processus


varient
 Gestion complexe
 Compactage en cas de fragmentation
 Extension (tas ou pile) complexe
 Déplacer le processus vers 1 emplacement plus
grand
 Déplacer quelques processus vers le disque
 Prévoir un emplacement pour l’extension

113
Réservation de mémoire pour extension
Extension de données Extension de données et pile
Pile B
Disponible
Disponible
Données B
Processus B Utilisé
Programme B

Pile A
Disponible Disponible
Données A
Processus A Utilisé
Programme A
SE SE
114
Mémorisation des zones libres

3 stratégies :

 Table de bits
 Liste chaînée

 Mémoire subdivisée

115
Table de bits
 Diviser la mémoire en unités (quelques mots
mémoire ou plusieurs KO)
 Table de bits : associer à chaque unité 1 si
elle est utilisée, 0 sinon
A B C D
11111000
11111111
11001111

 Recherche lente
116
Liste chaînée
 Chaîner les segments libres (H : Hole) et
occupées (P : Processus)
 Chaque nœud contient l'indicateur H ou P, le
début du segment et sa longueur
A B C D

P 0 5 H 5 3 P 8 6

P 14 4 H 18 2 P 20 4

117
Gestion de la liste chaînée
 Mise à jour de la liste
 facile (liste triée par adresses)
 Nécessite la fusion du segment libéré avec ses
adjacents libres
A X B A B
A X A
X B B
X
 Différents algorithmes pour l’allocation

118
Algorithmes de gestion de la mémoire
(1/2)
 1ère zone libre (First fit)
 Cherche la 1ère zone de taille suffisante
 Rapide (peu de recherche)

 Espace inutilisé si le processus est petit

 Zone libre suivante (Next fit)


 Variante du First fit
 Cherche à partir de la dernière zone libre trouvée

 Moins performante en pratique


119
Algorithmes de gestion de la mémoire
(2/2)
 Meilleurs ajustement (Best fit)
 Cherche la plus petite zone suffisante
 Plus lent (recherche dans toute la liste)
 Fragments inutilisables

 Plus grand résidu (Worst fit)


 Choisir la plus grande zone libre
 Pas de meilleurs résultats en pratique

 Placement rapide (Quick fit)


 Liste de blocs utilisés + Plusieurs listes de blocs
libres : 1 liste par longueur (4, 8,…)
 Recherche accélérée mais fusion compliquée 120
Subdivisions (Buddies)
 Principe

 Subdiviser la mémoire en blocs de taille 2k


 Utiliser un vecteur de listes : Liste d'indice K
chaîne les blocs de taille 2k
 Allouer un bloc de la plus petite taille
satisfaisante 2k s'il y en a, sinon chercher le plus
petit bloc libre (2m, m>k) et le subdiviser
successivement jusqu'à obtenir le bloc voulu
 Fusionner un bloc libéré avec ses copains libres.

121
Exemple de gestion par subdivision
Mémoire
0 128 256 384 512 640 768 896 1Mo
Initialement
A 128 256 512
Demande 70
A B 64 256 512
Demande 35
A B 64 C 128 512
Demande 80
128 B 64 C 128 512
A libéré
128 B D C 128 512
Demande 60
128 64 D C 128 512
B libéré
256 C 128 512
D libéré
1024
C libéré

122
Subdivisions: Avantage et Inconvénient

 Avantage : Accélérer la fusion à la libération


 Chercher les blocs copains dans la liste K

 Inconvénient : fragmentation

123
Pagination
 Charger uniquement les parties nécessaires
dans des pages en MC
 Adopter des techniques de pagination
 Utiliser une mémoire virtuelle (MV=MC+MS)
 Diviser la MV et la MC en pages
 Appliquer le va et vient si la page virtuelle ne se
trouve pas en MC
 Utiliser des algorithmes de remplacement

 Assurer la correspondance entre les pages


virtuelles et physiques au moyen des tables
de pages 124

Vous aimerez peut-être aussi