Vous êtes sur la page 1sur 227

UE système d’exploitation

Matière système d’exploitation et construction

Tanguy Philippe

Université Bretagne Sud

2023–2024

1 / 227
Avant-propos

Avant-propos

2 / 227
Avant-propos

Fiche de l’unité d’enseignement (UE)

• UE Informatique 1, matière bases d’un OS


• Volume horaire de 42h
• Cours : 12h
• TD : 16h
• TP : 14h
• Déroulement et consignes
• Syllabus du cours détaillé sur la plateforme pédagogique (Moodle)
• Partage des documents uniquement via la plateforme pédagogique
• Contrôle des connaissances : contrôle continu
• Intervenants
• Philippe TANGUY (CM : 12h, TD : 16h, TP : 0h)
• Chargé de TP (CM : 0h, TD : 0h, TP : 14h)

3 / 227
Avant-propos

Motivations

• Systèmes d’exploitation omniprésents aussi dans l’embarqué : caméra,


voiture, avion, tablette, smartphone, IoT, etc.
• Les besoins et contraintes des systèmes d’exploitation dans un
contexte embarqué sont différents des serveurs et ordinateurs
personnels.
• La compréhension fine des mécanismes d’un OS et du bas niveau
permet
• de mieux utiliser un système embarqué avec un OS
• de mieux développer des applications de haut niveau
• de construire un OS spécifiquement pour les besoins d’un projet

4 / 227
Avant-propos

Objectifs

À l’issue de cette matière l’étudiant sera capable :


• de comprendre les principes de bases des systèmes d’exploitation
(rappels)
• de comprendre les problèmatiques des systèmes d’exploitation
• d’appréhender les grands principes de Linux pour les systèmes
embarqués

5 / 227
Avant-propos

Atteintes des objectifs ?

• lire le syllabus de cours


• respecter les consignes du syllabus
• des exercices sont proposés et corrigés en cours, travaux dirigés et en
travaux pratiques.
• des leçons introductives supplémentaires sont proposées à lire en
autonomie
• des exercices supplémentaires en autonomie sont proposés : quiz/tests
et recueil d’exercices

6 / 227
Avant-propos

Évaluation certificative

Controle continu

7 / 227
Avant-propos

Prérequis

• Cours :
• Architecture des ordinateurs
• Langage C
• Compilation
• Commandes UNIX
• Nous vous conseillons d’installer (uniquement, dual-boot ou machine
virtuelle) sur vos machines une distribution Linux classique
(non-exotique) !

8 / 227
Avant-propos

Configuration environnement expérimental

• Explications détaillées dans Moodle section “Documentation”


• Logiciels : en présentiel tout est installé sur le serveur pédagogique.
Connexion depuis réseau via machine Linux.
• Conseil : préparez des environnements virtuelles sur vos machines
personnels !

9 / 227
Avant-propos

Table des matières

Le cours est découpé en 2 parties :


1 Partie 1 : Architectures et principes des systèmes d’exploitation
2 Partie 2 : Étude de cas : xv6

10 / 227
Première partie I

Architectures et principes des systèmes


d’exploitation

11 / 227
Préambule

Préambule

Contenu
Cette partie :
• traite de manière introductive les éléments de base d’un système
d’exploitation
• permet d’acquérir le vocabulaire et de comprendre les bases
nécessaires pour les parties suivante de cette UE

Objectifs
À la fin de cette partie vous serez en mesure de :
• comprendre les concepts de base sur lesquels reposent un système
d’exploitation
• comprendre la structure d’un système d’exploitation
• justifier de l’intérêt d’un système d’exploitation pour un projet

12 / 227
Sommaire

1 Introduction

2 Processus

3 Gestion de la mémoire

4 Système de fichier

5 Gestion des entrées/sorties

6 Architectures de systèmes d’exploitation

7 Amorçage d’un OS

8 Conclusion
13 / 227
Sommaire

1 Introduction
Qu’est-ce qu’un système d’exploitation ?
Chronologie des systèmes et logiciels d’exploitation
Architecture d’un système d’exploitation
Matériel
Types de système d’exploitation

14 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Premières notions

Système d’Exploitation (ou Operating System en anglais)

15 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Premières notions

Système d’Exploitation (ou Operating System en anglais)

Définition de sa nature
Un système d’exploitation est un logiciel informatique s’exécutant sur un
ordinateur.

16 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Premières notions

Système d’Exploitation (ou Operating System en anglais)

Définition de sa nature
Un système d’exploitation est un logiciel informatique s’exécutant sur un
ordinateur.

Définition de son rôle


Un système d’exploitation fourni des programmes permettant de faire
fonctionner un ordinateur.

17 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 0 : Circuit logiques

18 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 1 : Micro-architecture

Couche 0 : Circuit logiques

19 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 2 : Jeu d’instruction

Couche 1 : Micro-architecture

Couche 0 : Circuit logiques

20 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 3 : Système d’exploitation

Couche 2 : Jeu d’instruction

Couche 1 : Micro-architecture

Couche 0 : Circuit logiques

21 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 4 : Langage d’assemblage

Couche 3 : Système d’exploitation

Couche 2 : Jeu d’instruction

Couche 1 : Micro-architecture

Couche 0 : Circuit logiques

22 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 5 : Langage haut niveau

Couche 4 : Langage d’assemblage

Couche 3 : Système d’exploitation

Couche 2 : Jeu d’instruction

Couche 1 : Micro-architecture

Couche 0 : Circuit logiques

23 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 5 : Langage haut niveau

Couche 4 : Langage d’assemblage

Couche 3 : Système d’exploitation

La couche 3 est-elle nécessaire ?


Couche 2 : Jeu d’instruction

Couche 1 : Micro-architecture

Couche 0 : Circuit logiques

24 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 5 : Langage haut niveau

Couche 4 : Langage d’assemblage

Couche 3 : Système d’exploitation


La couche 3 est-elle nécessaire ?
Couche 2 : Jeu d’instruction La réponse est non.

Couche 1 : Micro-architecture

Couche 0 : Circuit logiques

25 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Systèmes informatique : aperçu en couches

Couche 5 : Langage haut niveau

La couche 3 est-elle nécessaire ?


Couche 4 : Langage d’assemblage
La réponse est non.
• Application Bare metal :
Couche 3 : Système d’exploitation
• cf. vos premiers programmes
sur microcontrôleur par
Couche 2 : Jeu d’instruction exemple. (Attention on trouve
aussi des OS sur des µc :
Couche 1 : Micro-architecture contiki OS, etc.)
• cf. chapitre Baremetal des
devoirs
Couche 0 : Circuit logiques

26 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pourquoi une couche système d’exploitation ?

Pourquoi la couche système d’exploitation est-elle utile ?

27 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pourquoi une couche système d’exploitation ?

Pourquoi la couche système d’exploitation est-elle utile ?

Parce que il y a un besoin :


• de simplification pour les programmeurs d’applications

28 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pourquoi une couche système d’exploitation ?

Pourquoi la couche système d’exploitation est-elle utile ?

Parce que il y a un besoin :


• de simplification pour les programmeurs d’applications
• de s’abstraire des niveaux proches du matériel

29 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pourquoi une couche système d’exploitation ?

Pourquoi la couche système d’exploitation est-elle utile ?

Parce que il y a un besoin :


• de simplification pour les programmeurs d’applications
• de s’abstraire des niveaux proches du matériel
• de faciliter la maintenance

30 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pourquoi une couche système d’exploitation ?

Pourquoi la couche système d’exploitation est-elle utile ?

Parce que il y a un besoin :


• de simplification pour les programmeurs d’applications
• de s’abstraire des niveaux proches du matériel
• de faciliter la maintenance
• de gérer les droits entre utilisateurs

31 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pourquoi une couche système d’exploitation ?

Pourquoi la couche système d’exploitation est-elle utile ?

Parce que il y a un besoin :


• de simplification pour les programmeurs d’applications
• de s’abstraire des niveaux proches du matériel
• de faciliter la maintenance
• de gérer les droits entre utilisateurs
• de gérer l’accès aux ressources

32 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pourquoi une couche système d’exploitation ?

Pourquoi la couche système d’exploitation est-elle utile ?

Parce que il y a un besoin :


• de simplification pour les programmeurs d’applications
• de s’abstraire des niveaux proches du matériel
• de faciliter la maintenance
• de gérer les droits entre utilisateurs
• de gérer l’accès aux ressources
• de partager des ressources : cpu, périphériques, etc.

33 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pourquoi une couche système d’exploitation ?

Pourquoi la couche système d’exploitation est-elle utile ?

Parce que il y a un besoin :


• de simplification pour les programmeurs d’applications
• de s’abstraire des niveaux proches du matériel
• de faciliter la maintenance
• de gérer les droits entre utilisateurs
• de gérer l’accès aux ressources
• de partager des ressources : cpu, périphériques, etc.
• de réutilisation.

34 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Nature d’un système d’exploitation


Un système d’exploitation est un logiciel système.

Définition : logiciel
“Le logiciel est un ensemble de programmes, procédés et règles, et
éventuellement de documentation, relatifs au fonctionnement d’un
ensemble de traitement de données.”, source Larousse.

35 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Nature d’un système d’exploitation


Un système d’exploitation est un logiciel système.

Définition : logiciel
“Le logiciel est un ensemble de programmes, procédés et règles, et
éventuellement de documentation, relatifs au fonctionnement d’un
ensemble de traitement de données.”, source Larousse.

Définition : logiciel système


“Le logiciel système est un ensemble de programmes informatiques et de
bibliothèques logicielles qui fournit un environnement permettant de créer
et d’éxécuter des logiciels applicatifs.”, source Wikipedia fr.

36 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Nature d’un système d’exploitation


Un système d’exploitation est un logiciel système.

