Vous êtes sur la page 1sur 104

Introduction

Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Cours de systèmes d’exploitation


Un exemple: Unix

Franck Cassez

CNRS/IRCCyN (UMR CNRS 6597)


BP 92101
1 rue de la Noë
44321 Nantes Cedex 3
France

Janvier 2004
Ecole Centrale Nantes

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Plan

1 Introduction

2 Processus Unix

3 Ordonnancement sous Unix

4 Gestion de la mémoire

5 Séquence de boot pour Unix

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Plan
1 Introduction
Historique
Posix : Vers un Unix standard
Architecture d’un système Unix

2 Processus Unix

3 Ordonnancement sous Unix

4 Gestion de la mémoire

5 Séquence de boot pour Unix

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1960–1970)
1962 : Time-sharing (CTSS), implémenté à Dartmouth (MIT)
succés dans la communauté scientifique

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1960–1970)
1962 : Time-sharing (CTSS), implémenté à Dartmouth (MIT)
succés dans la communauté scientifique
1965 : MIT + Bell-Labs + General Electric : MULTICS
MULTiplexed Information & Computing Services
Projet très ambitieux, nombreuses idées nouvelles, . . . ,
pas un succés commercial

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1960–1970)
1962 : Time-sharing (CTSS), implémenté à Dartmouth (MIT)
succés dans la communauté scientifique
1965 : MIT + Bell-Labs + General Electric : MULTICS
MULTiplexed Information & Computing Services
Projet très ambitieux, nombreuses idées nouvelles, . . . ,
pas un succés commercial
parallèlement : développement de micro-computers,
ex. DEC PDP-1, . . . PDP-11

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1960–1970)
1962 : Time-sharing (CTSS), implémenté à Dartmouth (MIT)
succés dans la communauté scientifique
1965 : MIT + Bell-Labs + General Electric : MULTICS
MULTiplexed Information & Computing Services
Projet très ambitieux, nombreuses idées nouvelles, . . . ,
pas un succés commercial
parallèlement : développement de micro-computers,
ex. DEC PDP-1, . . . PDP-11
Bell Labs ↓, G.E. → Honeywell → SCO

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1960–1970)
1962 : Time-sharing (CTSS), implémenté à Dartmouth (MIT)
succés dans la communauté scientifique
1965 : MIT + Bell-Labs + General Electric : MULTICS
MULTiplexed Information & Computing Services
Projet très ambitieux, nombreuses idées nouvelles, . . . ,
pas un succés commercial
parallèlement : développement de micro-computers,
ex. DEC PDP-1, . . . PDP-11
Bell Labs ↓, G.E. → Honeywell → SCO
1968 : Ken Thompson (Bell Labs) développe une version
light de MULTICS : UNICS (UNiplexed . . . )
maintenant : Unix

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1960–1970)
1962 : Time-sharing (CTSS), implémenté à Dartmouth (MIT)
succés dans la communauté scientifique
1965 : MIT + Bell-Labs + General Electric : MULTICS
MULTiplexed Information & Computing Services
Projet très ambitieux, nombreuses idées nouvelles, . . . ,
pas un succés commercial
parallèlement : développement de micro-computers,
ex. DEC PDP-1, . . . PDP-11
Bell Labs ↓, G.E. → Honeywell → SCO
1968 : Ken Thompson (Bell Labs) développe une version
light de MULTICS : UNICS (UNiplexed . . . )
maintenant : Unix
1970 : D. Ritchie (Bell Labs) + Thompson = Unix + C
Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix
Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1970–)

1970 : D. Ritchie (Bell Labs) + Thompson = Unix + C

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1970–)

1970 : D. Ritchie (Bell Labs) + Thompson = Unix + C


1974 : publication de The Unix Timesharing System, Comm.
of the ACM, july.
Ritchie & Thompson : ACM Turing Award en 1984

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1970–)

1970 : D. Ritchie (Bell Labs) + Thompson = Unix + C


1974 : publication de The Unix Timesharing System, Comm.
of the ACM, july.
Ritchie & Thompson : ACM Turing Award en 1984
Code source disponible pour les universités
Bell Labs = System III, V vs. Berkeley = 4.4BSD
BSD : mémoire virtuelle, pagination, . . .

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1970–)

1970 : D. Ritchie (Bell Labs) + Thompson = Unix + C


