C'est ma conjecture:dans le noyau linux, la structure de données thread_struct contient à la fois le champ esp0 et esp, quelle est la différence?
esp0 est initialisé avec l'addr supérieur de pile de noyau. lorsque la pile du noyau est allouée, elle est utilisée, lors du changement de processus, pour initialiser tss-> esp0, de sorte que lorsque le contexte passe du mode utilisateur au mode noyau, la pile du noyau peut être localisée; tandis que esp est utilisé pour sauvegarder la pile du noyau du processus qui doit être planifié pendant le changement de processus.
Donc esp0 dans un thread_struct ne change pas une fois initialisé, alors que esp change.
A mon avis, n'est-ce pas?