Définition : logiciel
“Le logiciel est un ensemble de programmes, procédés et règles, et
éventuellement de documentation, relatifs au fonctionnement d’un
ensemble de traitement de données.”, source Larousse.

Définition : logiciel système


“Le logiciel système est un ensemble de programmes informatiques et de
bibliothèques logicielles qui fournit un environnement permettant de créer
et d’éxécuter des logiciels applicatifs.”, source Wikipedia fr.

Définition : programme
Un programme est défini par une suite d’instructions permettant de faire
des traitements sur des données afin de fournir un résultat.
37 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Définitions des rôles d’un système d’exploitation ?

Deux rôles fondamentaux :


1 Abstraction, Tanenbaum [3] parle de la notion de machine étendue ou
machine virtuelle.
2 Gestionnaire de ressources : ordonnancement, mémoires,
périphériques E/S, gestion utilisateurs, etc.

38 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Pour résumé, un OS c’est quoi ?

Définition
Un système d’exploitation est un logiciel système qui permet d’abstraire et
de gérer les éléments matériels de l’architecture sur laquelle il est hébergé.
Il est la couche intermédiaire entre le logiciel applicatif et le matériel.

Applications

Système d’exploitation

Matériel

39 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

L’OS et le côté matériel

Le système d’exploitation coordonne les ressources à sa disposition en


gérant :
• le dialogue avec le contrôleur des périphériques via des
écritures/lectures sur le bus de communication
• les interruptions

CPU Mémoire E/S

40 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

Les interruptions

Définition
Une interruption est un évènement qui provoque l’arrêt de l’exécution
courante d’un programme par le processeur pour exécuter un bout de code
(routine).

Nature
• interruption matérielle (interrupt)
• interruption logicielle (Exception or Trap)

41 / 227
Introduction Qu’est-ce qu’un système d’exploitation ?

L’OS et le côté logiciels applicatifs

Applications

Système d’exploitation

Matériel

Définition : appels système


Les appels système sont des appels à des programmes (i.e. programmes
systèmes) proposés par le système d’exploitation permettant d’interagir
avec le système. Ces appels proviennent des programmes utilisateurs.

42 / 227
Sommaire

1 Introduction
Qu’est-ce qu’un système d’exploitation ?
Chronologie des systèmes et logiciels d’exploitation
Architecture d’un système d’exploitation
Matériel
Types de système d’exploitation

43 / 227
Introduction Chronologie des systèmes et logiciels d’exploitation

Un peu d’histoire

Plusieurs générations selon [3] :


1 Première génération (1945–1955)
• Côté matériel : tubes à vide et cartes perforées
• Côté logiciel : traitement par lots
2 Deuxième génération (1955–1965)
• Côté matériel : transitor à semi-conducteur
• Côté logiciel : multiprogrammation, utilisation de plusieurs composants
3 Troisième génération (1965–1980)
• Côté logiciel : multiprogrammation et temps partagé
4 Quatrième génération (1980– de nos jours)
• Côté matériel : ordinateur personnel
• Côté logiciel : gestion des délais et contrainte de temps

44 / 227
Sommaire

1 Introduction
Qu’est-ce qu’un système d’exploitation ?
Chronologie des systèmes et logiciels d’exploitation
Architecture d’un système d’exploitation
Matériel
Types de système d’exploitation

45 / 227
Introduction Architecture d’un système d’exploitation

Exemple d’architecture : cas d’UNIX

User
Shell, gui, compiler programms, interpre-
User mode ters, library standard (read, write, etc.) etc.
System call interface
kernel
filesystem, pilote, memory
Supervisor mode access, scheduling, etc.

Kernel interface to HW
controllers : memory, disks, terminals, etc.

HW

46 / 227
Introduction Architecture d’un système d’exploitation

OS UNIX-like - éléments structurants

• séparation des programmes applicatifs des programmes systèmes


• interface appels systèmes (system call) qui sépare mode utilisateur et
mode superiviseur
• un noyau (kernel) isolé des applications utilisateurs
• un noyau avec des pilotes qui gère l’interface avec le matériel :
mémoire, périphériques, etc.

47 / 227
Introduction Architecture d’un système d’exploitation

Noyau - rôle

• Passerelle de communication entre le logiciel applicatif et le matériel


• Gère les demandes du logiciel applicatif
• Gère les accès aux resources matériels
• Garantir la sécurité des données :
• protection des données entre processus
• protection des données entre utilisateurs
• Garantir un partage entre les ressources : mémoires, périphériques,
réseau, etc.

48 / 227
Introduction Architecture d’un système d’exploitation

Noyau - mode d’exécution

• Le noyau est chargé et exécuté en mémoire


• Le noyau s’exécute en mode privilégié
• ce qui permet d’avoir accès à toute les ressources du système
• ce qui permet donc de limiter l’accès des programmes aux ressources
dans l’optique de sécurisé les données manipulées
• ce qui permet de contrôler l’accès aux ressources dans l’optique de
partager celles-ci

49 / 227
Introduction Architecture d’un système d’exploitation

Noyau - modes d’accès

Les programmes du noyau sont accessibles


• via interruption matérielle : périphérique, horloge
• via interruption/exception logicielle : page fault, division par zéro, etc.
• via un appel d’une primitive système

50 / 227
Sommaire

1 Introduction
Qu’est-ce qu’un système d’exploitation ?
Chronologie des systèmes et logiciels d’exploitation
Architecture d’un système d’exploitation
Matériel
Types de système d’exploitation

51 / 227
Introduction Matériel

À la base il y a le matériel

Applications

Système d’exploitation

Matériel

• Le socle de base sur lequel repose un programme c’est le matériel (ou


hardware en anglais).
• Un système d’exploitation est un logiciel qui s’exécute sur une
architecture matériel.
• Le matériel est ici de manière générale un ordinateur.
• Sous le terme matériel il y a une très grande hétérogénéité
d’architectures et de nombreuses spécificités selon le domaine
d’application (grand public, embarqué, etc.), selon les fabricants, etc.
52 / 227
Introduction Matériel

Architecture ordinateur : rappels

Les éléments de base d’un ordinateur sont :


• le processeur :

CPU Mémoire E/S

53 / 227
Introduction Matériel

Architecture ordinateur : rappels

Les éléments de base d’un ordinateur sont :


• le processeur :
• se charge d’exécuter les instructions

CPU Mémoire E/S

54 / 227
Introduction Matériel

Architecture ordinateur : rappels

Les éléments de base d’un ordinateur sont :


• le processeur :
• se charge d’exécuter les instructions
• mode privilégié (supervisor mode or kernel mode, etc.)

CPU Mémoire E/S

55 / 227
Introduction Matériel

Architecture ordinateur : rappels

Les éléments de base d’un ordinateur sont :


• le processeur :
• se charge d’exécuter les instructions
• mode privilégié (supervisor mode or kernel mode, etc.)
• mode non privilégié (user mode)

CPU Mémoire E/S

56 / 227
Introduction Matériel

Architecture ordinateur : rappels

Les éléments de base d’un ordinateur sont :


• le processeur :
• se charge d’exécuter les instructions
• mode privilégié (supervisor mode or kernel mode, etc.)
• mode non privilégié (user mode)
• la mémoire

CPU Mémoire E/S

57 / 227
Introduction Matériel

Architecture ordinateur : rappels

Les éléments de base d’un ordinateur sont :


• le processeur :
• se charge d’exécuter les instructions
• mode privilégié (supervisor mode or kernel mode, etc.)
• mode non privilégié (user mode)
• la mémoire
• les périphériques E/S

CPU Mémoire E/S

58 / 227
Introduction Matériel

Architecture ordinateur : rappels

Les éléments de base d’un ordinateur sont :


• le processeur :
• se charge d’exécuter les instructions
• mode privilégié (supervisor mode or kernel mode, etc.)
• mode non privilégié (user mode)
• la mémoire
• les périphériques E/S
• les bus de communication

CPU Mémoire E/S

59 / 227
Sommaire

1 Introduction
Qu’est-ce qu’un système d’exploitation ?
Chronologie des systèmes et logiciels d’exploitation
Architecture d’un système d’exploitation
Matériel
Types de système d’exploitation

60 / 227
Introduction Types de système d’exploitation

Types de système d’exploitation

• Systèmes centralisés vs distribués


• Systèmes GPOS vs RTOS
• General Purpose Operating System sont des OS à temps partagé
• Real Time Operating System sont des OS avec des contraintes (respect
délais) sur l’échéance d’une tache.

61 / 227
Sommaire

1 Introduction

2 Processus

3 Gestion de la mémoire

4 Système de fichier

5 Gestion des entrées/sorties

6 Architectures de systèmes d’exploitation

7 Amorçage d’un OS

8 Conclusion
62 / 227
Sommaire

2 Processus
Introduction au processus
Introduction à la gestion des processus
Notions de fil d’exécution (thread)
Ordonnancement
Communication entre processus
Conclusion

63 / 227
Processus Introduction au processus

Qu’est-ce qu’un processus ?

Définition d’un processus


Un processus est un programme qui s’exécute sur un processeur. Chaque
processus à son propre compteur ordinal, ses registres et ses variables.

64 / 227
Processus Introduction au processus

Pourquoi ce concept de processus ?

Besoins et contraintes
• Exécution de plusieurs tâches en même temps
• Les architectures n’ont pas un nombre infini de processeurs

Définition multiprogrammation
Mode d’exploitation d’un ordinateur permettant l’exécution de plusieurs
programmes soit en simultanéité, soit en alternance. (source Larousse)

Ce que permettent les processus


• (pseudo) parallélisme
• plusieurs exécution d’un même programme
• le partage par un même processeur de l’exécution de plusieurs
processus

65 / 227
Processus Introduction au processus

Illustration du concept de processus

