This is my guess:
esp0 is initialized by the top addr. when the kernel stack is allocated, and it is used during the process switch to initialize tss-> esp0, so that when the context switches from user mode to kernel mode, the kernel stack can be located; while esp is used to save the top stack of the process kernel, which should be scheduled during the process switch.
Thus, esp0 in thread_struct does not change after initialization, but esp changes.
Did I understand correctly?
thread_struct ESP, esp0 ESP. tss_segment_32, esp0, esp1, esp2 ESP.
thread_struct
ESP
esp0
tss_segment_32
esp1
esp2
TSS, Intel, Linus .
, TSS, , , x86. , ( ESP, 3 , , esp3).
esp3
, , , . Linux 0 ( ) 3 ( ), esp0 ESP , .
, , , - , , OS/2, 2 -. , , , 2, /, .
Source: https://habr.com/ru/post/1785836/More articles:listen () maximum queue size for each version of Windows - windowshttps://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=https://fooobar.com/questions/1785832/reachability-takes-too-long-to-fail-when-connected-to-wifi-without-internet&usg=ALkJrhhvZ7NZi10xoZwI6J7_63jHFhRmnwHow to automatically resize text according to fixed size PyGTK shortcut? - pythonTransferring master data from one project to another - iphoneUnreleased resource: threads - javaTranslate vbscript into C # using ANTLR - c #error trying to return to normal mode in the vim command prompt window - vimWhy is the operating system software loaded from the hard drive than from the rom chip? - operating-systemHow to implement a transaction at the level of business logic - databasehttps://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=ru&sp=nmt4&tl=en&u=https://fooobar.com/questions/1785841/alternative-to-using-group-by-without-aggregates-to-retrieve-distinct-best-result&usg=ALkJrhj3aKv6q5zWUPTCx23c1vQuOI2TqwAll Articles