2016-10-25 6 views
0

ESPとSSは何を参照していますか?たとえば、リング0の特権レベルのTASK_1からリング0の同じ特権レベルの別のTASK_2へのタスクスイッチを行うと、コンテキストスイッチが完了した後に(ESPとSS)または(SS0とESP0)使用されます。x86-32のタスク切り替え

1-タスク内のスタック・スイッチの場合にのみSS0、SS1、SS2が使用されますか?

2 SSは特権レベルのスタックセグメントを保持できますか、それともリング3専用のスタックセグメント専用ですか。

答えて

4

あなたは、さまざまな目的でCPUによって使用されるメモリ内の構造体である32ビットTSS(Task State Segment)について話しているとします。 ESPおよびSSフィールドは、CPUが古いタスクのESPおよびSSを保存し、CPU管理タスクスイッチ中に新しいタスクのESPおよびSS値を復元する場所です。これらのフィールドは、他の汎用レジスタやセグメントレジスタフィールド(EAXやDSなど)と同様に、タスクスイッチ中に保存され、復元されます。

ESP0、ESP1、ESP2、SS0、SS1、SS2フィールドは、タスクスイッチ中に使用されることはありません。割り込みや例外が同じタスク内でより特権レベルに変更された場合にのみ使用されます。この結果、スタックスイッチが発生し、現在のTSSからの適切なESP#値とSS#値がESPレジスタとSSレジスタにロードされ、古いESP値とSS値が新しいスタックに保存されます。これらのTSSフィールドは、CPUによって決して変更されません。割り込みハンドラが低特権コードに戻ると、CPUはスタックから保存されたESP値とSS値を復元します。

タスクスイッチによってCPUの特権レベルが変更される可能性がありますが、タスクの特権レベルが変更されることはありません。新しいタスクは、以前実行していたときと同じ特権レベルで実行を再開します。

32ビット保護モードでは、基本的にOSがTSSを設定する必要がありますが、OSがタスク切り替えにTSSを使用する必要はありません。また、独自のメカニズムを使用して手動でタスクを切り替えることも可能です。これは、ほとんどの32ビットx86オペレーティングシステムがどのように機能するかを示します。 (そして、CPUが64ビットロングモードでタスクスイッチメカニズムを提供しないので、64ビットx86 OSがどのように動作するかは、

です。
関連する問題