Exercice
Soit 4 processus notés A, B, C et D. Dessinez le diagramme de Gantt de
l’exécution de ces quatres processus par un processeur.

66 / 227
Processus Introduction au processus

Illustration du concept de processus

Exercice
Soit 4 processus notés A, B, C et D. Dessinez le diagramme de Gantt de
l’exécution de ces quatres processus par un processeur.

Diagramme Gantt processeur

67 / 227
Sommaire

2 Processus
Introduction au processus
Introduction à la gestion des processus
Notions de fil d’exécution (thread)
Ordonnancement
Communication entre processus
Conclusion

68 / 227
Processus Introduction à la gestion des processus

Mission du système d’exploitation

Le système d’exploitation a pour mission la gestion des processus :


• Création
• Gérer la vie d’un procssus :
• Exécuter
• Suspendre
• Bloquer
• Reprendre
• Supprimer
• Communication entre processus
• Synchronisation en processus
• Ordonnancer les processus

69 / 227
Processus Introduction à la gestion des processus

La naissance d’un processus : l’état de création

• Avant la création d’un processus, il y a un fichier exécutable (ou


simplement programme par abus de langage) stocké en mémoire
• Un processus est créé par un autre processus à l’exception du système
d’exploitation
• Hiérarchie des processus : processus père, processus fils

70 / 227
Processus Introduction à la gestion des processus

Rappels - Du programme au fichier exécutable

• Avant la création d’un processus il y a à l’origine un programme


source
• …qui est compilé
• …pour donner enfin un fichier binaire exécutable
Schéma en cours

71 / 227
Processus Introduction à la gestion des processus

Fichier exécutable - exemple format ELF

• Un fichier exécutable suit un format particulier selon les systèmes


• Par exemple le format ELF sous UNIX (cf. fig. et demo cours)

ELF header

Program header table


⎪ .text


⎩ .rodata

⎧ ...

⎩ .data

Section header table

source Wikipedia

72 / 227
Processus Introduction à la gestion des processus

La vie d’un processus : l’espace d’exécution


• À sa création un processus est localisé dans un espace mémoire qui lui
est propre. Ce qui offre une propriété d’isolation
• Cet espace mémoire est composé
• segment de texte contenant le programme
• segment de donnée contenant les données
• segment contenant le tas
• segment contenant la pile d’exécution
• Les processus s’exécute dans des espaces mémoires séparés

Addr high
seg stack

seg heap
seg data
seg text
Addr low
73 / 227
Processus Introduction à la gestion des processus

La vie d’un processus : les états


Exemple de cycle de vie [3] d’un processus :

Élu
1 Le processus se bloque en 1 2
attente de données 3
Bloqué Prêt
2 L’OS choisi d’exécuter un autre 4
processus
3 L’OS choisi d’éxécuter de Avec les états
nouveau le processus • Élu : processus en exécution
4 Les données deviennent • Prêt : processus suspendu
disponibles • Bloqué : processus en attente
d’un évènement externe

74 / 227
Processus Introduction à la gestion des processus

La vie d’un processus : les états


Exemple de cycle de vie [3] d’un processus :

Élu
1 Le processus se bloque en 1 2
attente de données 3
Bloqué Prêt
2 L’OS choisi d’exécuter un autre 4
processus
3 L’OS choisi d’éxécuter de Avec les états
nouveau le processus • Élu : processus en exécution
4 Les données deviennent • Prêt : processus suspendu
disponibles • Bloqué : processus en attente
d’un évènement externe
Mais quelle partie de l’OS gère tout ça ?

75 / 227
Processus Introduction à la gestion des processus

La vie d’un processus : les états


Exemple de cycle de vie [3] d’un processus :

Élu
1 Le processus se bloque en 1 2
attente de données 3
Bloqué Prêt
2 L’OS choisi d’exécuter un autre 4
processus
3 L’OS choisi d’éxécuter de Avec les états
nouveau le processus • Élu : processus en exécution
4 Les données deviennent • Prêt : processus suspendu
disponibles • Bloqué : processus en attente
d’un évènement externe
Mais quelle partie de l’OS gère tout ça ?

Réponse : l’ordonnanceur (scheduler en anglais)


76 / 227
Processus Introduction à la gestion des processus

La vie d’un processus : l’OS et la structure de donnée

Comment l’OS stocke les états et autres informations d’un processus ?

77 / 227
Processus Introduction à la gestion des processus

La vie d’un processus : l’OS et la structure de donnée

Comment l’OS stocke les états et autres informations d’un processus ?

L’ordonnanceur s’appuie sur une structure de données représentant l’état


d’un processus donné. Elle s’appelle le bloc de contrôle de processus
(Process Control Block (PCB) en anglais).

78 / 227
Processus Introduction à la gestion des processus

La vie d’un processus : l’OS et la structure de donnée

Comment l’OS stocke les états et autres informations d’un processus ?

L’ordonnanceur s’appuie sur une structure de données représentant l’état


d’un processus donné. Elle s’appelle le bloc de contrôle de processus
(Process Control Block (PCB) en anglais). Elle peut contenir de manière
générale
• Un identifiant du processus
• Les valeurs des registres
• Le compteur ordinal du processus
• Le pointeur de pile
• L’espace d’adressage du processus
• etc.

79 / 227
Processus Introduction à la gestion des processus

La vie d’un processus : l’OS et la structure de donnée

Comment l’OS stocke les états et autres informations d’un processus ?

L’ordonnanceur s’appuie sur une structure de données représentant l’état


d’un processus donné. Elle s’appelle le bloc de contrôle de processus
(Process Control Block (PCB) en anglais). Elle peut contenir de manière
générale
• Un identifiant du processus
• Les valeurs des registres
• Le compteur ordinal du processus
• Le pointeur de pile
• L’espace d’adressage du processus
• etc.

Le PCB a des caractéristiques différentes selon les OS


80 / 227
Processus Introduction à la gestion des processus

La mort d’un processus : l’état de terminaison

• Un processus peut être arrêté par l’utilisateur


• Un processus peut se terminer s’il a fini de faire son travail
• Un processus peut se terminer s’il y a une erreur
• Un processus peut se terminer sur l’action du processus parent pour
différentes raisons (processus fils plus nécessaire, processus parent
terminé, etc.)

81 / 227
Processus Introduction à la gestion des processus

Démonstration processus sous UNIX, Linux

• demo cours

• D’autres illustrations pratiques avec étude de cas xv6 plus loin dans le
cours et en TD :
• création processus avec appel système fork
• …

82 / 227
Sommaire

2 Processus
Introduction au processus
Introduction à la gestion des processus
Notions de fil d’exécution (thread)
Ordonnancement
Communication entre processus
Conclusion

83 / 227
Processus Notions de fil d’exécution (thread)

Qu’est-ce qu’un thread ?

Définition : thread
Un thread est un processus dit léger ayant un contexte commun mais
ayant sa propre pile.

Caractéristiques
• Un processus peut avoir plusieurs threads
• Les threads partagent le meme code et les mêmes données
• Un thread a sa propre pile

84 / 227
Processus Notions de fil d’exécution (thread)

Processus lourd et processus léger

Processus léger
Processus lourd
Code
Code

Données
Données
Pile A
Pile
Pile B

85 / 227
Processus Notions de fil d’exécution (thread)

Système d’exploitation et thread

Thread utilisateur
• Non géré par le noyau
• Si thread bloquant tout le processus est bloqué
• pas d’allocation sur plusieurs processeurs.
• portabilité (indépendant de l’OS)

Thread système
• Géré par le noyau
• Ordonnancement des threads du processus par le noyau
• Commmutation contexte, appels systèmes => coûteux

86 / 227
Processus Notions de fil d’exécution (thread)

Redéfinition de la notion de processus

Définition plus compléte d’un processus


Un processus est un programme qui s’exécute sur un processeur. Chaque
processus à son propre compteur ordinal, ses registres et ses variables. Un
processus est composé d’un fil d’exécution (thread) ou de plusieurs.

87 / 227
Sommaire

2 Processus
Introduction au processus
Introduction à la gestion des processus
Notions de fil d’exécution (thread)
Ordonnancement
Communication entre processus
Conclusion

88 / 227
Processus Ordonnancement

Pourquoi ordonnancer ?

Besoin
• Contexte de multiprogrammation
• Plusieurs processus
• Partage du processeur ou des processeurs

Contraintes
• Ressources finis (nombre de processeurs)
• Priorité entre les processus
• Temps alloué à un processus

89 / 227
Processus Ordonnancement

Définitions

Définition : ordonnanceur
Un ordonnanceur (scheduler en anglais) exécute un algorithme
d’ordonnancement. C’est généralement un composant du noyau d’un
système d’exploitation.

Définition : algorithme ordonnancement


Un algorithme d’ordonnancement va permettre de décider quelle processus
va être exécuter par le processeur et pendant combien de temps.

Définition : quantum
Le quantum est le temps d’allocation d’un processus par le processeur.

90 / 227
Processus Ordonnancement

Mesures de performances (1)

Temps de soumission d’un processus


Instant où le processus est soumis par l’ordonnanceur.

Temps d’attente d’un processus


Temps entre l’instant de soumission du processus par l’ordonnanceur et
l’instant où le processeur exécute le processus.

Temps d’exécution d’un processus


Temps entre l’instant de soumission et l’instant de fin d’exécution du
processus par le processeur.

91 / 227
Processus Ordonnancement

Mesures de performances (2)

Métrique de mesure de performances d’un algorithme d’ordonnancement :


• Temps d’attente
• Temps d’exécution
• Taux d’utilisation : ration de temps pendant lequel le processeur est
utilisé
• Débits : nombre moyen de processus traités par unité de temps
• Rotation : durée d’un processus entre instant de création et l’instant
de terminaison.

