Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 161

1

Cours Système
d’exploitation I
1ERE TI
2
Objectifs

► Il est important d'appréhender la façon dont fonctionne un système


d'exploitation pour améliorer l'efficacité de ses propres programmes ;
► Ce cours a pour objectifs :
► Comprendre les rôles et fonctionnalités d’un système d’exploitation.
► Distinguer les différents types des systèmes.
► Comprendre la façon dont un S.E. fait exécuter les programmes et fait
fonctionner le matériel.
► Comprendre les contraintes de gestion de données sous forme de fichiers.
► …
3
Plan

► Chapitre1 : Généralités sur les systèmes d’exploitation


► Chapitre2 : Gestion des processus
► Chapitre3 : Gestion des fichiers
► Chapitre4 : Gestion de la mémoire
4

Chap. 1
Généralités sur les
systèmes d’exploitation
5
Introduction

► Un ordinateur est formé d’une partie matérielle et d’une partie logicielle. Cette dernière comporte des
logiciels qui sont classés en deux catégories : les programmes d'application des utilisateurs et les
programmes système qui permettent le fonctionnement de l'ordinateur. Parmi ceux-ci, le système
d'exploitation (SE).

► Le système d’exploitation est le logiciel qui prend en charge les fonctionnalités élémentaires du matériel
et qui propose une plateforme plus efficace en vue de l’exécution des programmes. Il gère les
ressources matérielles, offre des services pour accéder à ces ressources et crée des éléments abstraits de
niveau supérieur, tels que des fichiers, des répertoires et des processus.
6
Introduction

► Répondre complètement à cette question n'est pas simple. De manière


pratique, le système d'exploitation est le logiciel le plus important de la
machine, puisqu'il fournit :
► Une gestion des ressources de celle-ci : processeurs, mémoires, disques,
horloges, périphériques, communication interprocessus et inter-machines ;
► Une base pour le développement et l'exécution de programmes et
d'applications.
► Un ensemble de modules logiciels qui servent à gérer les ressources
logicielles et matérielles d’un système informatique. Un S.E. joue le rôle
d’une interface d’interprétation entre l’utilisateur et la couche matérielle.
C’est à vous de répondre à la question « que va-t-il interpréter et dans
quel sens ? ».
7
Historique

1. Première génération (1936-1955)


C'est l'apparition des premiers ordinateurs, à relais mécaniques et à tubes à vide,

programmés par tableaux de connecteurs, puis par cartes perforées au début

des années 50. Ils ont comme utilitée de faire des calculs, C'est aussi l'apparition

du terme « bug »
8
Historique

2. Deuxième génération (1955-1965)


L'apparition du transistor rendit les ordinateurs plus fiables. Ils pouvaient maintenant être
vendus, et l'on vit apparaître pour la première fois la distinction entre constructeur,
opérateur, programmeur, et utilisateur.

Les programmes s'exécutaient par lots « batch ». Un interprète de commandes sommaire


permettait le chargement et l'exécution des programmes dans l'ordinateur. Ainsi, avec le
système FMS (Fortran Monitor System), on soumettait les travaux de la meulière suivante:
9
Historique

► Les machines devaient être installées dans des locaux climatisés,


programmées en FORTRAN ou en assembleur via des cartes perforées que
les programmeurs remettaient aux opérateurs. Les opérateurs chargeaient
les programmes dans l'ordinateur avec le compilateur si nécessaire. Les
résultats étaient imprimés puis remis aux programmeurs.
► ⇒ Ces manipulations engendraient des pertes de temps trop coûteuses vu
l'importance de l'investissement
► Traitement par lots :
10
Historique

► Traitement par lots :

Une machine moins onéreuse (IBM 1401) lisait les cartes (a) pour en recopier
le code sur une bande magnétique (b). Le gros calculateur lisait cette bande
(c), exécutait les jobs (d) puis transcrivait les résultats sur une autre bande (e)
postposant ainsi l'impression des résultats (impression off-line ensuite par un
ordinateur plus léger (f).
11
Historique

► 3. Troisième génération (1965-1980)


► L'avancée technologique majeure de cette génération est l'apparition des
circuits intégrés, qui ont permis de diminuer le rapport coût/performance de
plusieurs ordres de grandeur. La standardisation apportée par les circuits
intégrés s'est également appliquée aux machines, avec l'apparition de familles
de machines, qui partagent le même langage machine et le même système
d'exploitation, pour des puissances et des applications très différentes.

► Le problème majeur de cette approche était de pouvoir disposer d'un système


d'exploitation efficace sur toutes les machines de la gamme, permettant
d'utiliser toute la puissance des gros calculateurs, mais aussi capable de tenir
dans la mémoire des plus petits...
12
Historique

► 4. Quatrième génération (1980-2000)


► Le développement des circuits « LSI » ( Large Scale Integration) puis VLSI,
a permis l'avènement des ordinateurs personnels, qui ne diffèrent que très
peu, du point de vue architectural, des mini- ordinateurs de la génération
précédente.

► Le développement des réseaux de communication et la baisse de leurs


coûts d'accès a permis la création de réseaux locaux de machines, et
conduit à l'explosion d'Internet. Ils sont pris en compte par les systèmes
d'exploitation en réseau, et complètement intégrés dans les systèmes
d'exploitation distribués, qui fournissent une image unifiée de l'ensemble
des machines.
13
Historique

5. Cinquième génération (2000-?)


Représente la génération actuelle des systèmes d’exploitations qui sont adaptées

au taux de transferts de données énormes suite à l’évolution des réseaux ainsi que

des nouvelles technologies des systèmes d’informations tels que les systèmes

repartis, la virtualisation, et le cloud computing, …


14
Categories des Systèmes d’exploitation

► Mono- tâche (DOS) :


A tout instant, un seul programme est exécuté; un autre programme ne
démarrera, sauf conditions exceptionnelles, que lorsque le premier sera
terminé.
15
Categories des Systèmes d’exploitation

► Système multitâches:
► Dans un système d’exploitation multitâche, à un instant donné, plusieurs
tâches peuvent s’exécuter logiquement en parallèle. Ce parallélisme peut
être :
► Vrai : Si l’ordinateur dispose d’au moins deux processeurs pouvant exécuter
simultanément deux activités (système multiprocesseurs)
► Faux : Consistant à replier des activités de plusieurs processeurs fictifs sur un seul
processeur réel (pseudo-parallélisme).
► Le parallélisme peut être considéré comme l’activation de plusieurs
processus.
16
Catégories des Systèmes d’exploitation

► Système multi-utilisateurs:
► conçu pour permettre à plusieurs utilisateurs d'utiliser l'ordinateur
simultanément, tout en limitant les droits d'accès de chacun afin de
garantir l'intégrité de leurs données.
► Le terme opposé est mono-utilisateur qui est utilisé lorsque l'on parle de
systèmes d'exploitation utilisable par un seul utilisateur à la fois ou encore
en référence à une licence de logiciel prévue pour un utilisateur.
17
Catégories des Systèmes d’exploitation

► Mono- session (Windows 98,2000) : au plus un utilisateur à la fois sur une


machine.
► Les systèmes réseaux permettent de différencier plusieurs utilisateurs, mais
chacun d’eux utilise de manière exclusive la machine (multi- utilisateurs,
mono- session)
18
Catégories des Systèmes d’exploitation

► Systèmes Parallèles / multi- sessions (Windows XP, Unix, Linux, VMS) :


► Le « multiprocessing » est une technique consistant à faire fonctionner plusieurs
processeurs en parallèle afin d'obtenir une puissance de calcul plus importante
que celle obtenue avec un processeur haut de gamme
► afin d'augmenter la disponibilité du système (en cas de panne d'un processeur).
► SMP (Symmetric Multiprocessing ou Symmetric Multiprocessor) une architecture
dans laquelle tous les processeurs accèdent à un espace mémoire partagé.
► Un système multiprocesseur doit donc être capable de gérer le partage de la
mémoire entre plusieurs processeurs mais également de distribuer la charge de
travail.
19
Catégories des Systèmes d’exploitation

