3

x86_64 の構造体 thread_struct には ip がないので、関数 context_switch はどのようにして新しいプロセスの正しい ip に切り替えることができますか?

4

1 に答える 1

0

コアレジスタ(特殊レジスタと汎用レジスタ)は、中断されたプロセスのカーネルスタックに保存されていると思います。割り込み/例外が発生するたびに、CPU がスーパーバイザー モード (特権モード) にトラップされ、カーネルは割り込みを受けたプロセスのカーネル スタックにコンテキスト (1 つのスタック フレーム) を保存します。

特定のプロセスのカーネル スタックの先頭を指す sp(スタック ポインター) レジスタを thread_struct に保存する必要があると思います。

于 2013-03-11T10:01:16.227 に答える