92 / 227
Processus Ordonnancement

Ordonnancer selon quels critères ?

L’ordonnanceur fait des choix selon


• l’équité
• l’efficacité
• le temps de réponse
• le temps d’exécution
• le rendement
L’ordonnancement a un coût lié au changement de contexte :
• exécution de l’ordonnanceur
• sauvegarde du contexte en cours
• chargement du prochain contexte

93 / 227
Processus Ordonnancement

Ordonnancer pour quels objectifs ?

Il y a plusieurs critères parfois antagonistes, alors l’ordonnancement se fait


selon des objectifs :
• Traitement par lots
• réduction temps entre soumission et achèvement
• occupation du processeur en permanence
• Traitement réactifs
• répondre rapidement
• répondre rapidement aux attentes utilisateurs
• Traitement temps réel
• respect des délais

94 / 227
Processus Ordonnancement

Classification des algorithmes

Il existe un certain nombre de solution d’ordonnancement qui peuvent être


classées selon deux grandes catégories :
• Ordonnancement en temps partagé
• Ordonnancement en temps réel

95 / 227
Processus Ordonnancement

Algorithmes Préemptif et Non préemptif

Définition : préemptif
Un algorithme d’ordonnancement préemptif va allouer un processus pour
un temps donné puis allouer un autre processus après.

Définition : non préemptif


Un algorithme d’ordonnancement non préemptif va allouer un processus
qui va libérer le processeur volontairement.

96 / 227
Processus Ordonnancement

Priorité

Principe
À chaque processus une priorité est associée.

Problème
Problème de la famine

Solution
Technique de vieillissement consistant à augmenter la priorité des
processus au cours du temps.

97 / 227
Processus Ordonnancement

Algorithmes d’ordonnancement ?

Algorithmes collaboratifs
• First Come First Served
• Last Input First Output
• Shortest Job First
Algorithmes préemptif
• Shortest Remaining Time Next
• Fixed priority pre-emptive scheduling
• Round-Robin
• Multilevel feedback queue

98 / 227
Processus Ordonnancement

Algorithme First Come, First Served (1)

Principe
Les processus sont alloués en fonction de leur ordre d’arrivée. Le premier
arrivé est le premier servi.

99 / 227
Processus Ordonnancement

Algorithme First Come, First Served (2)

Exercice
Quantum = 1

Processus Durée Instant de soumission


1 3 0
2 2 2
3 1 3
4 4 1

Questions
1 représenter le diagramme de Gantt
2 calculer les performances de l’algorithme : temps d’attente et temps
d’exécution

100 / 227
Processus Ordonnancement

Algorithme First Come, First Served (3)

Avantages/Inconvenients
• Avantages
• Simplicité
• Équité
• Inconvénients
• Efficacité
• Pas de priorité
• Réactivité

101 / 227
Processus Ordonnancement

Plus court d’abord

Principe
L’algorithme (Shortest Job First, SJF) alloue le processus dont le temps
d’exécution le plus court en priorité

Avantages/Inconvenients
• Avantages
• Réactif
• Inconvénients
• Équité
• Efficacité

102 / 227
Processus Ordonnancement

Round-Robin

Algorithme
Allocation de tranches (quantum) de temps processeur égale pour tous les
processus. Lorsque le quantum est dépassé si le processus n’est pas
terminé il est replacé en fin de file (algorithme tourniquet).

Avantages/Inconvenients
• Avantages
• Équité
• Amélioration réactivité
• Inconvénients
• Temps d’attente moyen élevé
• Nombre de commutation important

103 / 227
Sommaire

2 Processus
Introduction au processus
Introduction à la gestion des processus
Notions de fil d’exécution (thread)
Ordonnancement
Communication entre processus
Conclusion

104 / 227
Processus Communication entre processus

Besoin de communiquer entre processus ?


Processus indépendant
Un processus est indépendant lorsqu’il n’échange aucune information avec
un autre processus

Processus coopératif
• Processus qui nécessite une communication avec un autre processus
• Les processus coopératifs implique la mise en place de mécanisme
pour supporter une communication entre processus (Inter Process
Commmunication en anglais, (IPC)).

Communication intra-système vs inter-système


• Communication entre processus au sein du même système : processus
concurrent
• Communication entre processus distant sur des systèmes distants
105 / 227
Processus Communication entre processus

Exemple : accès concurrent à une ressource partagé

• 2 threads partagent une variable en mémoire et font des calculs avec


• Thread A fait : var=var+10
• Thread B fait : var=var-20

demo cours API POSIX pthread, Linux

• Quel peut-être le problème ? Explication ?


• Quel est le code assembleur pour i=i+1 ?

106 / 227
Processus Communication entre processus

Problème de l’accès concurrent aux ressources

Problème : accès concurrent (ou race condition)


Cas où deux (ou plus) processus accèdent (en lecture ou écriture) à des
données partagées et dont le résultat va dépendre de leurs
ordonnancement.

Causes
• Accès à des ressources partagées
• Opérations non atomique comme par exemple i=i+1.

Comment éviter ou gérer les cas où il y a un conflit d’accès ?

107 / 227
Processus Communication entre processus

Solutions de gestion des accès concurrents aux ressources ?

La solution est l’utilisation de mécanismes


• section critique et exclusion mutuelle
• de communication entre processus (Inter Process Communication,
(IPC))
• de synchronisation

108 / 227
Processus Communication entre processus

Section critique et exclusion mutuelle


Solution
Rendre la/les opération(s) (instruction, suite d’instructions, bout de code,
etc.) sur une ressource partagée atomique en faisant en sorte qu’elle ne
soit pas accessible par un autre processus.

Définition : Ressource critique


Ressource logicielle ou matérielle ne pouvant être utilisée que par un seul
processus à la fois. (Source wiktionary)

Définition Section critique


Ensemble de toutes les instructions consécutives d’un programme qui ont
besoin d’accéder à une ressource critique. (Source wiktionary)

Principe d’exclusion mutuelle


Une seule section critique exécuté à la fois.
109 / 227
Processus Communication entre processus

Exclusion mutuelle par verrouillage (mutex)

demo cours API POSIX pthread et mutex, Linux

110 / 227
Processus Communication entre processus

Mécanismes de communications
Dans ce contexte, il existe deux modèles de communication IPC utilisé
dans les systèmes d’exploitation
1 les modèles à mémoire partagée
2 les modèles par passage de messages

Processus A Processus A
mem partage
Processus B Processus B

Noyau Noyau

111 / 227
Processus Communication entre processus

Mémoire partagée

Avantages
• Appels systèmes uniquement pour le partage mémoire
• Rapidité
• Le partage est seulement un accès mémoires à géré (pas de gestion
par le noyau)

Inconvénients
• Complexité
• Gestion conflits, synchronisation

112 / 227
Processus Communication entre processus

Passage de messages

avantages
• Simple
• Pas de problème de conflits

inconvénients
• Lent
• Utilisation du noyau (coût)

113 / 227
Processus Communication entre processus

Mécanismes de synchronisation

Dans le cas du modèle de communication à mémoire partagée des


mécanismes de synchronisations spécifiques sont nécessaires.

Basé sur attente active


Le processus est en attente active (consommation de CPU) d’une section
critique

Basé sur attente passive


Le processus est en attente passive (ne consomme pas de CPU) d’une
section critique

114 / 227
Processus Communication entre processus

Méthode de synchronisation : le sémaphore

• Principe :
• Le sémaphore (sem) est caractérisé par un compteurs et une liste de
processus bloqué
• Trois opérations sur le sémaphore sem
• init : création et initialisation valeur compteur
• P(sem) : action de demande d’autorisation. Décrémente le compteur,
teste si une ressource est disponible si oui ok si non mise en attente du
processus appeleant dans la file
• V(sem) : action d’autorisation. incrémente le compteur, test si
compteur inférieur ou égal à 0 et si vérifié alors libére un processus de
la file
• Deux types
• Sémaphore comptage
• Sémaphore binaire (utilisé aussi pour faire de l’exclusion mutuelle)

115 / 227
Sommaire

2 Processus
Introduction au processus
Introduction à la gestion des processus
Notions de fil d’exécution (thread)
Ordonnancement
Communication entre processus
Conclusion

116 / 227
Processus Conclusion

Résumé

• Un processus est un programme en exécution


• Les processus peuvent communiquer entre eux : problème accès
concurrent, section critique, mécanismes IPC et synchronisation
• Ordonnancement permet d’allouer un processus au processeur parmis
une liste de processus
• Plusieurs algorithmes d’ordonnancement existent répondant à
différents critères : équité, etc.
• Les OS actuels utilisent plusieurs d’entre eux

117 / 227
Sommaire

1 Introduction

2 Processus

3 Gestion de la mémoire

4 Système de fichier

5 Gestion des entrées/sorties

6 Architectures de systèmes d’exploitation

7 Amorçage d’un OS

8 Conclusion
118 / 227
Sommaire

3 Gestion de la mémoire
Introduction
Stratégies d’allocation mémoires et critères
Stratégies d’allocation mémoire contiguë
Stratégies d’allocation mémoire non contiguë
Stratégie de gestion par mémoire virtuelle
Conclusion

119 / 227
Gestion de la mémoire Introduction

Introduction gestion de la mémoire

• Fortement lié au concept de processus


• Lié aussi au matériel : avec ou sans MMU
• Les OS ont une unité qui permet de gérer la mémoire
• La suite de cette section traite des concepts fondamentaux de
manière générale. En effet, il existe de nombreuses manières de
répondre aux besoins et problèmes de la gestion mémoire.
• Nous ne détaillerons donc pas ici une unité de gestion mémoire pour
un OS en particulier.

120 / 227
Gestion de la mémoire Introduction

Qu’est-ce qu’une mémoire ?

