Académique Documents
Professionnel Documents
Culture Documents
Processus
Ordonnanceur
Allocation mémoire
Séquence de boot pour Unix
Franck Cassez
Janvier 2004
Ecole Centrale Nantes
Plan
1 Introduction
2 Processus Unix
4 Gestion de la mémoire
Plan
1 Introduction
Historique
Posix : Vers un Unix standard
Architecture d’un système Unix
2 Processus Unix
4 Gestion de la mémoire
Chronologie (1960–1970)
1962 : Time-sharing (CTSS), implémenté à Dartmouth (MIT)
succés dans la communauté scientifique
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
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
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
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
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–)
Chronologie (1970–)
Chronologie (1970–)
Chronologie (1970–)
Chronologie (1970–)
Chronologie (1970–)
De MULTICS à Linux
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
Library
calls Programmes de base
Shell, éditeurs, User
compilateurs, etc
Systems
Calls Interface-Bibliothèque (Posix)
fork, open, close, read, write, etc
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
4 Gestion de la mémoire
Création ded’un
Réalisation processus
fork
19/10/04 IRCCyN/CNRS
Systèmes d’Exploitation
19/10/04
19/10/04 IRCCyN/CNRS
Systèmes d’Exploitation
Systèmes d’Exploitation
Signaux attendus
Zone proc
Signaux attendus
Zone proc
toujours en mémoire
Infos diverses:
Etat du processus: PID, PID du
limitations pour le processus, max.
père, etc
pages, etc
Infos diverses:
Etat du processus: PID, PID du
limitations pour le processus, max.
père, etc
pages, etc
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 }
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
Plan
1 Introduction
2 Processus Unix
4 Gestion de la mémoire
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
Algorithme à 2 niveaux
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
proc1 proc2
SuperUser
-2 processus qui étaient en attente d'une input
User
Priorité utilisateur 2 proc1 proc2
2
Plan
1 Introduction
2 Processus Unix
4 Gestion de la mémoire
Mémoire virtuelle des processus
Le Swapper
Pagination sous Unix
Pagination sous Linux
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
Fonctionnement du Swapper
swap out
Disque Mémoire
swap in
Fonctionnement du Swapper
swap out
Disque Mémoire
swap in
Fonctionnement du Swapper
swap out
Disque Mémoire
swap in
Fonctionnement du Swapper
swap out
Disque Mémoire
swap in
Fonctionnement du Swapper
swap out
Disque Mémoire
swap in
Fonctionnement du Swapper
swap out
Disque Mémoire
swap in
Fonctionnement du Swapper
swap out
Disque Mémoire
swap in
Mémoire RAM
case n-1
case n
case n+1
Info Disque
case 0
Proc P
"Core map"
BSD 4.4
table des pages
Le pagedaemon
Le pagedaemon
Clock Algorithm
Clock Algorithm
Clock Algorithm
Clock Algorithm
Disque
Clock Algorithm
Disque
Clock Algorithm
Disque
1 1
1
1
1
1
1 0
1
1
1
1
1 0
1
0
1
1
1
0
1
0
1
0
Disque
1
0
1
0
1
0
Disque
Thrashing
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
Pagination 3 niveaux
adresse sur 32 bits : 3GB + 1GB (SuperUser mode)
adresse virtuelle :
Pagination 3 niveaux
adresse sur 32 bits : 3GB + 1GB (SuperUser mode)
adresse virtuelle :
Directory Middle Page Offset
une entrée
par processus
Table de
une entrée pages
par processus
M
P
D
Table de
une entrée pages
par processus
page
O
M
P
D
Table de
une entrée pages
par processus
Le kswapd
Plan
1 Introduction
2 Processus Unix
4 Gestion de la mémoire
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