Vous êtes sur la page 1sur 15

2.

Processus de démarrage d’un ordinateur

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


ENS Lyon - France
2020-2021
https://gitlab.com/lenapster/ensl-asr2.git

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


1 / 15
N
Du démarrage de l’ordinateur jusqu’au
processus init ou systemd

I Démystification du chargement du noyau


I Nous permet d’introduire rapidement les concepts Systèmes suivants
I mode réel, mode protégé, espace d’adressage, interruptions,
pagination, processus
I Les figures qui suivent proviennent de
I https://manybutfinite.com/post/motherboard-chipsets-memory-map/
I https://manybutfinite.com/post/how-computers-boot-up/
I https://manybutfinite.com/post/kernel-boot-process/

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


2 / 15
N
Architecture d’un Intel Core 2 QX6600

https://manybutfinite.com/post/motherboard-chipsets-memory-map/

I Le processeur est le composant central. Il communique grâce à ses


pins
I accès mémoire, accès périphérique, interruptions
Pr Alain Tchana - (alain.tchana@ens-lyon.fr)
3 / 15
N
Considérons la communication mémoire

I Des pins pour indiquer l’adresse physique (nous y reviendrons)


I 33 pins pour les adresses par exemple ⇒ 233 adresses possible
I 64 pins pour les données par exemple ⇒ 233 les données sont
transmises par bloc de 64 bits
I Rôle du Northbridge et du Soughtbridge
I routage des requêtes d’accès mémoire
I Parler du IO gap

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


4 / 15
N
Organisation de la mémoire physique
(RAM): memory layout

I Démo cat
/proc/iomem
I Il s’agit bien des
adresses physiques et
non virtuelles (comme
le manipule le
processeur lorsqu’il
exécute une application,
à voir plus loin).

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


5 / 15
N
Power up

https://manybutfinite.com/post/how-computers-boot-up/

I Power-on ⇒ Premier processus


I Initialisation des firmeware
Pr Alain Tchana - (alain.tchana@ens-lyon.fr)
6 / 15
N
Chargement du BIOS

https://manybutfinite.com/post/how-computers-boot-up/

I Démarrage du bootstrap processor (BSP)


I les autres (application processors, AP) seront démarrés par le kernel
I CPU en mode réel (1MB adressable), pas de virtualisation de la
mémoire
I Le registre EIP (instruction pointer) pointe à l’adresse 0xFFFFFFF0
(le reset vector)
Pr Alain Tchana - (alain.tchana@ens-lyon.fr)
7 / 15
N
Le BIOS en action

I Le BIOS fait le POST,


construit découvre les
devices et construit un
certain nombre de
tables pour le kernel
plus tard, charge le
MBR à 0x7c00 et y
jump

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


8 / 15
N
Chargement du boot loader

https://manybutfinite.com/post/how-computers-boot-up/

I Le MBR contient le boot loader (ou n’importe quoi)


I Le code dans le MBR va lire la table des partitions (4 partitions
max), identifier le secteur de la partition active et charger le code
(kernel) qui est dans ce secteur
Pr Alain Tchana - (alain.tchana@ens-lyon.fr)
9 / 15
N
Le boot loader peut être plus compliqué
I Le MBR contient juste la première étape du boot loader (car trop
petit, 512KB, pour tout contenir)
I Le code de la première étape charge en mémoire le code de la
seconde étape
I Le code de la seconde étape lit le fichier grub.conf (ou boot.ini pour
Windows) et le présente. Tout ceci grâce au BIOS qui fournit
quelques routines pour lire des fichiers au démarrage.
I Lorsque le kernel est choisi (/boot/vmlinuz-2.6.22-14-server
par exemple), il est chargé en mémoire.
I or /boot/vmlinuz-2.6.22-14-server est souvent gros, plus de
640KB (le CPU est toujours en mode réel).
I Le BIOS fait des hack (change le mode du processeur) pour pouvoir
adresser plus de mémoire et charger le noyau plus haut. Mais remet
le processeur en mode réel à la fin.
Pr Alain Tchana - (alain.tchana@ens-lyon.fr)
10 / 15
N
Démarrage du kernel

I Le kernel est organisé


en deux parties: une
partie qui s’exécute en
real mode est chargé
dans les 640KB en bas,
et l’autre qui
s’exécutera en mode
protégé est chargé au
delà de 1MB

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


11 / 15
N
Démarrage du kernel

https://manybutfinite.com/post/kernel-boot-process/

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


12 / 15
N
Démarrage du kernel

I Le processus 0, qui exécute idle() va faire appel au scheduler qui va scheduler le processus 1
sur le BSP.
I Le processus 1 (kernel_init()) va initialiser les autres processeurs
I Ensuite kernel_init() exécute un processus en user mode: /sbin/init, /etc/init,
/bin/init, et /bin/sh
I C’est ce processus que l’on appelle le processus init (PID 1). Il démarre tous les services que
vous avez besoin (le serveur graphique X11, les démons réseaux, etc.)
Pr Alain Tchana - (alain.tchana@ens-lyon.fr)
13 / 15
N
init

I Tous les autres processus sont des descendants de init


I En plus d’initialiser les services systèmes, init surveille également les
autres processus
I par exemple un processus qui se libère de son père est
automatiquement rattacher à init
I init ne s’arrête que lorsque l’ordinateur est éteint
I init est aussi appelé System V init (du nom du premier système
commercial Unix)
I Il y a eu plusieurs tentatives de remplacement de init par d’autres
processus de démarrage plus efficaces
I upstart, epoch, systemd (plus populaire)

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


14 / 15
N
systemd

I System Management Daemon


I Il a été conçu pour accélérer le démarrage (parallélisme) et
consommer moins de ressources
I init démarrait les tâches de façon séquentielle
I systemd gère aussi mieux les services systèmes
I systemctl

Pr Alain Tchana - (alain.tchana@ens-lyon.fr)


15 / 15
N

Vous aimerez peut-être aussi