Définition
Une mémoire est un composant électronique ayant la capacité de stocker
des informations.

Caractéristiques
• capacité
• temps d’accès
• temps de cycle
• débit
• volatilité
• technologie : magnétique, etc.
• types : morte, vive, flash.

121 / 227
Gestion de la mémoire Introduction

Utilisation des mémoires

La mémoire est un espace de stockage qui a pour rôle de stocker


1 des instructions
2 des données
Une mémoire est structurée en un ensemble de cases référencées par une
adresse.

122 / 227
Gestion de la mémoire Introduction

Hiérarchie des mémoires

Classement par temps d’accès


1 Registres
2 Cache
3 Mémoire principale
4 Mémoire secondaire

123 / 227
Gestion de la mémoire Introduction

Pourquoi gérer la mémoire ?

Besoins
• On veut pouvoir exécuter plusieurs processus et donc nous devons
partager la mémoire
• On veut un certain niveau de performance
• On veut protéger l’accès mémoire d’un processus par un autre
processus
• etc.

Contraintes
• La taille de la mémoire vive est limitée pour des raisons de coût, etc.
• La tailles des programmes
• Le nombre de processus

124 / 227
Gestion de la mémoire Introduction

Partage physique de la mémoire

Besoin de partager la mémoire physique pour exécuter plusieurs processus !

Problèmes
• Comment partager l’espace mémoire physique ?
• Comment protéger l’accès d’un espace mémoire d’un processus par un
autre ?
• Comment gérer lorque la mémoire vive ne peut contenir tous les
processus actifs ?

125 / 227
Gestion de la mémoire Introduction

Adresses physiques et logiques

Vocabulaire
• Adresse physique : adresse de l’unité mémoire
• Adresse logique : adresse généré par le CPU

Qui fait quoi ?


• Les programmes gèrent des adresses logiques
• L’OS via le matériel gère des adresses physiques
• Quel matériel ?:
• MMU (Memory Management Unit) : matériel qui fait la conversion
(traduction) des adresses logiques en adresses physiques.
• Registre base et limite

126 / 227
Sommaire

3 Gestion de la mémoire
Introduction
Stratégies d’allocation mémoires et critères
Stratégies d’allocation mémoire contiguë
Stratégies d’allocation mémoire non contiguë
Stratégie de gestion par mémoire virtuelle
Conclusion

127 / 227
Gestion de la mémoire Stratégies d’allocation mémoires et critères

Critère matériel

• Gestion mémoire architecture matériel


• MMU vs sans MMU (cas microcontrôleur en générale)

128 / 227
Gestion de la mémoire Stratégies d’allocation mémoires et critères

Critère de la fragmentation

Définition fragmentation interne


Phénomène se produisant lorsque la taille d’un processus est inférieur à la
taille d’une partition, d’une page, etc. L’espace mémoire libre est la
fragmentation interne.

Définition fragmentation externe


Cas où un espace mémoire est libre et dont la taille est inférieure à la taille
d’un processus. Cet espace libre (trou) est causé par des allocations et des
libérations.

• Fragmentation interne : (taille processus) / (taille alloues)


• Fragmentation externe : (taille trous) / (taille mémoire)

129 / 227
Gestion de la mémoire Stratégies d’allocation mémoires et critères

Critère de performance

• Temps requis pour lié une adresse logique à une adresse physique

130 / 227
Gestion de la mémoire Stratégies d’allocation mémoires et critères

Critère de va-et-vient

• Option de copie de la mémoire principale vers la mémoire secondaire


pour permettre un plus grand nombre de processus. Cas ou la somme
des mémoires des processus est supérieure à la mémoire vive
• Option qui peut s’intégrer à différentes stratégies de gestion mémoire

131 / 227
Gestion de la mémoire Stratégies d’allocation mémoires et critères

Critère de protection

• Option de protection d’élément d’un processus


• Protection de segment ou de page

132 / 227
Sommaire

3 Gestion de la mémoire
Introduction
Stratégies d’allocation mémoires et critères
Stratégies d’allocation mémoire contiguë
Stratégies d’allocation mémoire non contiguë
Stratégie de gestion par mémoire virtuelle
Conclusion

133 / 227
Gestion de la mémoire Stratégies d’allocation mémoire contiguë

Allocation contiguë : partition fixe

• Mémoire divisé en tailles fixes


• Exécution des processus
Espace mémoire
toujours dans le même espace
Processus A • Correspondence @physique et
@logique à la compilation ou
Processus B lors du chargement.
• Espace réservé même si pas de
Vide processus
• Espace perdu si taille processus
Processus C
inférieur à taille partition
• Recouvrement si taille processus
OS
supérieur à taille partition
• Problème fragmentation

134 / 227
Gestion de la mémoire Stratégies d’allocation mémoire contiguë

Allocation contiguë : partition variable

Espace mémoire • Création/Libération partition à


la demande
Processus A
• Besoin de connaître taille
Processus B processus
• Compactage mémoire coûteux
Vide pour petit système
Processus D
• Gestion de la mémoire par :
Processus C table de bits, liste chaînée,
allocation par subdivision ([3])
OS • Problème fragmentation

135 / 227
Sommaire

3 Gestion de la mémoire
Introduction
Stratégies d’allocation mémoires et critères
Stratégies d’allocation mémoire contiguë
Stratégies d’allocation mémoire non contiguë
Stratégie de gestion par mémoire virtuelle
Conclusion

136 / 227
Gestion de la mémoire Stratégies d’allocation mémoire non contiguë

Segmentation

Définition segmentation
La mémoire est partitionnée en éléments de taille variable qui ont une
certaine logique et qui sont alors appelés segments.

Définition segment
Un segment est un élément logique d’un programme (variables, main, etc.).

• Solution au phénomène de fragmentation


• Taille de segments variables
• Protection de segments
• Partage de segments entre processus

137 / 227
Gestion de la mémoire Stratégies d’allocation mémoire non contiguë

Réalisation basique de la segmentation


• Adresse logique : numéro segment + offset
• Un tableau de segments par processus
• Descripteur de segments : longueur, privilèges
• Segments construits à la compilation (segment code, segment
variable, etc.)

Mémoire logique Mémoire physique


Espace mémoire Seg. stack 1
Processus1

Seg. heap 1
Seg. data 1
Seg. text 1 Seg. text 1

Seg. stack 1 Traduction?


Espace mémoire
Processus2

Seg. heap 1
Seg. data 1
Seg. text 2
Seg. text 1

138 / 227
Gestion de la mémoire Stratégies d’allocation mémoire non contiguë

Segmentation et traduction d’adresse

• Adresse logique : numéro segment + offset


• Un tableau de segments par processus

@ Logic
CPU Seg. num. Depl.

Yes
< +
Limit Base No @ Physical

Segments table

Trap: adressing error

Memory

139 / 227
Gestion de la mémoire Stratégies d’allocation mémoire non contiguë

Pagination

Définition
La mémoire est partitionnée en blocs de taille fixe appelés pages.

• Solution au phénomène de fragmentation


• Les pages sont vues par le processus
• Les cadres de pages sont vus par la mémoire physique
• Taille pages équivaut à taille cadre
• Correspondance entre pages et cadres faite dans la table des pages.

140 / 227
Gestion de la mémoire Stratégies d’allocation mémoire non contiguë

Réalisation basique de la pagination


• Espace d’adresse logique découpé en page de taille fixe
• Espace d’adresse physique découpé en cadre de même taille fixe
• @logique est faite d’un numéro de page et d’un déplacement dans la
page
• Table de page contient à chaque index le numéro de cadre ainsi qu’un
bit de présence.

Mémoire logique Mémoire physique


Page 1 Frame 2
Espace mémoire Page 2
Page 3
Processus1 Frame 1

Page 1
Espace mémoire Page 2
Processus2 Page 3
Page 4
Frame 1

Traduction? Frame 3
Frame 3

Frame 2
Frame 4

141 / 227
Gestion de la mémoire Stratégies d’allocation mémoire non contiguë

Pagination et traduction d’adresse

• L’OS gère une table de pages par processus


• Traduction d’adresse, cas table de pages à 1 niveau

@ Logic
CPU Page num. Page offset

Pages table

Frame num. Page offset

@ Physical
Memory

142 / 227
Gestion de la mémoire Stratégies d’allocation mémoire non contiguë

Pagination et champs de contrôle


• Certains systèmes ajoutent un champ spécial (drapeau ou Flag en
anglais) pour contrôler l’accès à un cadre de page :
• Bit de présence
• Lecture seule
• Lecture seule
• Non exécutable
• …
• Ce champ est présent dans la table de pages
@ Logic
CPU Page num. Page offset

Pages table

Frame num. Page offset

@ Physical
Memory
143 / 227
Sommaire

3 Gestion de la mémoire
Introduction
Stratégies d’allocation mémoires et critères
Stratégies d’allocation mémoire contiguë
Stratégies d’allocation mémoire non contiguë
Stratégie de gestion par mémoire virtuelle
Conclusion

144 / 227
Gestion de la mémoire Stratégie de gestion par mémoire virtuelle

Qu’est-ce que la mémoire virtuelle ?

Besoins et contraintes
• Contrainte de processus supérieur à la taille de la mémoire principale
• Besoin d’adresser plus que ce que peut adresser physiquement la
machine
• Problème de la fragmentation

Définition
La mémoire virtuelle est une technique qui consiste à associer à la
mémoire physique une partie de la mémoire d’un disque dur. En mémoire
vive se trouve uniquement les parties actives d’un processus et les autres
parties se trouvent sur le disque dur.

145 / 227
Gestion de la mémoire Stratégie de gestion par mémoire virtuelle

Implantation de la mémoire virtuelle

Techniques
• pagination (cf. transparents précédent)
• segmentation (cf. transparents précédent)
• hybride : segmentation et pagination