► Systèmes Embarqués:
► Les systèmes embarqués sont des systèmes d'exploitation prévus pour
fonctionner sur des machines de petite taille, telles que des appareils
mobiles ou des appareils électroniques autonomes (sondes spatiales,
robot, ordinateur de bord de véhicule, etc.)
► Gestion avancée de l'énergie et leur capacité à fonctionner avec des
ressources limitées.
► Fonctionnalités bien précises et spécifiques (CISCO IOS pour le routage,
Android et iOS pour la téléphonie, Multos pour les cartes a puces,…)
20
Catégories des Systèmes d’exploitation

► Systèmes Temps Réel:


► essentiellement utilisés dans l'industrie, sont des systèmes dont l'objectif est
de fonctionner dans un environnement contraint temporellement.
► capable de délivrer un traitement correct des informations reçues à des
intervalles de temps bien définis (réguliers ou non).
► exemples :
► OS-9.
► RTLinux.
► VxWorks.
21
Catégories des Systèmes d’exploitation

► Systèmes Distribués:
► permet l'exécution d'un seul programme sur plusieurs machines,
► distribue les processus et les coordonne ensemble.
► utilisé généralement pour les gros calculs, comme l’inversion de grandes
matrices.
► L’ancêtre du cloud computing.
22
Comparaison des Systèmes d’exploitation
23
Structure en couches d’un SE moderne
24
Fonctionnalités

Le noyau
► Réside en mémoire (fréquence élevée des interventions)
► Petite taille
► Gestion du processeur: reposant sur un allocateur ( dispatcher ) responsable de la répartition du
► temps processeur entre les différents processus, et un planificateur ( scheduler ) déterminant les
► processus à activer, en fonction du contexte.
► Gestion des interruptions : les interruptions sont des signaux envoyés par le matériel, à destination du
► logiciel, pour signaler un évènement.
► Gestion du multi- tâches: simuler la simultanéité des processus coopératifs (i. e. les processus devant se
synchroniser pour échanger des données) et gérer les accès concurrents aux ressources (fichiers,
imprimantes, ...)
25
Fonctionnalités

Le système de gestion de fichiers

► Le concept de fichiers est une structure adaptée aux mémoires secondaires et


auxiliaires permettant de regrouper des données.
► Le rôle d’un système d’exploitation est de donner corps au concept de fichiers (les
gérer, c’est- à- dire les créer, les détruire, les écrire (modifier) et les lires, en offrant la
possibilité de les désigner par des noms symboliques).
26
Fonctionnalités

Les Entrées/ Sorties

► Il s’agit de permettre le dialogue (échange d’informations) avec l’extérieur du


système.
► La tâche est rendue ardue, par la diversité des périphériques d’entrées- sorties et les
multiples méthodes de codage des informations (différentes représentations des
nombres, des lettres, etc.)
► Concrètement, la gestion des E/S implique que le SE mette à disposition de l’utilisateur
des procédures standard pour l’émission et la réception des données, et qu’il offre des
traitements appropriés aux multiples conditions d’erreurs susceptibles de se produire
(plus de papier, erreur de disque, débit trop différent, ...)
27
Fonctionnalités

L’invite des commandes ou shell

► Nécessaire pour interagir avec l’utilisateur, il peut être


► – Graphique
► – Console interpréteur de commandes (langage de commande interprété).
► Il attend les ordres que l’utilisateur transmet par le biais de l’interface, décode et décompose ces
ordres
► en actions élémentaires, et finalement réalise ces actions en utilisant les services des couches plus
► profondes du système d’exploitation.
► Outre l’interaction «directe» (au moyen de terminaux ou de consoles dans le cas d’Unix ou MS DOS),
► les systèmes offrent le «traitement par lots» (batch). Ce mode de traitement non- interactif est obtenu
en
► regroupant les commandes dans un fichier alors appelé script.
28
Fonctionnalités

La mémoire virtuelle
► La mémoire centrale a toujours été une ressource critique: initialement très coûteuse et
peu performante (tores magnétiques), elle était de très faible capacité.
► Pour pallier le manque de mémoire centrale, l’idée est venue d’utiliser des mémoires
secondaires (de type disque dur), plus lentes, mais de beaucoup plus grandes
capacités.
► La mémoire virtuelle repose sur une décorellation entre la mémoire physique (centrale
ou secondaire), présente sur la machine, et l’espace mémoire mis à disposition des
programmes par le système d’exploitation (la mémoire virtuelle, ou logique).
29
Fonctionnalités

Un système d'exploitation a pour but :

► De décharger le programmeur d'une tâche de programmation énorme et


fastidieuse, et de lui permettre de se concentrer sur l'écriture de son
application ;
► De protéger le système et ses usagers de fausses manipulations ;
► D’offrir une vue simple, uniforme, et cohérente de la machine et de ses
ressources.
► On peut considérer un système d'exploitation de deux points de vue,
représentés par le schéma ci-dessous.
30
Fonctionnalités
31
Fonctionnalités

La machine virtuelle fournit à l'utilisateur :


► Une vue uniforme des entrées/sorties;
► Une mémoire virtuelle et partageable ;
► La gestion de fichiers et répertoires ;
► La gestion de droits d'accès, sécurité, et du traitement des erreurs ;
► La gestion de processus ;
► La gestion des communications interprocessus.
32

En tant que gestionnaire de ressources, le système d'exploitation doit


permettre:
► D’assurer le bon fonctionnement des ressources et le respect des délais
► L’identification de l'usager d'une ressource ;
► Le contrôle des accès aux ressources ;
► L’interruption d'une utilisation de ressource ;
► La gestion des erreurs ;
► L’évitement des conflits.
33

Ne sont pas des systèmes d'exploitation :


► L’interprète de commandes;
► Le système de fenêtrage ;
► Les utilitaires (cp, chmod, uptime, ...)
► Le compilateur (ni sa bibliothèque) ;
► L’éditeur...
34

Chap. 2
Gestion des processus
35
Gestion des processus

► Objectif d’un processus:


► Faire plusieurs activités ”en même temps”.
► Exemples
► Faire travailler plusieurs utilisateurs sur la même machine. Chaque utilisateur a
l’impression d’avoir la machine à lui tout seul.
► Compiler tout en lisant son mail
► Problème: Un processeur ne peut exécuter qu’une seule instruction à la
fois.
► BUT: Partager un (ou plusieurs) processeur entre différents processus.
► Attention!!! Ne pas confondre processus et processeur
36
Gestion des processus

► Processus
► modèle simple et efficace pour représenter l'exécution concurrente de
tâches au sein d'un système d'exploitation multi- tâches.
► Le terme de processus a été utilisé pour la première fois au sein du
système Multics, et popularisé depuis.
► Tout le travail effectué par l'ordinateur est réalisé par des processus
séquentiels, qui représentent chacun une instance d'un programme
séquentiel en train de s'exécuter.
37
Gestion des processus

► De point de vue Conceptuelle, un processus modélise l'exécution d'un programme sur un


processeur virtuel disposant :
► D'un compteur ordinal ; indique l'adresse mémoire de l'instruction en cours d'exécution.
► D’un jeu de registres ; petites zones de stockage interne au processeur utilisées pour stocker
temporairement des données et des résultats intermédiaires.
► De mémoire (virtuelle); représente l'espace mémoire accessible au processus. Cette mémoire peut être
divisée en plusieurs segments, tels que le segment de code (instructions du programme), le segment de
données (variables et structures de données), le segment de pile (stockage temporaire pour les appels de
fonction et les variables locales), etc.
► Réalité: le processeur bascule constamment d’un processus à l’autre. Ce basculement rapide est
appelé multiprogrammation.
► Le processeur physique commute entre les processus sous la direction d'un ordonnanceur.
38
Gestion des processus
39
Gestion des processus

Système à temps partagé


40
Gestion des processus

► Dans le cas de systèmes à temps partagé, tous les processus progressent


dans le temps, mais un seul s'exécute à la fois.
► La vitesse d'exécution d'un processus donné ne serait pas nécessairement
la même si l'ensemble des processus est exécuté à nouveau:
► l'état du système au lancement (position des têtes des disques, occupation des
caches, ...) ainsi que le traitement d'événements asynchrones (trames réseau)
peut conduire à des ordonnancements très différents.
► il n'est pas possible dans un tel système de faire d'hypothèses sur le facteur
temps:
► Par exemple, le contrôle des périphériques d'entrées/sorties nécessitent des
traitements spécifiques au moyen d'interruptions matérielles.
41
Gestion des processus

