1

私は 32 ビット オペレーティング システムを開発しており、プログラムがカーネルからセグメントを分離できるようにしたいと考えています。

そのためには SS を作成する必要があり、DS レジスタは実際にはプログラム スタックと .data セクションを指します。

私の調査によると、これはローカル記述子テーブルを設定することによって行われると考えています。

これは GDT と非常によく似ており、LDT は lldt を介してロードされると想定しています。

ただし、セグメントがセットアップされると、これをどのように使用するかわかりません。誰でも説明できますか?

4

2 に答える 2

1

いいえ、ユーザー空間の SS/CS/DS セグメント記述子をセットアップするためだけに個別の LDT をセットアップする必要はありません。

レジスタの状態を割り込みハンドラーに保存し、GDT のタスク セレクターのエントリを使用するだけで、それを行うことができます(ユーザー空間からの割り込みに入るには、CPU がプロセスのカーネル空間 SS をルックアップする必要があります)。

于 2013-01-13T02:14:25.203 に答える
0

さて、あなたはインテルのマニュアルよりも良いチュートリアルを見つけることができません。本当に、Intel 80386プログラミングマニュアルを見つけてください(386マニュアルは、新しいものよりも短く、私見がよく書かれています。必要なメインスポットがあります)。または、IntelWebサイトのIA32プログラミングマニュアル。それはあなたが探しているすべての情報を持っています。

于 2013-01-13T14:09:58.897 に答える