Algorithmes de remplacement de pages


Gestion des fautes de pages
• Remplacement de pages optimal de Belady (non réalisable !)
• Remplacement FIFO
• etc.

146 / 227
Gestion de la mémoire Stratégie de gestion par mémoire virtuelle

Réalisation basique de la mémoire virtuelle

cf. schéma en cours !

147 / 227
Sommaire

3 Gestion de la mémoire
Introduction
Stratégies d’allocation mémoires et critères
Stratégies d’allocation mémoire contiguë
Stratégies d’allocation mémoire non contiguë
Stratégie de gestion par mémoire virtuelle
Conclusion

148 / 227
Gestion de la mémoire Conclusion

Résumé

• Un OS et différent types de gestion mémoire :


• avec ou sans MMU (accélérateur matériel gérant les segments et les
pages)
• avec ou sans pagination
• avec ou sans segmentation
• avec ou sans va et viens (swaping)
• hybride : pagination segmentée ou segmentation paginée
• Pagination => partition physique
• Segmentation => partition logique

149 / 227
Sommaire

1 Introduction

2 Processus

3 Gestion de la mémoire

4 Système de fichier

5 Gestion des entrées/sorties

6 Architectures de systèmes d’exploitation

7 Amorçage d’un OS

8 Conclusion
150 / 227
Sommaire

4 Système de fichier
introduction
Interface utilisateur

151 / 227
Système de fichier introduction

Besoins et contraintes

Certaines applications nécessitent


• de stocker une grande quantité de données
• gère un grand nombre de données
• de garder en mémoire des informations sur une durée longue une fois
le processus terminé (persistence)
• de garder en mémoire des informations une fois l’ordinateur éteint
• de pouvoir retrouver des informations (organisation)
Contraintes
• espace adressage processus est réduit
• pertes des variables une fois le processus terminé
• accès aux données par plusieurs processus simultanément

152 / 227
Système de fichier introduction

Solution : les fichiers et le système de fichier

Les fichiers
Stocker les données dans des fichiers sur des supports de manière
permanente comme des disques durs par exemple.

Rôle de l’OS
Le système d’exploitation a pour rôle de gérer les fichiers : nom, droit,
appartenance, etc. Cette mission est faite par le système de fichier.

153 / 227
Sommaire

4 Système de fichier
introduction
Interface utilisateur

154 / 227
Système de fichier Interface utilisateur

Les fichiers
• Stucture selon les OS
• Suite d’octets
• Suite d’enregistrement
• Arbre d’enregistrement de taille variable
• types :
• donnée
• répertoire
• exécutable
• autres
• attributs : nom, date modification, taille, droits, etc.
• opérations :
• création
• suppression
• fermeture
• ouverture
• etc.
155 / 227
Système de fichier Interface utilisateur

Les catalogues

• répertoires
• hiérarchies : à plat, en arbre, catalogue par utilisateurs, etc.
• chemin d’accès
• opérations : création, suppression, ouverture, fermeture, etc.

156 / 227
Sommaire

1 Introduction

2 Processus

3 Gestion de la mémoire

4 Système de fichier

5 Gestion des entrées/sorties

6 Architectures de systèmes d’exploitation

7 Amorçage d’un OS

8 Conclusion
157 / 227
Sommaire

5 Gestion des entrées/sorties


Introduction

158 / 227
Gestion des entrées/sorties Introduction

Entrées/Sorties ?

Définition
Les entrées/sorties sont des communications entre le processeur et les
périphériques.

159 / 227
Gestion des entrées/sorties Introduction

Les périphériques entrées/sorties ?

Exemples :
• clavier
• souris
• imprimantes
• écran
Structure :
• un contrôleur
• mémoire
• connexion : bus interne (pci, isa, etc.), usb, série, spi, i2c, etc

160 / 227
Sommaire

1 Introduction

2 Processus

3 Gestion de la mémoire

4 Système de fichier

5 Gestion des entrées/sorties

6 Architectures de systèmes d’exploitation

7 Amorçage d’un OS

8 Conclusion
161 / 227
Sommaire

6 Architectures de systèmes d’exploitation


Introduction
Noyau monolithique
Noyau monolithique modulaire
Micro-Noyau

162 / 227
Architectures de systèmes d’exploitation Introduction

Introduction

• Différentes structures et donc différents types d’OS existent


• Différentes conception du noyau : monolithique, micro-noyau, …

163 / 227
Sommaire

6 Architectures de systèmes d’exploitation


Introduction
Noyau monolithique
Noyau monolithique modulaire
Micro-Noyau

164 / 227
Architectures de systèmes d’exploitation Noyau monolithique

Noyau monolithique

• Monolithique signifie que l’ensemble des fonctions du système ainsi


que les pilotes sont présentes dans le binaire généré lors de la
compilation.

165 / 227
Sommaire

6 Architectures de systèmes d’exploitation


Introduction
Noyau monolithique
Noyau monolithique modulaire
Micro-Noyau

166 / 227
Architectures de systèmes d’exploitation Noyau monolithique modulaire

Noyau monolithique modulaire


• Modulaire signifie qu’un principe de modularité est ajouté pour des
modules comme des pilotes par exemple.
• permet d’avoir pour le noyau uniquement les parties principales du
système dans un bloc monolithique
• de pouvoir charger dynamiquement certains modules : pilotes, etc.

Applications

Noyau monolithique
modulaire

Matériel
Services

Source Wikipedia
167 / 227
Sommaire

6 Architectures de systèmes d’exploitation


Introduction
Noyau monolithique
Noyau monolithique modulaire
Micro-Noyau

168 / 227
Architectures de systèmes d’exploitation Micro-Noyau

Micro-Noyau
• Fonctionnalités du noyau réduite
• certaines fonctions gérées dans des noyaux monolithiques sont
déplacées en mode utilisateur sous forme de services : système de
fichier, pilotes de périphériques, …
Applications

µ noyau

Matériel

Services

Source Wikipedia
169 / 227
Sommaire

1 Introduction

2 Processus

3 Gestion de la mémoire

4 Système de fichier

5 Gestion des entrées/sorties

6 Architectures de systèmes d’exploitation

7 Amorçage d’un OS

8 Conclusion
170 / 227
Sommaire

7 Amorçage d’un OS
Introduction
Description générale d’une séquence d’amorçage
Programmes d’amorçage
Cas d’étude x86 : séquence d’amorçage avec BIOS Legacy
Conclusion

171 / 227
Amorçage d’un OS Introduction

Introduction

• Ne fait pas partie de l’OS donc hors sujet


• …mais détour nécessaire afin de comprendre que l’OS n’est pas le
premier logiciel à se lancer sur une carte
• …mais besoin de comprendre cette phase pour comprendre le
démarrage du noyau
• Vu très rapidement
• Pour information dans l’embarqué il y a de nombreuses façons
différentes d’amorçer un système selon le type de SoC.

172 / 227
Amorçage d’un OS Introduction

Qu’est-ce qu’un programme d’amorçage ?

173 / 227
Amorçage d’un OS Introduction

Qu’est-ce qu’un programme d’amorçage ?

Définition de sa nature
Un programme d’amorçage (ou Bootloader en anglais) est un programme
informatique.

174 / 227
Amorçage d’un OS Introduction

Qu’est-ce qu’un programme d’amorçage ?

Définition de sa nature
Un programme d’amorçage (ou Bootloader en anglais) est un programme
informatique.

Définition de son rôle


Un bootloader a pour rôle de démarrer un système.

175 / 227
Amorçage d’un OS Introduction

Vocabulaire

• ROM code, Boot ROM : petit programme en ROM qui se charge


d’aller charger le prochain code à exécuter dès le démarrage
• BIOS legacy
• BIOS UEFI
• Bootsector, Master Boot Record : espace mémoire réservé pour le
Boot

176 / 227
Sommaire

7 Amorçage d’un OS
Introduction
Description générale d’une séquence d’amorçage
Programmes d’amorçage
Cas d’étude x86 : séquence d’amorçage avec BIOS Legacy
Conclusion

177 / 227
Amorçage d’un OS Description générale d’une séquence d’amorçage

Séquence d’amorçage

Une fois le système sous tension la séquence d’amoçage se fait en plusieurs


étapes :
1 Actions prédéfinis qui initialise le matériel
2 Le processeur charge la première instruction du Bootloader mise à une
adresse bien précise dépendant du processeur
3 Le Bootloader se charge d’initialiser le système
4 Le Bootloader charge en mémoire principale (RAM) le noyau.
5 Le Bootloader exécute le programme d’init du noyau

178 / 227
Sommaire

7 Amorçage d’un OS
Introduction
Description générale d’une séquence d’amorçage
Programmes d’amorçage
Cas d’étude x86 : séquence d’amorçage avec BIOS Legacy
Conclusion

179 / 227
Amorçage d’un OS Programmes d’amorçage

BIOS + Bootloader

• Master Boot Record


• Bios :
• code contenu dans un ROM de la carte
• première étape de chargement du bootloader
• initialisation mémoire RAM, etc.
• Bootloaders classiques ayant pour rôle de charger le noyau
• GRUB : GNU GRand Unified Bootloader
• Syslinux

180 / 227
Amorçage d’un OS Programmes d’amorçage

Bootloader sans BIOS

• Rôle : intialiser le matériel, démarrer le système


• Plusieurs choix :
• redboot
• U-Boot
• etc.

181 / 227
Sommaire

7 Amorçage d’un OS
Introduction
Description générale d’une séquence d’amorçage
Programmes d’amorçage
Cas d’étude x86 : séquence d’amorçage avec BIOS Legacy
Conclusion

182 / 227
Amorçage d’un OS Cas d’étude x86 : séquence d’amorçage avec BIOS Legacy