► Un processus n’est créé qu'au moyen d'un appel système, c'est-à-dire par
un autre processus ayant réalisé cet appel
► Création et développement d'arborescence des processus, à partir d'un
ancêtre commun à tous, créé au démarrage du système (processus init
sous Unix).
► Notion de groupes de processus « process groups », définis comme des
sous arborescences, est également utilisée par certains systèmes pour
limiter la portée des commandes de contrôle de processus
► par exemple la commande kill lancée à partir de l'interpréteur de commandes,
sous Unix.
42
Gestion des processus

► Prêt s'il est suspendu en faveur d'un autre. Un processus est prêt s'il ne lui
manque que la ressource processeur pour s'exécuter ;
► Elu (en exécution) s'il est en cours d'exécution sur le processeur.
Dans le cas d'une machine multiprocesseurs, plusieurs processus
peuvent être élus en même temps, mais il y a toujours au plus autant de
processus élus que de processeurs
► Bloqué (en attente)s'il est en attente d'un événement externe (bloc disque,
frappe clavier, ...).
43
Gestion des processus
44
Gestion des processus

► Le système d’exploitation dispose d’une table de processus, permettant de gérer de manière globale chaque
processus.
► Chaque processus possède une entrée, appelée bloc de contrôle de processus (PCB). Il contient diverses
informations, comme :
▪ son PID ;
▪ son PPID ;
▪ son état ;
▪ son contexte processeur (état des registres) et mémoire (adresses de l’espace d’adressage) ;
▪ ses critères d’ordonnancement ;
▪ des informations sur les ressources utilisées
▪ mémoire principale
▪ temps d'exécution
▪ périphériques d'E/S en attente
▪ files d'attente dans lesquelles le processus est inclus, etc...
▪ et toutes les informations nécessaires pour assurer la reprise du processus en cas d'interruption
45
Gestion des processus

► Afin que cette table ne soit pas trop énorme, la plupart des systèmes
disposent de deux zones par processus.
► La première, jamais swappée, contient les informations critiques dont le
système a toujours besoin.
► La deuxième, contenue dans l'espace de chaque processus et donc
swappable, contient l'information dont le processus n'aura besoin que
lorsqu'il passera effectivement de l'état prêt à l'état élu
46
Gestion des processus

► The process ID or PID: a unique identification number used to refer to the process.
► The parent process ID or PPID: the number of the process (PID) that started this process.
► Terminal or TTY terminal to which the process is connected.
47
Gestion des processus

► En supprimant qqs champs de l’exemple, voilà ps avec des autres options:


► STAT: status du processus Certains états des processus
► R Running or runnable (on run queue)
► S Interruptible sleep (waiting for an event to complete)
► Z Defunct ("zombie") process, terminated but not reaped by its parent.
48
Gestion des interruptions
► Les événements pouvant se produire durant l'exécution d'un programme sont nombreux.
► Certains d'entre eux sont internes et résultent de son exécution et d'autres sont externes et
indépendants de cette exécution.
► On parle ainsi dans certains systèmes de :
► Interruptions externes :
► Panne,
► Intervention de l'utilisateur,
► Interruption horloge,…
► Déroutements : erreur liée à l'instruction en cours d'exécution
► Division par zéro,
► Déroutement programmé,
► débordement de mémoire,…
► Appels au système (SuperVisor Call - SVC) : tel qu’un appel d’entrée/sortie
49
Gestion des processus

► Créer un processus, consiste à lui attribuer un identificateur et initialiser son


vecteur d’état.
► L’identificateur doit être unique pour distinguer sans ambiguïté le
processus.
► La destruction d’un processus peut avoir lieu pour deux raisons :
► Destruction normale (ordinaire) : le processus vient de se terminer d’une façon
normale car il a achevé le traitement pour lequel il a été créé.
► Destruction anormale : le système d’exploitation met fin à un processus sans
qu’il termine correctement son objectif car il vient de causer un mauvais
fonctionnement.
50
Gestion des interruptions

► Le traitement des interruptions par le système s'effectue en appelant une routine de traitement
associée à chaque type d'interruption
► Son adresse est stockée dans les cases d'un tableau indexé par le type d'interruption, appelé
vecteur d’interruptions.
► Le traitement d'une interruption par le système s'effectue de la façon suivante :
► Le processeur sauvegarde la valeur de son compteur ordinal dans la pile courante,
détermine le type de l'interruption, passe en mode noyau, et charge la nouvelle valeur du compteur
ordinal à partir de la valeur contenue dans le vecteur d'interruptions pour le type considéré ;
► La routine de traitement de l'interruption, écrite en langage machine, sauvegarde les registres du
processeur dans la pile courante, ou bien construit une autre pile dédiée au traitement de
l'interruption, puis appelle la procédure principale de gestion de l'interruption
51
Gestion des interruptions

► Au retour de la procédure de gestion, la routine de traitement restaure les


registres du processeur, puis exécute une instruction de retour de procédure pour
recharger le compteur ordinal du processeur avec la valeur sauvegardée, qui est
dépilée.
52
Gestion des processus

► Démonstration sous Linux:


► Commandes ps, pstree, Top, kill
53
Gestion des processus

► Dans un système d'exploitation, il est courant que plusieurs processus soient


simultanément prêts à s'exécuter. Il faut donc réaliser un choix pour ordonnancer
dans le temps les processus prêts sur le processeur.
54
Gestion des processus

► Pour les systèmes multi-utilisateurs, multitâches, et multiprocesseurs, plusieurs processus


peuvent être présents en mémoire centrale en attente d'exécution.
► Si plusieurs processus sont prêts, le système d'exploitation doit gérer l'allocation du
processeur aux différents processus à exécuter.
► C'est l'ordonnanceur (scheduler en anglais)qui s'acquitte de cette tâche.
► Un ordonnanceur fait face à deux problèmes principaux :
► le choix du processus à exécuter
► le temps d'allocation du processeur au processus choisi.
55
Gestion des processus

► Un système d'exploitation multitâche est préemptif lorsque celui-ci peut arrêter


(réquisition) à tout moment n'importe quelle application pour passer la main à la
suivante.
► Préemptifs: on peut lancer plusieurs applications à la fois et passer de l'une à l'autre,
voire lancer une application pendant qu'une autre effectue un travail.
► le noyau garde toujours le contrôle (qui fait quoi, quand et comment), et se réserve le
droit de fermer les applications qui monopolisent les ressources du système. Ainsi les
blocages du système sont inexistants.
► Un multitâche coopératif (non préemptif) permet à plusieurs applications de fonctionner
et d'occuper des plages mémoire, laissant le soin à ces applications de gérer cette
occupation, au risqué de bloquer tout le système.
56
Gestion des processus

► Les objectifs d'un ordonnanceur d'un système multi-utilisateur:


► S'assurer que chaque processus en attente d'exécution reçoive sa part de
temps processeur.
► Minimiser le temps de réponse.
► Utiliser le processeur à 100%.
► Utilisation équilibrée des ressources.
► Prendre en compte des priorités.
► Être prédictibles
57
Gestion des processus

► Ces objectifs sont parfois complémentaires, parfois contradictoires : augmenter la performance


par rapport à l'un d'entre eux peut se faire en détriment d'un autre.
► Il est impossible de créer un algorithme qui optimise tous les critères de façon simultanée.
► Ordonnanceurs non préemptifs:
► Dans un système à ordonnancement non préemptif ou sans réquisition, le système d'exploitation
choisit le prochain processus à executer
► Le Premier Arrivé est le Premier Servi PAPS (ou FCFS : First-Come-First-Served) ou le plus court
d'abord (Short job First SJF).
► Il lui alloue le processeur jusqu'à ce qu'il se termine ou qu'il se bloque (en attente d'un
événement).
► Il n'y a pas de réquisition.
58
Algorithmes non préemptifs

► Dans un système à ordonnancement non préemptif ou sans réquisition, le système


