Qu'est-ce que le premier processus typique d'un noyau Linux démarre?
J'ai cherché sur internet, et ce est le premier processus qui est exécuté au démarrage du système.
J'ai trouvé deux réponses qui sont init
et sched
. Quel est-il vraiment?
Qui est exécuté en premier? sched
processus ou init
processus?
Vous devez vous connecter pour publier un commentaire.
Généralement c'est le
init
processus, le chemin de ce qui est codée en dur dans le noyau lui-même.init
effectue très faible niveau des fonctions comme le démarrageupstart
dans le cas d'Ubuntu (avant 15.40) ousystemd
dans le cas d'Ubuntu 15.04 et, plus tard, Arch, Fedora, et d'autres, qui charge le reste des processus et de l'installation. Notez que le système n'est pas fait, le démarrage lorsqueinit
fonctionne - c'est une idée fausse commune. En fait,init
permet de configurer votre écran de connexion et d'autres tâches connexes. Voici une page de Wikipédia surinit
: https://en.wikipedia.org/wiki/Linux_startup_process#SysV_initCependant, le noyau Linux ne démarre le planificateur, mais il n'est pas dans l'espace utilisateur, qui est ce que la plupart des gens associent la maison pour un processus. Aussi, le Bourne Shell (
/bin/sh
) peuvent être remplacés si leinit
est manquant ou ne peut pas être appelé. Vous pouvez également, en théorie, substituer par toute exécutable à l'aide de lainit=*some path here*
du noyau de Linux l'option de démarrage.Son
sched
, comme par Linux 3.13 démarrage du noyau() premiers appels sched_init() et s'exécute en premier utilisateur de l'espace de processus init-je.e rest_init() crée un thread du noyau passer une autre fonction kernel_init() comme le point d'entrée et le noyau va au ralenti, sauf si.Le noyau au moins a un processus exécutable, qui est connu comme la tâche d'inactivité, swapper, init_task et sched. Ils sont des noms différents d'un même processus dont le pid est 0. Cette init_task est une variable globale de noyau, de sorte qu'il ont une adresse fixe, vous pouvez le voir à partir du Système.carte de commande
grep 'D init_task' /boot/System.map-*
. L'adresse ne change pas, sauf si vous recompilez le noyau.Le programme init dont le pid est 1, engendré par init_task(pid 0). Dans Ubuntu, Le programme init est l'Arriviste de la gestion des processus démon, tandis que dans d'autres systèmes, il pourrait être systemd. L'adresse de init changé à chaque fois que le système redémarre.
Donc, process 0 exécuté en premier, puis spawn processus 1.
Vous pouvez essayer
il montrera tous les processus de hiérarchie dans la forme de l'arbre à droite de la enfants sur
sched
processus (PID 0). Pas de douteinit
est le parent de tous les processus, maissched
sera exécuté avantinit
et spaws les deuxinit
etkthread
.Vous pouvez également voir le PPID (c'est à dire l'id de processus du processus parent ) à l'aide de:
Vous le remarquerez à 0 pour les deux
init
etkthread
.Swapper est le premier processus en cours d'exécution. Il a le pid 0.