Cas d’étude x86 : séq. d’amorçage avec BIOS Legacy (1)

1 Appuie sur le bouton ON


2 BIOS Power On Self Test. Si OK, le BIOS POST charge le BIOS en
mémoire et lance son exécution. Le processeur démarre en real mode
et ses registres sont initialisés par défaut :
• IP = 0xFFF0
• CS selector = 0xF000
• CS base = 0xFFFF0000
À ce stade, l’espace d’@ d’un segment est de 64kio du fait des
registres sur 16 bits. La gestion de la mémoire se fait par
segmentation :
• @physique = Segment Selector * 16 + Offset
• @physique = CS « 4 + IP

183 / 227
Amorçage d’un OS Cas d’étude x86 : séquence d’amorçage avec BIOS Legacy

Cas d’étude x86 : séq. d’amorçage avec BIOS Legacy (2)

Le CPU pointe sur l’@ 0xFFFFFFF0 (reset vector) où il y a par défaut


la première instruction après un Reset. À cette @ il y un jmp qui
pointe sur le BIOS. Cette @ est formé en ajoutant à CS base le
contenu du registre EIP (0xFFFF000 + 0xFFF0)
3 Le BIOS démarre, détecte et configure le matériel
4 Le BIOS va maintenant chercher à donner la main au prochain étage
de Boot. Pour cela, il cherche un MBR en scrutant les 512 Bytes de
chaque mémoire (disquette :-), lecteur disque, disque dur, sdCard,
etc.). Si magic number 0x55AA, le BIOS se charge les 512 Bytes à
l’adresse 0x7C00
5 exécution du code (le bootloader) à partir de l’adresse 0x7C00
6 le bootloader charge le système d’exploitation en mémoire et passe le
CPU en protected mode

184 / 227
Amorçage d’un OS Cas d’étude x86 : séquence d’amorçage avec BIOS Legacy

Cas d’étude x86 : séq. d’amorçage avec BIOS Legacy (3)

Démo 1 stupide Bootloader ! (Exemple disponible dans cahier d’exercices)

1. crédits : https://50linesofco.de/post/2018-02-28-writing-an-x86-hello-world-bootloader-with-assembly
185 / 227
Sommaire

7 Amorçage d’un OS
Introduction
Description générale d’une séquence d’amorçage
Programmes d’amorçage
Cas d’étude x86 : séquence d’amorçage avec BIOS Legacy
Conclusion

186 / 227
Amorçage d’un OS Conclusion

Résumé

• Ne fait pas parti d’un OS mais étape (complexe) importante à saisir


car démarre le noyau
• Aperçu des principes de la séquence d’amorçage x86 et plateforme
Raspberry Pi 3 modèle B+.
• À travers l’exemple de xv6 dans la suite du cours nous verrons
comment le noyau est démarré

187 / 227
Amorçage d’un OS Conclusion

Pour aller plus loin

Cette section ne vous donne qu’un aperçu des principes de la séquence


d’amorçage d’un programme. Pour aller plus loin, nous pouvons vous
conseiller les lectures suivantes :
• https://0xax.gitbooks.io/linux-insides/Booting/
• Boot time :
• https://elinux.org/Boot_Time
• https://bootlin.com/doc/training/boot-time/
• https://wiki.osdev.org/Main_Page voir Booting and Setup
et les exercices du chapitre séquence d’amorçage du cahier d’exercices :
• exercice exemple cours x86
• exercice bootloader Raspberry Pi 3 modèle B+

188 / 227
Sommaire

1 Introduction

2 Processus

3 Gestion de la mémoire

4 Système de fichier

5 Gestion des entrées/sorties

6 Architectures de systèmes d’exploitation

7 Amorçage d’un OS

8 Conclusion
189 / 227
Conclusion

Résumé

• Aperçu des principes de bases des OS en générale


• stucturation d’un OS
• processus
• communication IPC
• ordonnancement
• gestion mémoire
• système de fichier
• Digression sur les logiciels d’amorçages : Bios et bootloader
• Explication cas pratique OS xv6 (exercice TD associé)

190 / 227
Conclusion

La suite du cours

Dans la suite du cours, nous étudierons les systèmes d’exploitation


centralisé de type Unix. Nous nous intéresserons en particulier à xv6 qui
est bien adapté pour l’enseignement.

191 / 227
Conclusion

Pour aller plus loin

Ce chapitre ne vous donne qu’un aperçu des principes des systèmes


d’exploitation. Pour aller plus loin, nous pouvons vous conseiller les
lectures suivantes :
• Systèmes d’exploitation, Andrew Tanenbaum, [3].
• Silberschatz Galvin & Gagne, Operating Systems Concepts, [2].
• Ressources autres : cours, liens internet :
• https://perso.limsi.fr/sabouret/archives-info32b/
• https://moodle.insa-lyon.fr/course/view.php?id=4045/
course/view.php?id=4045
• http://www.groupes.polymtl.ca/inf2610/documentation/
• http://codex.cs.yale.edu/avi/os-book/

192 / 227
Deuxième partie II

Études de cas

193 / 227
Sommaire

9 Étude de cas : xv6

194 / 227
Sommaire

9 Étude de cas : xv6


Introduction
Interfaces et organisation
Tables de pages
Trappes : appels systèmes, exceptions et interruptions
Interruption et pilotes de périphériques
Ordonnancement
Système de fichier
Conclusion

195 / 227
Étude de cas : xv6 Introduction

Introduction

• Précédement nous avons fait un rappel des concepts de bases des


systèmes d’exploitation
• …mais sans illustrer les mécanismes sous-jacent
• …ni sans voir les implémentations
• …car cela dépend aussi des architectures et des différents type d’OS.
• Pour étudier les mécanismes de base d’un OS nous étudierons un OS
pédagogique de type UNIX-like avec un noyau monolithique pour une
architecture RISCV.
• Bonne introduction pour aborder Linux

196 / 227
Étude de cas : xv6 Introduction

Pourquoi un OS pédagogique ?

• Les OS actuels sont complexes et contiennent beaucoup de lignes de


code
• Pour l’étude des mécanismes de base nous utiliserons donc un OS
pédagogique développé au MIT : xv6

197 / 227
Étude de cas : xv6 Introduction

Pourquoi xv6 ?

• Un OS pédagogique comme xv6


• a un nombre de lignes de code raisonnable pour l’apprentissage
• a une documentation fourni
• a un portage pour RISCV et x86
• a un développement actif et ouvert
• est utilisé par de nombreuses universités en plus du cours d’origine du
MIT.
• mais cela reste un OS pédagogique qui
• ne gére pas le SWAP
• ne gère pas plusieurs utilisateurs
• …
• et donc qui n’implémente pas tous les concepts avancés que l’on
retrouve dans les OS modernes

198 / 227
Étude de cas : xv6 Introduction

xv6

• est une ré-implémentation de Unix Version 6 (v6) développé par


Dennis Ritchie et Ken Thompson.
• est écrit en ANSI C
• supporte des architectures x86 (non-maintenu) et RISC-V
multi-processeur
• a son code source ouvert :
https://github.com/mit-pdos/xv6-riscv
• a une documentation ouverte :
https://github.com/mit-pdos/xv6-riscv-book

199 / 227
Étude de cas : xv6 Introduction

xv6 et support matériel ?

• RISC-V ? https://riscv.org/
• RISC-V Instruction Set Manual :
https://github.com/riscv/riscv-isa-manual
• RISC-V architecture, SiFive FU540-C000 manual
https://www.sifive.com/boards/hifive-unleashed
• RISC-V emulation : QEMU

200 / 227
Sommaire

9 Étude de cas : xv6


Introduction
Interfaces et organisation
Tables de pages
Trappes : appels systèmes, exceptions et interruptions
Interruption et pilotes de périphériques
Ordonnancement
Système de fichier
Conclusion

201 / 227
Étude de cas : xv6 Interfaces et organisation

Structure et appels système

• Processus : execution en espace utilisateur et/ou noyau


• Interface ’user space’ et ’kernel space’ : ’System Call’
• Noyau monolithique, UNIX-like,
• …qui utilise les mécanismes protection matériel pour s’assurer que
chaque processus utilisateur accède uniquement à son propre espace
mémoire,
• …gère les appels systèmes

user
shell cat
space
system
call
kernel
space Kernel

source [1]

202 / 227
Étude de cas : xv6 Interfaces et organisation

Appels système [1]


System call Description
fork() Create a process
exit(xstatus) Terminate the current process with xstatus indicating success of fa
wait(*xstatus) Wait for a child process to exit and copy the child’s exit status to
kill(pid) Terminate process pid
getpid() Return the current process’s pid
sleep(n) Sleep for n clock ticks
exec(filename, *argv) Load a file and execute it
sbrk(n) Grow process’s memory by n bytes
open(filename, flags) Open a file ; the flags indicate read/write
read(fd, buf, n) Read n bytes from an open file into buf
write(fd, buf, n) Write n bytes to an open file
close(fd) Release open file fd
dup(fd) Duplicate fd
pipe(p) Create a pipe and return fd’s in p
chdir(dirname) Change the current directory
mkdir(dirname) Create a new directory
mknod(name, major, minor) Create a device file
fstat(fd) Return info about an open file
link(f1, f2) Create another name (f2) for the file f1
unlink(filename) Remove a file

203 / 227
Étude de cas : xv6 Interfaces et organisation

xv6 : processus et mémoire

• Un processus a son espace mémoire utilisateur : code, donnée et pile


• Le noyau gère l’espace mémoire isolé des autres processus
• Le noyau partage temporellement la ressource CPU entre les processus
• Le noyau sauvegarde/restaure le contexte d’un processus : registre
• Le noyau donne un identifiant, Process IDentifier (PID), à chaque
processus
• Un processus peut en créer un autre : appel système fork