d'exploitation choisit le prochain processus à executer.
► En général, le Premier Arrivé est le Premier Servi PAPS (ou FCFS : First-Come-First-Served)
ou le plus court d'abord (Short job First SJF).
► Il lui alloue le processeur jusqu'à ce qu'il se termine ou qu'il se bloque (en attente d'un
événement). Il n'y a pas de réquisition.
59
Algorithme SJF

► Si l'ordonnanceur fonctionne selon la stratégie SJF, il choisit, parmi le lot de processus à


exécuter, le plus court (plus petit temps d'exécution).
► Cette stratégie est bien adaptée au traitement par lots de processus dont les temps
maximaux d'exécution sont connus ou fixés par les utilisateurs car elle offre un meilleur
temps moyen de séjour.
► Le temps de séjour d'un processus (temps de rotation ou de virement) est l'intervalle de
temps entre la soumission du processus et son achèvement.
Temps de rotation=Temps fin d’exécution - Temps d’arrivée
► Temps de réponse: date de fin - date d'activation
► Le temps d'attente est calculé soustrayant le temps d'exécution du temps de séjour
Temps d’attente=Temps de rotation – Durée d’exécution
60
Activité

Processus Temps d’exécution Temps d’arrivage

A 3 0

B 6 1

C 4 4

D 2 6

E 1 7

Calculer le temps de sejour moyen et le temps d’attente moyen selon les algorithmes FIFO et SJF
61
Algorithmes préemptifs

► Dans un schéma d'ordonnanceur préemptif, ou avec réquisition, pour s'assurer


qu'aucun processus ne s'exécute pendant trop de temps, les ordinateurs ont
une horloge électronique qui génè re périodiquement une interruption.
► A chaque interruption d'horloge, le système d'exploitation reprend la main et
décide si le processus courant doit poursuivre son exécution ou s'il doit être
suspendu pour laisser place à un autre.
► S'il décide de suspendre son exécution au profit d'un autre, il doit d'abord
sauvegarder l'état des registres du processeur avant de charger dans les
registres les données du processus à lancer.
► C'est qu'on appelle la commutation de contexte ou le changement de
contexte. Cette sauvegarde est nécessaire pour pouvoir poursuivre
ultérieurement l'exécution du processus suspendu.
62
Algorithmes préemptifs

► Le processeur passe donc d'un processus à un autre en exécutant chaque


processus pendant quelques dizaines ou centaines de millisecondes.
► Le temps d'allocation du processeur au processus est appelé quantum.
► Cette commutation entre processus doit être rapide, c'est-à-dire, exiger un
temps nettement inférieur au quantum.
► Le processeur, à un instant donné, n'exécute réellement qu'un seul
processus, mais pendant une seconde, le processeur peut exécuter
plusieurs processus et donne ainsi l'impression de parallélisme
(pseudo-parallélisme).
63
Problématiques

► Choix de la valeur du quantum.


► Choix du prochain processus à exécuter dans chacune des situations
suivantes :
► Le processus en cours se bloque (passe à l'état Attente).
► Le processus en cours passe à l'état Prêt (fin du quantum...).
► Un processus passe de l'état Attente à l'état Prêt (fin d'une E/S).
► Le processus en cours se termine.
64
Algorithmes préemptifs

► L'ordonnancement du plus petit temps de séjour ou Shortest


Remaining Time est la version préemptive de l'algorithme SJF.
► Un processus arrive dans la file de processus, l'ordonnanceur compare la
valeur espérée pour ce processus contre la valeur du processus
actuellement en exécution.
► Si le temps du nouveau processus est plus petit, il rentre en exécution
immédiatement.
65
Algorithmes préemptifs

► L'algorithme du tourniquet, circulaire ou round robin montré sur la figure est


un algorithme ancien, simple, fiable et très utilisé.
► Il mémorise dans une file du type FIFO (First In First Out) la liste des
processus prêts, c'est-à-dire en attente d'exécution.
66
Round Robin

► Il alloue le processeur au processus en tête de file, pendant un quantum


de temps.
► Si le processus se bloque ou se termine avant la fin de son quantum, le
processeur est immédiatement alloué à un autre processus (celui en tête
de file).
► Si le processus ne se termine pas au bout de son quantum», son exécution
est suspendue.
► Le processeur est alloué à un autre processus (celui en tête de file).
► Le processus suspendu est inséré en queue de file. Les processus qui
arrivent ou qui passent de l'état bloqué à l'état prêt sont insérés en queue
de file.
67
Round Robin

► Un quantum trop petit provoque trop de commutations de processus et


abaisse l'efficacité du processeur.
► Un quantum trop élevé augmente le temps de réponse des courtes
commandes en mode interactif.
► Un quantum entre 20 et 50 ms est souvent un compromis raisonnable
68
Activité

Processus Date d’arrivée Durée d’exécution


P1 0 7
P2 1 4
P3 1 2
P4 2 2
P5 3 1

Donner le diagramme de GANTT et les temps de séjour moyen et d’attente moyen selon:
1- FIFO et SJF
2- SRT et Round Robin (quantum =1)
69

Chap. 3
Gestion de fichiers
70
Système de fichiers

► Un fichier désigne un ensemble d'informations stockées sur le disque.


► Le système de fichiers est la partie du système d'exploitation qui se charge
de gérer les fichiers.
► La gestion consiste en
► la creation (identification, allocation d'espace sur disque),
► la suppression,
► les accès en lecture et en écriture,
► le partage de fichiers et leur protection en contrôlant les accès.
71
SGF Vs SF

► Une erreur très courante chez les informations est la confusion entre un
système de fichier et un système de gestion de fichier.
► Le SGF est un module du noyau qui sert à gérer un système de fichier.
► Un SF est une représentation de bas niveau des données sauvegardées
(fichiers et répertoires)
72
Les fichiers

► Chaque fichier est identifié par un nom auquel on associe un


emplacement sur le disque (une référence) et possède un ensemble de
propriétés : ses attributs.
► Le nom est en général, composé de deux parties séparées par un point.
► La partie qui suit le point est appelée extension (prog.c, entete.h, fich.doc,
archivo.pdf, etc.).
► L'extension peut être de taille fixe, comme dans MS-DOS ou variable
comme c'est le cas d'Unix/Linux ; obligatoire ou non.
► L'extension est nécessaire dans certains cas. Par exemple, le compilateur
C rejettera le fichier prog.txt même si son contenu est un programme C.
► Le nom d'un fichier peut être sensible à la case comme pour Unix/Linux.
73
Cycle de vie d’un fichier

► Les fichiers (comme bien d'autres composants) ont un cycle de vie. Ils sont
créés (ou ouverts), on les fait modifier (écrire), on lit à partir d'eux, et
finalement, peut-être, ils meurent (sont effacés).
74
Types de fichiers

► Dans un système, il existe plusieurs types de fichiers. Unix/Linux et MS-DOS


ont des:
► fichiers ordinaires,
► des répertoires,
► des fichiers spéciaux caractère: Les périphériques caractères (comme la souris,
le clavier, le port série, le port parallèle) gère un caractère transmis à la fois.
► des fichiers spéciaux bloc: Les périphériques blocs (comme les disques durs, les
lecteurs de CDROM) gère une certaine quantité d'octet à la fois, par groupe de
bloc.
75

Contenu d'un système de fichiers Linux

Il n’existe pas de norme d’organisation du système de fichiers, mais un


standard est à peu près suivi par les différentes distributions de Linux.

(La racine)

(l'amorçage)
(Les commandes) (Les bibliothèques)
(La configuration)
(Le répertoire temporaire)
(Les périphériques)
(le répertoire du super utilisateur) (Les journaux systèmes)

(Les répertoires de base des utilisateurs)


76

Contenu d'un système de fichiers Linux

/bin Contient les fichiers exécutables essentiels au système


/boot Contient le noyau et les fichiers nécessaires au gestionnaire de démarrage
/dev Contient les fichiers périphériques du système (dev = device)
/etc Contient les fichiers de configuration du système et certains scripts
/home Contient tous les répertoires personnels des utilisateurs
/lib Contient les librairies du système et les modules du noyau
/lost+found Contient le stockage des fichiers retrouvés par fsck
/mnt Répertoire disponible et proposé pour le montage de futur système de fichiers
/root Contient le répertoire de base de l'administrateur
/sbin Contient les fichiers exécutables pour l’administration du système donc surtout utilisé par root.
/tmp Contient les fichiers temporaires créés par certains programmes
/usr Contient les programmes, les librairies et les fichiers accessibles pour l’utilisateur
/var Contient les données variables liées à la machine (spool, traces)
77

Contenu d'un système de fichiers Linux

/usr Généralement cette arborescence fait l'objet d'un "file system"


séparé. On y retrouve des noms de répertoire identiques à ceux de
la racine (mais pour les utilisateurs) :
/usr/bin ; /usr/etc ; /usr/lib ; /usr/sbin

/home Ce répertoire peut également faire l’objet d’un file système


séparé. Il contient le répertoire personnel de chaque utilisateur.
Ce répertoire est créé automatiquement à la création de
l’utilisateur
78

Contenu d'un système de fichiers Linux

/dev Ce répertoire contient les gestionnaires des différents périphériques.


Le nom du fichier de chaque type de périphérique est "codifié" :
console : Ecran
hd…… : Disque dur IDE (hda : 1er disque dur, hda1 : partition 1 du
disque hda, etc…)
sd…… : Disque dur SCSI
fd…… : Disquette( fd0…. -suivi de la taille-, "disquette A:")
tty….. : Console utilisateur (obtenu avec Alt-F1..)
Le standard SCSI (Small Computer System Interface) est une interface permettant la
connexion de plusieurs périphériques de types différents sur un ordinateur par
l'intermédiaire d'une carte, appelée adaptateur SCSI ou contrôleur SCSI
79
Le partitionnement

► L’utilisation d’une unité de stockage (par exemple un disque dur) soit pour
l’installation d’un système d’exploitation ou le stockage de données
nécessite que celle-ci soit préalablement préparée d’abord par le
partitionnement puis par le formatage logique.
► Le partitionnement consiste à créer des zones sur le disque dont les
données ne seront pas mélangées. Cela sert donc si l'on veut, par
exemple, installer des systèmes d'exploitation différents n'utilisant pas le
même système de fichiers. Il y aura donc au minimum autant de partitions
que de systèmes d'exploitation utilisant des systèmes de fichiers différents.
80
Objectif du partitionnement

► d'installer plusieurs systèmes d'exploitation sur votre disque,


► d'économiser de l'espace disque,
► d'augmenter la sécurité de vos fichiers,
► d'organiser vos données plus facilement.
81
Types des partitions

• Les partitions principales : leur nombre est limité à quatre et elles


supportent tous types de systèmes de fichiers.
• La partition étendue : elle ne peut contenir que des partitions logiques et
ne peut pas recevoir de systèmes de fichiers. Elle ne peut exister que s’il
existe une partition principale.
• Les partitions logiques : elles sont contenues dans une partition étendue.
Elles ne sont pas limitées en nombre et acceptent tous types de systèmes
de fichiers.
82

Organisation des partitions

► Les descripteurs de disques durs dans le


répertoire /dev commencent par
► hd pour les périphériques de type IDE
► sd pour les périphériques de type SCSI.
► On utilise la commande fdisk pour configurer
une nouvelle partition. Par exemple, pour le
premier disque IDE : fdisk /dev/hda.
83

Organisation des partitions

► Une lettre additionnelle est ajoutée au


descripteur pour désigner le périphérique.
► Pour le périphérique maître sur le contrôleur primaire
: hda.
► Pour le périphérique esclave sur le contrôleur
secondaire : hdd.
► Les périphériques SCSI sont désignés en fonction de
leur position dans la chaîne SCSI (sda, sdb, sdc,
etc.).
84

Formatage

► Comme tout système d'exploitation, GNU/Linux dispose de ses propres systèmes


de fichiers :
► ext4 : C'est le système de fichier le plus répandu sous GNU/Linux (issu de ext2 et ext3). Il
est journalisé, c'est à dire qu'il trace les opérations d'écriture pour garantir l'intégrité des
données en cas d'arrêt brutal du disque.
► ReiserFS : C'est un système de fichiers journalisé qui a été réimplémenté à partir de zéro
et bénéficie de beaucoup d'innovations. Il est plus rapide qu'ext4 pour le traitement de
répertoires contenant des milliers de fichiers de petite taille.
85

Formatage

► L'instruction générale de création d’un système de fichiers est :


mkfs -t type-de-fichier partition.
► Exemples de formatage de la partition hda1 avec création d'un système de
fichiers de type ext4 (les trois commandes sont équivalentes) :
mkfs.ext4 /dev/hda1
mkfs -t ext4 /dev/hda1
mke2fs -j /dev/hda1
► Il est aussi très facile de transformer une partition ext2 en ext4 avec l'instruction
tune2fs pour créer le journal :
tune2fs -j /dev/hda1.
Vérification du système de 86

fichiers

► L'instruction générale de vérification du système de fichiers est


:
fsck -t type-de-fichier partition.
► Il existe des commandes équivalentes pour chaque type de
système de fichiers, par exemple fsck.ext3.
► Une vérification de toutes les partitions est faite au démarrage
du système par la commande fsck.
Vérification du système de 87

fichiers

► La commande e2fsck est équivalente à fsck –t ext2.


► L’utilitaire debugfs est utilisé pour examiner et modifier l’
état d’un système de fichiers formaté en ext2.
► L’utilitaire dumpe2fs permet d’afficher les informations
d’un système de fichiers formaté en ext2.
Montage de systèmes de 88

fichiers

► Tous les supports de données (les disques durs locaux ou réseaux, les lecteurs de disquette, de
CDROM) doivent être "montés" afin que les données qu'elles stockent soient accessibles pour les
utilisateurs d'un système Linux. Pour lire les données d'un CDROM ou d'une disquette, il
faut monter le périphérique correspondant. De même pour retirer un CDROM ou une disquette
de son lecteur, il faut au préalable démonter le périphérique correspondant.
► Pour pouvoir utiliser un système de fichiers, celui-ci doit être monté sur un point de montage de
l'arborescence Linux : son contenu est alors accessible comme un simple répertoire.
► La commande mount accepte deux arguments :
► Le premier est le fichier spécial correspondant à la partition contenant le système de fichiers.
► Le second est le répertoire sous lequel il sera monté (point de montage).
Montage de systèmes de 89

fichiers

► La commande umount permet le démontage du système de


fichiers.
► Exemple : pour monter et démonter une clé USB par le fichier
device sda1, on utilise les commandes suivantes :
mount /dev/sda1 /mnt/flashdisk
umount /mnt/flashdisk
Montage de systèmes de 90

fichiers

► Le fichier /etc/fstab est utilisé pour le montage automatique


des systèmes de fichiers au moment du démarrage du
système.
► Les commandes mount et umount utilisent le fichier fstab. Il
est important que les données de ce fichier soient
complètes et exactes.
► La commande mount –a monte tous les systèmes de fichiers
répertoriés dans le fichier fstab. Cette commande est
généralement exécutée au moment de démarrage du
système.
91

Informations sur le FS

► La commande df permet de connaître le taux d'utilisation


de toutes les partitions montées du système. L'option -h
(human readable) facilite la lecture en utilisant des unités de
taille plus commodes (Mo, Go, To, etc.).
► La commande du (disk usage) est très pratique pour
connaître l'espace occupé par une arborescence. L'option
-s permet d'afficher le total pour chaque élément et l'option
-k de l'afficher en kilo-octets : du -ks /usr/local.
92

Principales commandes

▪ Connaître la syntaxe : nom_commde –help ou man nom_com


▪ Lister les fichier et les répertoires : ls
▪ Créer un répertoire : mkdir
▪ Connaître la position courante : pwd
▪ Changer la position courante : cd
▪ Copier un fichier ou un répertoire : cp
▪ Déplacer ou renommer un fichier ou un répertoire : mv
▪ Supprimer un fichier ou un répertoire : rm
93

Principales commandes

▪ Visualiser (ou concaténer) le contenu d'un fichier texte : cat


▪ Trouver un fichier dans l'arborescence : find
▪ Trouver un fichier dans la base de données des fichiers : locate
▪ Changer les droits d'accès aux répertoires : chmod
▪ Changer les attributs de répertoires : chattr
▪ Compter les mots et les lignes d'un fichier : wc
▪ Rechercher les lignes multiples dans un fichier : uniq
▪ Chercher une chaîne de caractères dans un fichier : grep
94

Principales commandes

▪ Trier les champs d'un fichier : sort


▪ Extraire des champs d'un fichier : cut
▪ Ajouter des champs à un fichier : paste
▪ Copier l'entrée standard sur la sortie standard et dans un fichier :
tee
▪ file identifie le type d'un fichier
▪ tr transpose ou élimine des caractères.
Caractères spéciaux 95

► . qui désigne le répertoire courant.


► .. qui désigne le répertoire père, c'est à dire celui qui se trouve immédiatement
au- dessus du répertoire courant dans la hiérarchie.
► ~ qui désigne le répertoire d'accueil.
► ? remplace un caractère quelconque.
► * remplace une chaîne de caractères quelconque (y compris une chaîne vide).
► [...] remplace les caractères entre crochets, définis par énumération ou par
intervalle.
► Exemples :
► [Aa] désigne les caractères A ou a.
► [a-zA-Z] désigne un caractère alphabétique quelconque.
Caractères spéciaux 96

► # introduit un commentaire.
► $ introduit un nom de variable.
► & lance la commande en background.
► ; sépare 2 commandes tapées sur une même ligne.
► !! relance la commande précédente.
► !ch relance la dernière commande commençant par ch.
► !n relance la commande numéro n.
► <, <<, >, >> et | sont des caractères utilisés pour les redirections des
entrées-sorties.
Caractères spéciaux 97

► ' délimite une chaîne de caractères contenant des


espaces sans substitution de variables.
► " délimite une chaîne de caractères contenant des
espaces avec substitution de variables.
► \ annule la signification du caractère spécial suivant.
► ( et ) font exécuter les commandes incluses dans un sous-Shell.
► { et } regroupent les commandes incluses en une liste.
Caractères spéciaux 98

► Il est possible, sous Unix, de rediriger l'entrée ou la sortie d'une commande :


► < : redirection de l'entrée.
► Exemple : grep abc < essai, la chaîne abc est recherchée dans le fichier essai.
► > : redirection de la sortie.
► Exemple : ls > liste, le résultat de la commande ls est copié dans le fichier liste. Si le fichier n'existe pas, il est
créé, sinon son contenu est écrasé.
► >> : redirection de la sortie avec concaténation.
► Exemple : ls >> liste2, si le fichier liste2 n'existe pas, il est créé, sinon le résultat de la commande ls est ajouté
à la fin du fichier liste2.
► | : redirection de la sortie d'une commande sur l'entrée de la commande suivante.
► Exemple : ls | grep *.c, la sortie de la commande ls sert d'entrée à la commande grep. Ici, on cherche tous
les fichiers sources C dans le répertoire courant.
99

Sécurité des fichiers

► Un système multiutilisateurs doit également permettre à


chaque utilisateur de protéger et/ou partager ses
fichiers et répertoires.
► La notion de partage n'existe pas en tant que telle
(comme dans Windows ). Un répertoire est partagé si
plusieurs utilisateurs ont des droits sur ce répertoire.
100

Sécurité des fichiers

► Avec la commande ls –l on obtient un ensemble de lignes comme :

-rw-r--r-- 1 sabeur sabeur 1200 feb 16 12 : 39 page.html


Où respectivement on trouve :
• Les droits sur le ficher ou le répertoire (-rw-r--r--)
• Le nombre de liens sur le fichier (1 signifie que le fichier n'a aucun lien qui pointe
vers lui, 2 (ou plus) signifiant qu'il existe un lien (ou plus) vers lui.
•le nom du propriétaire du fichier (sabeur)
•le nom du groupe propriétaire (sabeur)
•La taille du fichier (1200)
•la date et l'heure de la dernière modification (feb16 12 : 39)
•le nom complet du fichier (page.html)
101

Sécurité des fichiers

► Les droits se décomposent en 4 zones :


.|...|...|... soit -|rw-|r--|r—
► La première zone indique la nature du fichier :
"-" pour un fichier normal,
"d" pour un répertoire,
"l" pour un lien
102

Sécurité des fichiers

► Les 3 dernières zones correspondent aux 3 catégories d'utilisateurs possible du


fichier.
... ... ...
u g o
► La section u (u=user) fixe les droits accordés au propriétaire du fichier.
► La section g (g=group) fixe les droits accordés aux utilisateurs faisant partie du
groupe auquel appartient le fichier.
► La section o (o=other) fixe les droits des autres utilisateurs.
103

Sécurité des fichiers

► Chaque zone propose à la catégorie


correspondante 3 droits. Dans l'ordre
rwx
► "r" droit de lecture autorisé ; "-" si non permise
► "w" droit d'écriture autorisé ; "-" si non permise
► "x" droit d'exécution autorisé ; "-" non permise
104

Sécurité des fichiers

► Signification des droits sur les les répertoires :


• "r" : Droit de lire le contenu du répertoire, afficher son contenu (commande ls)
• "w" : Droit de modifier le contenu, créer, supprimer des fichiers et des répertoires
(commandes cp, mv, rm)
• "x" : Droit d'accéder aux fichiers du répertoire et de s'y déplacer (commande cd)
Note si on attribue "w" il faut attribuer aussi "x" sur le répertoire
105

Sécurité des fichiers

► Le créateur d'un fichier en devient le propriétaire.


► Le groupe primaire auquel appartient le créateur au moment de la
création devient le groupe du fichier.
► Le propriétaire à le droit de modifier tous les droits sur les fichiers et les
répertoires dont il est propriétaire, y compris de transmettre son droit de
propriété.
106

Sécurité des fichiers

► Changer les droits d'accès :


chmod nouveau_droits fichier(s)
On utilise généralement les notations :
[u, g, o, a] pour désigner le bénéficiaire (a=all)
[r, w, x] pour désigner le droit
[+, -, =] pour désigner l'opération (ajouter, retirer ou affecter)
107

Sécurité des fichiers

► Changer les droits d'accès :


► Fixer de nouveaux droits (remplacement)
chmod u=rwx,g=rw,o=r liste.txt
pour obtenir : -rwxrw-r--
chmod g=rwx document
les autres restent inchangés
chmod u=rw,g=r,o= liste2.doc
pour obtenir : -rw-r-----
108

Sécurité des fichiers

► Changer les droits d'accès :


► Modifier les droits
chmod g+rw liste.txt
avant : -rwx--xr– résultat : -rwxrwxr--
chmod go-rx document
avant : -rwxrwxrw- résultat : -rwx-w--w-
chmod a-x liste2.doc
avant : -rwxrwxr-x résultat : -rw-rw-r--
109

Sécurité des fichiers

► Changer les droits d'accès :


► Modifier les droits, récursité
chmod –R nouveau_droits répertoire
Exemple :
chmod –R go-rwx /home/dsi
Cette commande supprime tous les droits sauf au propriétaire sur
tous les fichiers, répertoires et sous-répertoires à partir de
/home/dsi
110

Sécurité des fichiers

► Changer les droits d'accès :


► Utilisation de l'octal
En binaire les droits affectés aux différents groupes vont de 000
(pour "---") à 111 (pour "rwx") en passant par 101 (pour "r-x")
En décimal ces valeurs vont de 0 à 7.
► chmod 764 lettre.txt
► chmod u=rwx g=rw o=r lettre.txt
► Ces deux commandes sont équivalentes
111

Sécurité des fichiers

► Changer les droits d'accès :


► Quels sont les droits affectés à la création d'un
fichier ou d'un répertoire ?
► La commande umask :
► umask (pour afficher le masque)
► umask –S(pour afficher le masque sous forme
symbolique)
► umask valeur_masque (pour modifier le masque)
112

Sécurité des fichiers

► Changer les droits d'accès :


Le masque donné à la commande umask précise les droits qui seront
supprimés à la création du fichier. Par exemple avec :
umask 021 (en binaire 000 010 001)
un fichier créé avec ce masque obtiendra les droits suivants :
111 101 110 soit u=rwx g=rx o=rw
113

Sécurité des fichiers

► Changer les droits d'accès :


Pratiquement les droits effectifs sont obtenus de la façon
suivante :

Octal Binaire
777 111 111 111 Permissions maximum
XOR (ou -) 021 000 010 001 Masque (umask)
= 756 111 101 110 Permissions appliquées
114

Sécurité des fichiers

► Changer les droits d'accès :


La modification des droits à l'aide de la commande umask a des effets seulement durant la
session en cours.
Pour rendre cette modification permanente, il faut modifier le script :

/etc/profile (par root pour le profil général)


$HOME/.bash_profile (par l'utilisateur pour son profil)
115

Sécurité des fichiers

► Les commandes pour…


► Changer le propriétaire
chown [-R] new_proprio fichier
► Changer le groupe propriétaire
chgrp [-R] new_groupe fichier
(avec -R : l'option de récursivité)
Seul le propriétaire actuel (ou root) peut exécuter ces commandes
116

Chap. 4
Gestion de mémoire
117
Gestion de mémoire

► La mémoire principale est le lieu où se trouvent les programmes et les


données quand le processeur les exécute.
► On l'oppose au concept de mémoire secondaire, représentée par les disques,
de plus grande capacité, où les processus peuvent séjourner avant d'être
exécutés.
► nécessité de gérer la mémoire de manière optimale
► En dépit de sa grande disponibilité, elle n'est, en général, jamais suffisante.
► Taille continuellement grandissante des programmes.
118
Adressage logique Vs physique

► L'unité centrale manipule des adresses logiques (emplacement relatif).


► Les programmes ne connaissent que des adresses logiques, ou virtuelles.
► L'espace d'adressage logique (virtuel): ensemble d'adresses pouvant être
générées par un programme.
► L'unité mémoire manipule des adresses physiques (emplacement mémoire).
► Elles ne sont jamais vues par les programmes utilisateurs.
► L'espace d'adressage physique est un ensemble d'adresses physiques
correspondant à un espace d'adresses logiques.
119
Modèles de mémoires

► La mémoire centrale peut avoir une représentation Linéaire et uniforme ou


Différenciée :
► Linéaire et uniforme : Mémoire non différenciée, avec un espace
d'adressage linéaire ou plat
► Différenciée :
► Avec des segments linéaires spécifiques et disjoints pour les procédures, la table
de symboles, les programmes, etc.
► ou avec un adressage segmenté à l'aide de deux index, un qui contrôle le
numéro de segment et un autre qui contrôle l'adresse dans le segment.
120
Gestion de mémoire

► La gestion de la mémoire a deux objectifs principaux :


► d'abord le partage de mémoire physique entre les programmes et les
données des processus prêts
► Ensuite la mise en place des paramètres de calcul d'adresses, permettant
de transformer une adresse virtuelle en adresse physique.
► Le gestionnaire de la mémoire doit remplir plusieurs tâches :
► Connaître l'état de la mémoire (les parties libres et occupées de la mémoire).
121
Gestion de mémoire

► Allouer de la mémoire à un processus avant son exécution.


► Récupérer l'espace alloué à un processus lorsque celui-ci se termine.
► Traiter le va-et-vient (swapping) entre le disque et la mémoire principale
lorsque cette dernière ne peut pas contenir tous les processus.
► Posséder un mécanisme de calcul de l'adresse physique (absolue):
► en général, les adresses générées par les compilateurs et les éditeurs de liens
sont des adresses relatives ou virtuelles.
122
Méthodes de gestion de mémoire

► La mémoire est partagée entre le système d'exploitation et plusieurs


processus.
► Comment organiser la mémoire de manière à faire cohabiter
efficacement plusieurs processus tout en assurant la protection des
processus ?
► Deux cas sont alors à distinguer :
► Multiprogrammation sans va-et-vient: Un processus chargé en mémoire y
séjournera jusqu'à ce qu'il se termine.
► Multiprogrammation avec va-et-vient: Un processus peut être déplacé
temporairement sur le disque (mémoire de réserve : swap area) pour permettre
le chargement et donc l'exécution d'autres processus.
123
Problématiques

► étant donné que les processus sont chargés à différentes adresses, les
adresses relatives générées par les compilateurs et les éditeurs de liens sont
différentes des adresses physiques, alors comment réaliser la translation
d'adresses ?
► La cohabitation de plusieurs processus en mémoire doit assurer leur
protection :
► il ne faut pas permettre à un processus d'un utilisateur d'adresser la mémoire
des processus des autres utilisateurs.
► Quelle est la meilleure manière d'assurer la protection des processus
contre les intrusions des autres ?
124
Conversion d’adresse

► Il est nécessaire au moment de l’exécution de convertir les adresses


logiques en adresses physiques.
► Par exemple, imaginons un système où une adresse physique est obtenue
en ajoutant à chaque adresse logique l’adresse de base contenue dans
un registre.
125
Espaces mémoire

► La mémoire principale peut loger le SE et les différents processus


utilisateurs. La mémoire est habituellement subdivisée en deux partitions :
► une pour le SE résident
► l’autre pour les processus utilisateurs
126
Allocation des processus

► L’un des schémas les plus simples revient à subdiviser la mémoire en


partitions de taille fixe.
► Chaque répartition peut contenir exactement un processus.
► degré de la multiprogrammation est limité par le nombre de partitions.
► Quand une partition devient libre, on sélectionne un processus de la file
d’attente des processus prêts et on le charge dans la partition libre.
► Quand le processus se termine, la partition devient libre pour un autre
processus.
127
Allocation des processus

► Une autre méthode consiste à obliger le SE à maintenir une table


indiquant les partitions de mémoire disponibles et celles qui sont
occupées.
► Quand un processus arrive en demandant de la mémoire, on recherche
un espace suffisamment grand pour contenir ce processus. Si nous en
trouvons un, nous allouons seulement la quantité de mémoire nécessaire,
laissant le reste disponible pour satisfaire les futures requêtes.
128
Allocation des processus
129
Allocation des processus
130
Allocation des processus
131
Allocation des processus
132
Allocation des processus

► Ainsi à chaque instant, on dispose d’une liste de tailles de blocs disponibles


et la file d’attente des processus prêts.
► Le SE peut scheduler la file d’attente selon un algorithme de scheduling.
► La mémoire est allouée aux processus jusqu’à ce qu’il n’existe aucun bloc
de mémoire suffisamment grand pour contenir ce processus.
► On peut utiliser l’un des trois algorithmes suivant : first-fit, best-fit, worst-fit.
133
Allocation des processus

► Algorithme First-fit (Le premier trouvé) : On alloue au processus le premier


trou suffisamment grand.
► Algorithme Best-fit (Le meilleur choix) : On alloue au processus le trou le
plus petit suffisamment grand ; c’est à dire celui qui provoquera la plus
petite miette possible. Cet algorithme nécessite le parcours de toute la
liste des espaces libres
► Algorithme Worst-fit (Le plus mauvais choix) : On alloue au processus le trou
le plus grand. Cet algorithme nécessite le parcours de toute la liste des
espaces libres.
134
Algorithmes d’allocation

► En fonction de l’algorithme
choisi, on choisirait le trou T1,
T2 ou T3.
► Algorithme First-Fit : trou T1.
► Algorithme Best-Fit : trou T3.
► Algorithme Worst-Fit : trou
T2
135
Fragmentation

► Les algorithmes d’allocation de la mémoire


contiguë précédents, produisent la fragmentation
de la mémoire. En effet, suite aux différentes
entrées et sorties de processus, des miettes
séparées se froment dans la mémoire.
► Si le processus P désire entrer dans le système
en occupant 500K, il ne pourrait pas bien que
l’espace total disponible est de 700 K
136
Fragmentation

► La solution au problème de la fragmentation peut être le compactage. Le


principe est de rassembler tous les trous en un seul bloc.
137
Pagination

► Une autre solution au problème de la fragmentation consiste à permettre


que l’espace d’adressage logique d’un processus ne soit plus contigu,
autorisant ainsi l’allocation de la mémoire physique à un processus là où
elle est disponible.
► La technique de la pagination est une manière implémentant cette
solution.
► La pagination consiste à diviser la mémoire et les processus en blocs de
mêmes tailles appelés pages. Les pages mémoire sont souvent appelées
"page frames" ou "cadres de pages" tandis que les pages de processus
sont simplement appelées "pages".
138
Pagination

► Les pages (de processus) ne sont pas toutes simultanément actives ; elles ne sont
donc pas nécessairement toutes présentes simultanément dans la mémoire
principale.
► Les pages inactives attendent sur le disque.
► L'espace d'adressage est donc virtuel sa taille peut être supérieure à celle de la
mémoire réelle.
► Les processeurs disposent actuellement d’un dispositif, le MMU « Memory
Manager Unit » qui permet de placer des processus en mémoire sans
nécessairement placer les pages de processus dans des cadres de pages
contigus.
► On distingue les adresses logiques qui se réfèrent aux pages de processus des
adresses physiques qui se réfèrent aux cadres de pages.
139
Pagination

► L’adressage se fait au moyen de numéros de pages et d’offsets. L’offset (=


déplacement ou décalage) est la position relative au début de la page.
► L’adresse logique est composée du numéro de page de processus et d’un
offset.
► L’adresse physique correspondante est formée à partir du numéro du
cadre de page où est chargé la page de processus et du même offset
que celui de l’adresse logique.
► Le numéro du cadre de page est consigné dans la table de pages On le
retrouve en se servant du numéro de page de processus comme d’un
index.
140
Pagination simple
141
Conversion d’adresses
142
Pagination a deux niveaux
143
Pagination à deux niveaux
144
Défaut de page

► Que se passe-t-il si un processus essaie d’utiliser une page qui n’est pas en
mémoire ?.
► L’accès à une page marquée invalidé provoque un défaut de page. En
essayant d’accéder à cette page, il y a un déroutement vers le SE.
► La procédure permettant de traiter ce défaut de page est la suivante :
► • S’assurer que la référence de la page est correcte.
► • S’assurer que la page désirée est bien en mémoire auxiliaire.
► • Trouver un cadre de page libre et charger la page.
145
Remplacement des cadres

► Lorsque le SE se rend compte au moment de charger une page qu’il n’existe aucun
cadre de page disponible, il peut faire recours à un remplacement de page.
► 1. Trouver l’emplacement de la page désirée sur disque.
► 2. Trouver un cadre de page libre. S’il existe un cadre de pages libre, l’utiliser, sinon
utiliser un algorithme de remplacement de pages pour sélectionner un cadre de
page victime.
► 3. Enregistrer la page victime dans le disque et modifier la table de page.
► 4. Charger la page désirée dans le cadre de page récemment libéré et modifier la
table de pages.
► 5. Redémarrer le processus utilisateur.
146
Algorithmes de remplacement

► L’algorithme de remplacement FIFO (First In First Out) est le plus simple à


réaliser. Avec cet algorithme, quand on doit remplacer une page, c’est la
plus ancienne qu’on doit sélectionner.

► Exemple : Considérons un système à mémoire paginée ayant 3 cadres de


pages (pages physiques),
► et soit la chaîne de références suivante : 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2,
0, 1, 7, 0, 1. Quel est le nombre de défauts de pages si l’algorithme de
remplacement choisi est l’algorithme FIFO ?.
147
Algorithme FIFO

Nbr de défauts de pages = 15


148
Algorithme LRU

► L’algorithme LRU (Least Recently Used) sélectionne pour le remplacement


d’une page victime, la page la moins récemment utilisée.
► C’est à dire qu’on doit remplacer une page, l’algorithme sélectionne la
page qui n’a pas été utilisée pendant la plus grande période de temps.
► Exemple : Considérons un système à mémoire paginée ayant 3 cadres de
pages (pages physiques), et soit la chaîne de références suivante : 7, 0, 1,
2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1. Quel est le nombre de défauts de
pages si l’algorithme de remplacement choisi est l’algorithme LRU ?.
149
Algorithme LRU

Nbr de défauts de pages = 12


150
Algorithme LFU

► L’algorithme de remplacement LFU (Least Frequently Used) requiert que


l’on remplace la page la moins fréquemment utilisée ; c’est à dire celle
ayant le compteur d’utilisation le plus petit.
► La raison de cette sélection est qu’une page activement utilisée devrait
avoir un grand compte de références.
► Cet algorithme présente un problème quand une page est très utilisée
pendant la phase initiale d’un programme, mais qu’elle n’est plus
employée à nouveau par la suite.
► Comme elle a été amplement utilisée, elle possède un grand compte et
reste donc en mémoire même si elle n’est pas utilisée.
151
Algorithme MFU

► L’algorithme de remplacement MFU (Most Frequently Used) requiert que


l’on remplace la page la plus fréquemment utilisée.
► La raison de cette sélection est que la page ayant le compte le plus petit
vient probablement d’être ramenée en mémoire et doit encore être
utilisée.
152
segmentation

► Chaque processus est constitué d’un ensemble de segments. Chaque segment


est un espace linéaire.
► Les segments sont des espaces d’adressages indépendants, de différentes
longueurs, et qui peuvent même varier en cours d’utilisation. Ils correspondent à
des subdivisions logiques déterminées par le programmeur ou par le
compilateur.
► Les segments contiennent des informations de même nature : le code, les
données, la pile, des tables, etc.
► Un exemple réduit d’architecture segmentée est donné par la famille x86 qui
possède 4 segments : le code (CS Code Segment), la pile (SS Stack Segment), les
données (DS Data Segment) et un supplémentaire, à la discrétion du
programmeur (ES Extra Segment).
153
segmentation

► Il est dès lors possible d’attribuer des protections adaptées à chaque type
de segment :
► un segment de code peut être déclaré en exécution seule, une table de
constantes en lecture seule mais pas en écriture ni en exécution.
► La segmentation permet aussi le partage, par exemple du code d’un
éditeur entre plusieurs processus. Ce partage porte alors sur un ou plusieurs
segments.
► Cela se fait par exemple pour des bibliothèques de sous-programmes.
154
segmentation

► L’accès aux segments se fait via une table de segments.


► Chaque entrée de la table comporte l’adresse de départ du segment et
sa taille.
► L’adresse logique est constituée du numéro de segment et d’un offset.
► Contrairement aux pages dont le fonctionnement est transparent pour le
programmeur, les segments sont des entités logiques qu’il connaît et
manipule.
► Il distingue les deux informations contenues dans l’adresse : le numéro du
segment et l’offset.
155
segmentation

► Le numéro de segment sert d’index pour retrouver l’adresse du début du


segment dans la table de segment.
► Cet offset doit être inférieur à la taille du segment consignée, elle aussi,
dans la table de segments.
► Si ce n’est pas le cas, une erreur est générée qui provoque l’abandon du
programme.
► L’offset est ensuite ajouté à l’adresse de début de segment pour former
l’adresse physique.
156
segmentation
157
Segmentation avec pagination

► La segmentation et la pagination concernent des problèmes différents. Ce sont


deux techniques qui peuvent se combiner.
► - La segmentation découpe les processus en zones linaires pouvant être gérées
différemment selon que ces segments sont propres au processus, qu’ils sont
partagées, lus, écrits ou exécutées et de manière à protéger les processus entre
eux.
► - La pagination découpe la mémoire en pages non contiguës mais de même
taille. Elle procure aux processus des espaces d’adresse continus (nécessaires
aux segments). Les pages mémoires peuvent n’être allouées que lorsqu’un
processus en a besoin. On obtient de la sorte une mémoire virtuelle de taille
supérieure à la mémoire réelle.
158
Segmentation avec pagination

► Les systèmes d’exploitation qui gèrent ces deux techniques simultanément


administrent une table de segments et plusieurs tables de pages.
► Un segment peut contenir plusieurs pages mais toutes ne doivent pas
nécessairement être présentes en mémoire à tout moment. On ne garde
en mémoire que celles qui sont réellement utilisées. Chaque segment a sa
propre table de pages.
159
Segmentation avec pagination

► La segmentation peut être combinée avec la pagination.


► Chaque segment est composé d'un ensemble de pages.
► Les adresses générées par les compilateurs et les éditeurs de liens, dans
ce cas, sont alors des triplets :
► <Numéro du segment, numéro de page, déplacement dans la page>
160
Segmentation avec pagination
161

► https://www.eclipse.org/downloads/packages/release/indigo/sr1/eclipse-
classic-371

Vous aimerez peut-être aussi