これは私の推測です:
esp0 は、カーネル スタックのトップ アドレスで初期化されます。カーネル スタックが割り当てられ、プロセスの切り替え中に tss->esp0 を初期化するために使用されます。これにより、コンテキストがユーザー モードからカーネル モードに切り替わったときに、カーネル スタックを見つけることができます。一方、esp は、プロセスの切り替え中にスケジュールされるプロセスのカーネル スタック トップを保存するために使用されます。
したがって、thread_struct の esp0 は初期化されると変更されませんが、esp は変更されます。
私の推測は正しいですか?