204 / 227
Étude de cas : xv6 Interfaces et organisation

Isolation ?

• L’isolation est une exigence importante pour un système


• Sur un sytème UNIX, le processus permet d’isoler
• RISC-V a trois modes d’exécution différents des instructions qu’ils
exécute :
• machine mode : tous les privilèges
• supervisor mode : permet d’exécuter des instructions dites privilégiées
• user mode
• Une application demandant l’exécution d’une fonction du noyau ?
• fait un appel système. Le CPU passe de user mode à supervisor mode
grâce à l’instruction ecall pour le RISC-V.
• le noyau décide ensuite si l’application est autorisé à être exécuté ou pas
• l’exigence d’isolation est en partie remplie grâce au mécanisme
matériel du CPU (user mode, supervisor mode) et des appels systèmes

205 / 227
Sommaire

9 Étude de cas : xv6


Introduction
Interfaces et organisation
Tables de pages
Trappes : appels systèmes, exceptions et interruptions
Interruption et pilotes de périphériques
Ordonnancement
Système de fichier
Conclusion

206 / 227
Étude de cas : xv6 Tables de pages

RISCV : adresses logiques et physiques


• PPN : Physical Page Number
Virtual address
25
27 12

64 EXT Index Offset

44 10
2^27

PPN Flags

1
0
56
Page table
44 12
Physical Address

source [1]
207 / 227
Étude de cas : xv6 Tables de pages

RISCV : table de pages matériel


Virtual address Physical Address
9 9 9 12 44 12

EXT L2 L1 L0 Offset PPN Offset

44 10

511
44 10
511
PPN Flags
44 10

511
1 PPN Flags
0
Page Directory 1
PPN Flags
0
Page Directory 1
satp
0
Page Directory

63 53 10 9 8 7 6 5 4 3 2 1 0

Reserved Physical Page Number RSW D A G U X W R V

V - Valid
R - Readable
W - Writable
X - Executable
U - User
G - Global
A - Accessed
D - Dirty (0 in page directory)
Reserved for supervisor software

source [1] 208 / 227


Étude de cas : xv6 Tables de pages

Espace d’adressage du noyau


Physical Addresses
2^56-1
Virtual Addresses
MAXVA
Trampoline R-X
Guard page ---
Kstack 0 RW- Unused

Guard page ---


Kstack 1 RW-
...
PHYSTOP
(0x86400000)

Free memory
RW-

Le noyau Physical memory (RAM)

• a sa propre page
Kernel data RW-

Kernel text R-X

• a un espace mémoire KERNBASE


(0x80000000)
Unused

privé
and other I/O devices

0x10001000 VIRTIO disk RW- VIRTIO disk


0x10000000 UART0 RW- UART0

PLIC RW- PLIC


0x0C000000

0x02000000 CLINT RW- CLINT

Unused

boot ROM
0x1000
Unused
0 0

source [1]

209 / 227
Étude de cas : xv6 Tables de pages

Espace d’adressage d’un processus


Un processus
• a sa propre table de pages
• a un espace mémoire allant de M0 à MAXVA=256 Gigabytes
• cf. figure : processus en cours d’exécution, appel fonction
main(argc,argv) …
MAXVA
trampoline
trapframe
argument 0
...
heap argument N
0 nul-terminated string
address of argument 0 argv[argc]
...
address of argument N argv[0]
PAGESIZE stack address of address of argv argument of main
guard page argument 0
argc argc argument of main
data 0xFFFFFFF return PC for main

(empty)
text

source [1] 210 / 227


Sommaire

9 Étude de cas : xv6


Introduction
Interfaces et organisation
Tables de pages
Trappes : appels systèmes, exceptions et interruptions
Interruption et pilotes de périphériques
Ordonnancement
Système de fichier
Conclusion

211 / 227
Étude de cas : xv6 Trappes : appels systèmes, exceptions et interruptions

Besoins de gérer certains évenements ?


• Des exceptions dans l’exécution d’un programme par l’OS et le CPU ?
• Oui par exemple :
• Division par zéro
• Un périphérique demande la main
• Page fault
• Il y a un appel système
• il y a donc des évènements qui interrompent l’exécution normal des
instructions par le processeur
• …mais alors comment le CPU et le système d’exploitation gère les
exceptions ?
• différents mécanismes comme
• …les interruptions matériel lorsque un périphérique se manifeste
• …les appels systèmes. Pour RISCV exécution de l’instruction ecall par
un programme utilisatuer ou du noyau.
• …les exceptions (p.ex. division par zéro)
• …on parle alors de trappe (traps)
212 / 227
Sommaire

9 Étude de cas : xv6


Introduction
Interfaces et organisation
Tables de pages
Trappes : appels systèmes, exceptions et interruptions
Interruption et pilotes de périphériques
Ordonnancement
Système de fichier
Conclusion

213 / 227
Étude de cas : xv6 Interruption et pilotes de périphériques

Interruption et pilotes de périphériques

• Deux façons principales de fonctionner :


• Le noyau fait une opération de lecture ou d’écriture
• Le périphérique fait une demande et lève une interruption
• Pour aller plus loin, lire le chapitre 5 du livre [1]

214 / 227
Sommaire

9 Étude de cas : xv6


Introduction
Interfaces et organisation
Tables de pages
Trappes : appels systèmes, exceptions et interruptions
Interruption et pilotes de périphériques
Ordonnancement
Système de fichier
Conclusion

215 / 227
Étude de cas : xv6 Ordonnancement

Ordonnancement

• permet le partage de la ressource CPU entre les processus


• commutation de contexte (cf. figure)

user
space shell cat

save
swtch swtch restore
kernel
space
kstack kstack kstack
shell scheduler cat

Kernel

source [1]

216 / 227
Sommaire

9 Étude de cas : xv6


Introduction
Interfaces et organisation
Tables de pages
Trappes : appels systèmes, exceptions et interruptions
Interruption et pilotes de périphériques
Ordonnancement
Système de fichier
Conclusion

217 / 227
Étude de cas : xv6 Système de fichier

Système de fichier

• fichier de données non interprété et répertoire


• structure en arbre
• démarre à la racine (root, /)
• Création répertoire : appel système mkdir
• Ouverture fichier : appel système open
• Fichiers ?
• un fichier normal
• un répertoire est un fichier
• un périphérique est vu comme un fichier spécial

218 / 227
Étude de cas : xv6 Système de fichier

Système de fichier de xv6 : vu en couches


• couche Disk : r/w sur virtio d’un disque
• couche Buffer cache : cache et
synchronization File descriptor
• couche Logging : permet récupération Pathname
après un crash
Directory
• couche Inode : fourni fichiers avec
fichier inode et bloques contenant les Inode

fichiers de données Logging

• couche Directory : implémente Buffer cache


répertoire comme inode spécial Disk
• couche Pathname :
• couche File descriptor : couche source [1]
d’abstraction pour utiliser les primitives
de manipulation des fichiers
219 / 227
Étude de cas : xv6 Système de fichier

Système de fichier de xv6 : structure sur disque

• découpe en bloque
• Bloque super contient info sur le FS : taille, nb inodes, …
• Bloque bitmap permet de connaître les bloques de données utilisés

boot super log inodes bit map data .... data

0 1 2

source [1]

220 / 227
Étude de cas : xv6 Système de fichier

Descripteurs de fichier

• Un descripteur de fichier (File Descriptor, FD) est un entier non nul


représentant un fichier
• Par convention
• 0 est le FD pour la lecture
• 1 est le FD pour l’écriture
• 2 est le FD pour l’écriture de message d’erreur
• Un processus peut obtenir un processus pour l’ouverture d’un fichier,
d’un répertoire, d’un device, par la création d’un pipe ou la
duplication d’un FD existant

221 / 227
Étude de cas : xv6 Système de fichier

xv6 : système de fichier et inode

• Un inode (i-node, nœud d’information) est un fichier contenant des


méta-données sur le fichier : type, longueur, localisation sur le disque,

• Fichier inode et inodes sur le disque appelé dinode ?

222 / 227
Étude de cas : xv6 Système de fichier

Représentation fichier sur disque

dinode

type
data
major
minor
nlink ...
size
address 1
..... data
address 12
indirect
data

indirect block
address 1
..... ...
address 256

data

source [1]

223 / 227
Étude de cas : xv6 Système de fichier

xv6 : fichiers spéciaux device file

• Création fichier faisant référence à un device : appel système mknod


• mknod à deux arguments qui sont des nombres appelés major et
minor qui identifie le device. Le major identifie le pilote et le minor
identifie le périphérique.
• À la demande de lecture et écriture dans un device les appels système
read et write sont utilisés

224 / 227
Sommaire

9 Étude de cas : xv6


Introduction
Interfaces et organisation
Tables de pages
Trappes : appels systèmes, exceptions et interruptions
Interruption et pilotes de périphériques
Ordonnancement
Système de fichier
Conclusion

225 / 227
Étude de cas : xv6 Conclusion

Pour aller plus loin

• Lecture livre [1]


• TD/TP sur le sujet avec analyse du code source et exercices
• Bien faire le lien entre concept généraux et l’implémentation de xv6
• Cours en ligne https://pdos.csail.mit.edu/6.828/2020/

226 / 227
Étude de cas : xv6 Conclusion

Références (1)

[1] R. Cox, F. Kaashoek, and R. Morris.


xv6 : a simple, unix-like teaching operating system, 2020.
[2] A. Silberschatz, P. B. Galvin, and G. Gagne.
Operating System Concepts.
Wiley.
[3] A. Tanenbaum.
SYSTEMES D’EXPLOITATION. Systèmes centralisés, systèmes
distribués.
Paris : InterEditions ; Londres : Prentice Hall , 1998.

227 / 227

Vous aimerez peut-être aussi