1974 : publication de The Unix Timesharing System, Comm.
of the ACM, july.
Ritchie & Thompson : ACM Turing Award en 1984
Code source disponible pour les universités
Bell Labs = System III, V vs. Berkeley = 4.4BSD
BSD : mémoire virtuelle, pagination, . . .
fin des années 80 : System V R3 et 4.3BSD

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1970–)

1970 : D. Ritchie (Bell Labs) + Thompson = Unix + C


1974 : publication de The Unix Timesharing System, Comm.
of the ACM, july.
Ritchie & Thompson : ACM Turing Award en 1984
Code source disponible pour les universités
Bell Labs = System III, V vs. Berkeley = 4.4BSD
BSD : mémoire virtuelle, pagination, . . .
fin des années 80 : System V R3 et 4.3BSD
1987 : Minix : Unix pour l’enseignement

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Chronologie (1970–)

1970 : D. Ritchie (Bell Labs) + Thompson = Unix + C


1974 : publication de The Unix Timesharing System, Comm.
of the ACM, july.
Ritchie & Thompson : ACM Turing Award en 1984
Code source disponible pour les universités
Bell Labs = System III, V vs. Berkeley = 4.4BSD
BSD : mémoire virtuelle, pagination, . . .
fin des années 80 : System V R3 et 4.3BSD
1987 : Minix : Unix pour l’enseignement
1991 : Linux

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

De MULTICS à Linux

1965 1968 1974 1980 1987 1991

System III, V
Bell Labs
MULTICS UNICS FreeBSD
UNIX
MIT + Bell Labs + G.E. Bell Labs OpenBSD
4.4BSD
Univ. California NetBSD
Berkeley

MINIX LINUX

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Noyau Unix standard

Fait : il existe différentes versions d’Unix


System V, 4.4BSD, , FreeBSD, Solaris, Linux, OpenBSD,
NetBSD, . . .
Posix = Portable Operating Systems (IEEE)
Définit les System Calls que doit fournir une implémentation
d’Unix
Dans ce cas : Posix compliant
but : interopérabilité
P = programme écrit en utilisant les System Calls Posix
alors P est exécutable sur tout Unix qui est Posix compliant

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus Historique
Ordonnanceur Posix : Vers un Unix standard
Allocation mémoire Architecture d’un système Unix
Séquence de boot pour Unix

Vue d’ensemble d’Unix


User
Interface
Utilisateurs

Library
calls Programmes de base
Shell, éditeurs, User
compilateurs, etc
Systems
Calls Interface-Bibliothèque (Posix)
fork, open, close, read, write, etc

Unix: scheduling, paging, fichiers, I/O SuperUser

CPU, Disques, Mémoires, Caches, etc

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Plan
1 Introduction

2 Processus Unix
Création de processus
Sémantique du fork
Implémentation des processus
Un Shell simplifié
Etats d’un processus

3 Ordonnancement sous Unix

4 Gestion de la mémoire

5 Séquence de boot pour Unix

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Le fork pour créer des processus

Daemon : processus crées au démarrage du système


exemples : cron, sendmail, paging etc
Processus : création par System Call = fork
1 pid = fork () ;
2 i f ( pid <0) {
3 error_treatment () ; /∗ s i pb : p a s a s s e z p l a c e . . . ∗/
4 }
5 e l s e i f ( pid >0) {
6 prog_for_parent () ; /∗ c o d e p o u r l e p a r e n t ∗/
7 }
8 else {
9 prog_for_child () ; /∗ c o d e p o u r l e f i l s ∗/
10 }

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Introduction Processus Ordonnanceur Implémentation des Allocation
Ordonnanceur processusmémoire
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Création ded’un
Réalisation processus
fork

Daemon: processus crées au démarrage du système


exemples: cron, sendmail, paging etc
Process: création par System Call = fork
Processus père
1 pid = fork () ;
2 i f ( pid <0) {
3 error_treatment () ; /∗ s i pb : pas a s s e z p l a c e . . . ∗/
4 }
5 e l s e i f ( pid >0) {
6 prog_for_parent () ; /∗ code pour l e p a r e n t ∗/
7 }
8 else {
9 prog_for_child () ; /∗ code pour l e f i l s ∗/
10 }

19/10/04 IRCCyN/CNRS
Systèmes d’Exploitation

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Introduction Processus Ordonnance
Introduction Processus Ordonnanceur d’un processus Allocation mémoire
Etats

Réalisation d’un fork Création de processus


Création de processus

Daemon: processus crées au démarrage du système Daemon: processus crées au démarrage d


exemples: cron, sendmail, paging etc exemples: cron, sendmail, pag
Process: création par System Call = fork
Processus père Process: création
Process fils: par
478System Call = fo

pid=478 1 pid = fork () ; pid=0 1 pid = fork () ;


2 i f ( pid <0) { 2 i f ( pid <0) {
3 error_treatment () ; /∗ s i pb : pas a s s e z p l a3c e . . .error_treatment
∗/ () ; /∗ s i pb : pa
4 } 4 }
5 e l s e i f ( pid >0) { 5 e l s e i f ( pid >0) {
6 prog_for_parent () ; /∗ code pour l e p a6r e n t ∗/ prog_for_parent () ; /∗ code
7 } 7 }
8 else { 8 else {
9 prog_for_child () ; /∗ code pour l e f i l 9s ∗/ prog_for_child () ; /∗ code
10 } 10 }

19/10/04
19/10/04 IRCCyN/CNRS
Systèmes d’Exploitation
Systèmes d’Exploitation

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Informations liées aux processus

Pour chaque processus, informations dans 2 tables :


Table des Processus
Info. d'ordonnancement:
priorité, CPU usage, etc
Info. mémoire:
pointeur vers table des pages ou
segments

Signaux attendus

Etat du processus: PID, PID du


père, etc

Zone proc

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Informations liées aux processus

Pour chaque processus, informations dans 2 tables :


Table des Processus
Info. d'ordonnancement:
priorité, CPU usage, etc
Info. mémoire:
pointeur vers table des pages ou
segments

Signaux attendus

Etat du processus: PID, PID du


père, etc

Zone proc
toujours en mémoire

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Informations liées aux processus

Pour chaque processus, informations dans 2 tables :


Table des Processus Infos Utilisateurs
Info. d'ordonnancement: Registres CPU:
priorité, CPU usage, etc reg. adresse, etc
Info. mémoire:
Info sur System Call:
pointeur vers table des pages ou
paramètres, résultats etc
segments

Signaux attendus Fichiers ouverts

Infos diverses:
Etat du processus: PID, PID du
limitations pour le processus, max.
père, etc
pages, etc

Zone proc Zone u


toujours en mémoire

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Informations liées aux processus

Pour chaque processus, informations dans 2 tables :


Table des Processus Infos Utilisateurs
Info. d'ordonnancement: Registres CPU:
priorité, CPU usage, etc reg. adresse, etc
Info. mémoire:
Info sur System Call:
pointeur vers table des pages ou
paramètres, résultats etc
segments

Signaux attendus Fichiers ouverts

Infos diverses:
Etat du processus: PID, PID du
limitations pour le processus, max.
père, etc
pages, etc

Zone proc Zone u


toujours en mémoire peut être swappée

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Programme pour un Shell simplifié

1 w h i l e ( true ) {
2 prompt () ;
3 lire_commande ( command , parameters ) ;
4
5 pid = fork () ; /∗ f o r k p o u r f a i r e l a commande ∗/
6 i f ( pid <0) {
7 printf ( ‘ ‘ impossible de faire la commande ’ ’) ;
8 break ;
9 }
10
11 i f ( pid !=0) {
12 waitpid ( -1 ,& status ,0) ; /∗ l e p a r e n t a t t e n d ∗/
13 }
14 e l s e { /∗ l e f i l s f a i t l a commande ∗/
15 execve ( command , parameters ,0) ;
16 }
17 }

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


5 Introduction
pid=fork();
Processus /∗ fork pour f a i r e la commande ∗/
Création de processus
Sémantique du fork

i f (pid <0)Un{Shell simplifié


6 { mémoire
Ordonnanceur Implémentation des processus
1 while (true)
Allocation
Séquence de boot pour Unix Etats d’un processus
2 prompt(); 7 printf(‘‘impossible de faire la commande’’);
Exécution d’une
3 commande
8
lire_commande(command brk; dans le Shell
,paramters);
Introduction Processus
4 9 }
5 pid=fork(); 10 /∗ fork pour f a i r e la commande ∗/
commande6 ls i f (pid <0) Un Shell simplifié
11 { i f (pid!=0) {
7 printf(‘‘impossible
12 de faire la commande’’);
waitpid(-1,&status ,0); /∗ 1l e wparent attend ∗/
h i l e ( true ) {
Shell 8 brk; 13 } 2 prompt () ;
wait
PID=501
9 } fork()14 else { /∗ l e f i l s f a i t la commande
3 lire_commande ( command
∗/
4
10 15 execve(command ,parameters ,0); 5 pid = fork () ; /∗ f o r k p
6 i f ( pid <0) {
11 i f (pid!=0) {
16 } 7fin de ls printf (‘‘ impossible
12 waitpid(-1,&status ,0); /∗ l e parent attend8 ∗/ brk ;
17 } 9 }
13 } 10
i f ( pid !=0) {
14 else { /∗ l e f i l s f a i t la commande ∗/ 11
12 waitpid ( -1 ,& status ,
15
Shell execve(command ,parameters ,0); ls 1314 }
e l s e { /∗ l e f i l s f a i
16
PID=482} PID=48215 execve ( command , para
19/10/04 IRC
17 } 16
17 }
}
Systèmes d’Exploitation

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation


19/10/04 – Unix
Introduction Création de processus
Processus Sémantique du fork
Ordonnanceur Implémentation des processus
Allocation mémoire Un Shell simplifié
Séquence de boot pour Unix Etats d’un processus

Changements d’états d’un processus

Running
(user)

System Return
fork
Call from SC
Idle
Running exit Zombie wait
(superuser)
fork swtch
sleep
swtch
Ready Asleep
stop
stop resume stop resume

Stop wakeup Stop &


Asleep

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Plan
1 Introduction

2 Processus Unix

3 Ordonnancement sous Unix


Type de systèmes visés
Principes de l’ordonnanceur Unix
Round-Robin multi-niveaux
Priorités dynamiques

4 Gestion de la mémoire

5 Séquence de boot pour Unix

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Types de processus supportés


Système typique =⇒ différents types de processus :

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Types de processus supportés


Système typique =⇒ différents types de processus :
Interactifs : éditeurs, Shell, interface graphique ;
∆-CPU court, réponse rapide

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Types de processus supportés


Système typique =⇒ différents types de processus :
Interactifs : éditeurs, Shell, interface graphique ;
∆-CPU court, réponse rapide
Batch : compilateurs, programmes de calcul ;
temps transit
∆-CPU long, minimiser temps exécution

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Types de processus supportés


Système typique =⇒ différents types de processus :
Interactifs : éditeurs, Shell, interface graphique ;
∆-CPU court, réponse rapide
Batch : compilateurs, programmes de calcul ;
temps transit
∆-CPU long, minimiser temps exécution
Real-time : . . . tous les autres ; video, etc ;
deadlines ou besoins CPU réguliers

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Types de processus supportés


Système typique =⇒ différents types de processus :
Interactifs : éditeurs, Shell, interface graphique ;
∆-CPU court, réponse rapide
Batch : compilateurs, programmes de calcul ;
temps transit
∆-CPU long, minimiser temps exécution
Real-time : . . . tous les autres ; video, etc ;
deadlines ou besoins CPU réguliers

Ordonnanceur Unix :
processus interactifs et batch
principes : favoriser les processus interactifs + équilibrer le
temps CPU donnés aux processus batchs
Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix
Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Algorithme à 2 niveaux

Scheduler : ordonnance les processus qui sont en mémoire


un processus bloqué (attente d’une E/S) n’est pas en
mémoire (swappé)
Swapper : contrôle le passage mémoire ←→ disque
assure que tous les processus seront un jour en mémoire
=⇒ éviter la famine

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Algorithme à 2 niveaux

Scheduler : ordonnance les processus qui sont en mémoire


un processus bloqué (attente d’une E/S) n’est pas en
mémoire (swappé)
Swapper : contrôle le passage mémoire ←→ disque
assure que tous les processus seront un jour en mémoire
=⇒ éviter la famine

Scheduler :
round-robin à étages ; Quantum ≡ 100ms
chaque étage ≡ niveaux de priorité (disjoints)
Priorité :
< 0 pour le mode SuperUser
≥ 0 pour le mode User
Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix
Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Attribution des priorités

-3 processus qui étaient en attente buffer disque proc1 proc2

proc1 proc2

SuperUser
-2 processus qui étaient en attente d'une input

processus qui étaient en attente printout proc1 proc2


-1

processus qui étaient en attente de création du fils proc1 proc2


priorité

Priorité utilisateur 0 proc1 proc2


0

Priorité utilisateur 1 proc1 proc2


1

User
Priorité utilisateur 2 proc1 proc2
2

Priorité utilisateur 3 proc1 proc2


3

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Calcul des priorités des processus

toutes les secondes =⇒ recalcul de la priorité

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Calcul des priorités des processus

priorité calculée par :

prio = CPU-Usage + nice + base (1)

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Calcul des priorités des processus


priorité calculée par :
prio = CPU-Usage + nice + base (1)

CPU-Usage : usage CPU moyen récent (nombre de ticks) dans


quelques secondes précédentes
nice : ∈ [−20, 20], fixé par le processus
nice = System Call
base : si une E/S (etc) attendue par un processus P se
termine, P est débloqué et base = valeur associée à la cause
de l’attente

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Calcul des priorités des processus

priorité calculée par :

prio = CPU-Usage + nice + base (1)

CPU-Usage =⇒ si un processus utilise beaucoup de CPU il


est pénalisé

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Calcul des priorités des processus

priorité calculée par :

prio = CPU-Usage + nice + base (1)

CPU-Usage =⇒ si un processus utilise beaucoup de CPU il


est pénalisé
Facteur de dégradation dans le CPU-Usage :
soit C le dernier CPU-Usage
on définit : ki+1 = ki +C
2 , k0 = premier CPU-Usage
k+C
calcul itératif : k := 2
remplacement de CPU-Usage par k dans equation (1)

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Propriétés de l’ordonnanceur Unix

préemptif en round-robin multi-niveaux


(noyau ne peut être préempté)

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Propriétés de l’ordonnanceur Unix

préemptif en round-robin multi-niveaux


(noyau ne peut être préempté)
simple et efficace

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Propriétés de l’ordonnanceur Unix

préemptif en round-robin multi-niveaux


(noyau ne peut être préempté)
simple et efficace
favorise les processus “I/O bound” :
processus attendant une I/O est bloqué en mode SuperUser
vise à faire quitter le mode SuperUser rapidement

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Propriétés de l’ordonnanceur Unix

préemptif en round-robin multi-niveaux


(noyau ne peut être préempté)
simple et efficace
favorise les processus “I/O bound” :
processus attendant une I/O est bloqué en mode SuperUser
vise à faire quitter le mode SuperUser rapidement
équilibre CPU pour les processus “CPU bound” :
Facteur de dégradation ( =⇒ pas de famine)

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Type de systèmes visés
Processus
Principes de l’ordonnanceur Unix
Ordonnanceur
Round-Robin multi-niveaux
Allocation mémoire
Priorités dynamiques
Séquence de boot pour Unix

Propriétés de l’ordonnanceur Unix

préemptif en round-robin multi-niveaux


(noyau ne peut être préempté)
simple et efficace
favorise les processus “I/O bound” :
processus attendant une I/O est bloqué en mode SuperUser
vise à faire quitter le mode SuperUser rapidement
équilibre CPU pour les processus “CPU bound” :
Facteur de dégradation ( =⇒ pas de famine)
pas de garantie de temps de réponse
=⇒ pas un OS temps-réel

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Plan
1 Introduction

2 Processus Unix

3 Ordonnancement sous Unix

4 Gestion de la mémoire
Mémoire virtuelle des processus
Le Swapper
Pagination sous Unix
Pagination sous Linux

5 Séquence de boot pour Unix

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Partage de la mémoire par les processus


Mémoire RAM Pile de B
Pile de A

Données non
initialisées de B
Données non
initialisées de A page partagée Données
Données initialisées de B
initialisées de A
Noyau Programme
Programme
de A de B

Processus A Processus B
Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix
Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Propriétés du modèle mémoire

possibilité de partager des segments

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Propriétés du modèle mémoire

possibilité de partager des segments


memory-mapped file : fichier = portion de le l’espace
virtuel d’un processus
read/write + rapide, partage (ex : librairies partagées)
Systems Calls : mmap et munmap

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Propriétés du modèle mémoire

possibilité de partager des segments


memory-mapped file : fichier = portion de le l’espace
virtuel d’un processus
read/write + rapide, partage (ex : librairies partagées)
Systems Calls : mmap et munmap
demande mémoire par un processus :
System Call : brk
malloc en C utilise brk

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonctionnement du Swapper

swap out

Disque Mémoire

swap in

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonctionnement du Swapper

swap out

Disque Mémoire

swap in

Swap out quand manque de mémoire sur


fork, brk, ou débordement de pile

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonctionnement du Swapper

swap out

Disque Mémoire

swap in

Swap out quand manque de mémoire sur


fork, brk, ou débordement de pile
choix d’une victime :
1 ∃ processus bloqués : critère C = prio + temps résidence
victime = le plus grand C
2 sinon : parmi les non bloqués, victime = plus grand C
Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix
Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonctionnement du Swapper

swap out

Disque Mémoire

swap in

Swap in : toutes les 4-5 secondes


Swapper cherche un processus prêt sur le disque

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonctionnement du Swapper

swap out

Disque Mémoire

swap in

Swap in : toutes les 4-5 secondes


Swapper cherche un processus prêt sur le disque
critère de choix : temps le plus long sur le disque

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonctionnement du Swapper

swap out

Disque Mémoire

swap in

Swap in : toutes les 4-5 secondes


Swapper cherche un processus prêt sur le disque
critère de choix : temps le plus long sur le disque
éventuellement swap out d’un autre processus

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonctionnement du Swapper

swap out

Disque Mémoire

swap in

Swapper : swap in (toutes les 4-5 secs) + swap out (à la


demande)
Changement de comportement quand :
plus de processus swappés
trop de processus en mémoire (Thrashing)
min. de 2 sec. en mémoire avant de swapper un processus
Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix
Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonction de pagination, informations sur les cases

Mémoire RAM

case n-1
case n
case n+1
Info Disque

text ou data ou stack + offset


case 3
Etat de la page (READ/WRITE, Dirty)

case 0
Proc P
"Core map"

BSD 4.4
table des pages

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Le pagedaemon

toutes les 250 msec. le pagedaemon est activé


Algorithme :
nombre de cases libres ≥ lotsfree ?
si oui : sleep
sinon : transférer des pages sur le disque
but : avoir des pages libres constamment

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Le pagedaemon

toutes les 250 msec. le pagedaemon est activé


Algorithme :
nombre de cases libres ≥ lotsfree ?
si oui : sleep
sinon : transférer des pages sur le disque
but : avoir des pages libres constamment
Algorithme de traitement de défaut basé :
sur “seconde chance” (ou “Clock Algorithm”)

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Clock Algorithm

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Clock Algorithm

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Clock Algorithm

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Clock Algorithm

Disque

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Clock Algorithm

Disque

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Clock Algorithm

Disque

Si nombre de pages très grand ? ? ? ?


Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix
Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Two-Handed Clock Algorithm

1 1
1
1

1
1

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Two-Handed Clock Algorithm

1 0
1
1

1
1

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Two-Handed Clock Algorithm

1 0
1
0

1
1

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Two-Handed Clock Algorithm

1
0
1
0

1
0

Disque

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Two-Handed Clock Algorithm

1
0
1
0

1
0

Disque

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Thrashing

Si le taux de défaut de pages est très grand : appel au swapper


si ∃ des processus idle depuis ∆ ≥ 20sec.
swap out le moins actif récemment (max. idle time)
sinon parmi les 4 plus gros processus (taille mémoire)
swap out le plus vieux (en mémoire)
si nécessaire plusieurs processus peuvent être swappés

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Thrashing
Si le taux de défaut de pages est très grand : appel au swapper
si ∃ des processus idle depuis ∆ ≥ 20sec.
swap out le moins actif récemment (max. idle time)
sinon parmi les 4 plus gros processus (taille mémoire)
swap out le plus vieux (en mémoire)
si nécessaire plusieurs processus peuvent être swappés
Variantes de l’algorihtme (System V) :
Clock Algorithm avec : n passages avant de libérer une page
libère moins vite mais plus proche du Working Set
Au lieu de lotsfree : deux valeurs min et max
si # pages libres ≤ min : libère des pages jusqu’à max atteint
Evite instabililté du précédent
Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix
Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonction de pagination Linux

Pagination 3 niveaux
adresse sur 32 bits : 3GB + 1GB (SuperUser mode)
adresse virtuelle :

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonction de pagination Linux

Pagination 3 niveaux
adresse sur 32 bits : 3GB + 1GB (SuperUser mode)
adresse virtuelle :
Directory Middle Page Offset

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonction de pagination Linux

Directory Middle Page Offset

une entrée
par processus

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonction de pagination Linux

Directory Middle Page Offset

Table de
une entrée pages
par processus

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonction de pagination Linux

Directory Middle Page Offset

M
P
D

Table de
une entrée pages
par processus

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Fonction de pagination Linux

Directory Middle Page Offset

page
O

M
P
D

Table de
une entrée pages
par processus

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Module noyau chargé dynamiquement

Linux supporte chargement à la demande de drivers etc

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Module noyau chargé dynamiquement

Linux supporte chargement à la demande de drivers etc


=⇒ augmentation de la taille du noyau

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Module noyau chargé dynamiquement

Linux supporte chargement à la demande de drivers etc


=⇒ augmentation de la taille du noyau
Mémoire physique est gérée par Buddy System
binaire

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Module noyau chargé dynamiquement

Linux supporte chargement à la demande de drivers etc


=⇒ augmentation de la taille du noyau
Mémoire physique est gérée par Buddy System
binaire
Problème : fragmentation interne

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Module noyau chargé dynamiquement

Linux supporte chargement à la demande de drivers etc


=⇒ augmentation de la taille du noyau
Mémoire physique est gérée par Buddy System
binaire
Problème : fragmentation interne
autre niveau d’allocation mémoire . . .

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Mémoire virtuelle des processus
Processus
Le Swapper
Ordonnanceur
Pagination sous Unix
Allocation mémoire
Pagination sous Linux
Séquence de boot pour Unix

Le kswapd

kswapd = daemon (gère les défauts de page)


toutes les secondes le kswpad s’active
si assez pages libres, sleep
Algorithme de kswpad . . . ... maximum 6 “essais”
1 renvoie d’une page qui est dans le cache des pages non
récemment utilisées
clock algorithm
2 libération d’une page partagée non utilisée
3 renvoie d’une page d’un processus utilisateur
clock algorithm

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Plan

1 Introduction

2 Processus Unix

3 Ordonnancement sous Unix

4 Gestion de la mémoire

5 Séquence de boot pour Unix

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD


1 chargement du premier secteur du disque de boot et exécution
programme de 512 octets : chargement du programme boot à
une adresse mémoire fixe (haute)

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD


1 chargement du premier secteur du disque de boot et exécution
programme de 512 octets : chargement du programme boot à
une adresse mémoire fixe (haute)
2 boot lit le répertoire root (peut lire le filesystem)
et charge en mémoire basse le kernel

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD


1 chargement du premier secteur du disque de boot et exécution
programme de 512 octets : chargement du programme boot à
une adresse mémoire fixe (haute)
2 boot lit le répertoire root (peut lire le filesystem)
et charge en mémoire basse le kernel
3 boot effectue ensuite un goto pour exécuter le kernel
(programme écrit en assembleur, dépendant de la machine)
But : détecter capacité mémoire, CPU, paging system etc

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD


1 chargement du premier secteur du disque de boot et exécution
programme de 512 octets : chargement du programme boot à
une adresse mémoire fixe (haute)
2 boot lit le répertoire root (peut lire le filesystem)
et charge en mémoire basse le kernel
3 boot effectue ensuite un goto pour exécuter le kernel
(programme écrit en assembleur, dépendant de la machine)
But : détecter capacité mémoire, CPU, paging system etc
4 kernel termine par lancer la boucle main (OS)
Les messages de main sont écrits dans un buffer

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD


1 chargement du premier secteur du disque de boot et exécution
programme de 512 octets : chargement du programme boot à
une adresse mémoire fixe (haute)
2 boot lit le répertoire root (peut lire le filesystem)
et charge en mémoire basse le kernel
3 boot effectue ensuite un goto pour exécuter le kernel
(programme écrit en assembleur, dépendant de la machine)
But : détecter capacité mémoire, CPU, paging system etc
4 kernel termine par lancer la boucle main (OS)
Les messages de main sont écrits dans un buffer
5 allocation des structures mémoire de l’OS : table des pages,
des processus, coremap etc etc

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD


1 chargement du premier secteur du disque de boot et exécution
programme de 512 octets : chargement du programme boot à
une adresse mémoire fixe (haute)
2 boot lit le répertoire root (peut lire le filesystem)
et charge en mémoire basse le kernel
3 boot effectue ensuite un goto pour exécuter le kernel
(programme écrit en assembleur, dépendant de la machine)
But : détecter capacité mémoire, CPU, paging system etc
4 kernel termine par lancer la boucle main (OS)
Les messages de main sont écrits dans un buffer
5 allocation des structures mémoire de l’OS : table des pages,
des processus, coremap etc etc
6 probing des périphériques

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD


1 chargement du premier secteur du disque de boot et exécution
programme de 512 octets : chargement du programme boot à
une adresse mémoire fixe (haute)
2 boot lit le répertoire root (peut lire le filesystem)
et charge en mémoire basse le kernel
3 boot effectue ensuite un goto pour exécuter le kernel
(programme écrit en assembleur, dépendant de la machine)
But : détecter capacité mémoire, CPU, paging system etc
4 kernel termine par lancer la boucle main (OS)
Les messages de main sont écrits dans un buffer
5 allocation des structures mémoire de l’OS : table des pages,
des processus, coremap etc etc
6 probing des périphériques
7 chargement des drivers des périphériques détectés
fabrication du de
Ecole Centrale processus PID =Cours
Nantes – EI3 Info. 0 de Systèmes d’Exploitation – Unix
Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD

fabrication du processus PID = 0


programmation de l’horloge, mount du root filesystem
et création des processus init (1) et pagedaemon (2)
suivant les paramètres init fait :
mode single user : fork un processus qui fait un exec du shell
et attend qu’il se termine
mode normal : fork un processus qui fait :

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD

fabrication du processus PID = 0


programmation de l’horloge, mount du root filesystem
et création des processus init (1) et pagedaemon (2)
suivant les paramètres init fait :
mode single user : fork un processus qui fait un exec du shell
et attend qu’il se termine
mode normal : fork un processus qui fait :
1 un exec de /etc/rc
But : mount le reste du filesystem, démarre des daemons

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD

fabrication du processus PID = 0


programmation de l’horloge, mount du root filesystem
et création des processus init (1) et pagedaemon (2)
suivant les paramètres init fait :
mode single user : fork un processus qui fait un exec du shell
et attend qu’il se termine
mode normal : fork un processus qui fait :
1 un exec de /etc/rc
But : mount le reste du filesystem, démarre des daemons
2 lit /etc/ttys : pour chaque terminal :
fork et exécution du programme getty
(prompte avec login :)

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD

fabrication du processus PID = 0


programmation de l’horloge, mount du root filesystem
et création des processus init (1) et pagedaemon (2)
suivant les paramètres init fait :
mode single user : fork un processus qui fait un exec du shell
et attend qu’il se termine
mode normal : fork un processus qui fait :
1 un exec de /etc/rc
But : mount le reste du filesystem, démarre des daemons
2 lit /etc/ttys : pour chaque terminal :
fork et exécution du programme getty
(prompte avec login :)
3 si un login est tapé : getty termine en faisant un exec de
/bin/login (qui demande le password)

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Unix type FreeBSD

fabrication du processus PID = 0


programmation de l’horloge, mount du root filesystem
et création des processus init (1) et pagedaemon (2)
suivant les paramètres init fait :
mode single user : fork un processus qui fait un exec du shell
et attend qu’il se termine
mode normal : fork un processus qui fait :
1 un exec de /etc/rc
But : mount le reste du filesystem, démarre des daemons
2 lit /etc/ttys : pour chaque terminal :
fork et exécution du programme getty
(prompte avec login :)
3 si un login est tapé : getty termine en faisant un exec de
/bin/login (qui demande le password)
4 si login correct, login fait un exec du shell

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Introduction
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix

Après le boot

Process 0

Process 1 Process 2
init pagedaemon

shell % ls
getty login

ls terminal 2
login: password:

terminal 0 terminal 1

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Livres Sur les systèmes d’exploitation et Unix

James L. Perterson and Abraham Silberschatz.


Operating Systems Concepts.
John Wiley & Sons Inc, 6th edition, April 2002.
952 pages.
ISBN : 0471262722.
Andrew S. Tanenbaum.
Modern Operating Systems.
Prentice-Hall, second edition, 2002.
Uresh Vahalia.
Unix Internals – The New Frontiers.
Prentice-Hall, 1996.
ISBN :0-13-101908-2.

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix


Unix
Dennis Ritchie and Ken Thompson.
The Unix Timesharing System.
Communications of the ACM, pp. 225–233, july 1974.
http://www.bell-labs.com/history/unix/

Ecole Centrale de Nantes – EI3 Info. Cours de Systèmes d’Exploitation – Unix

Vous aimerez peut-être aussi