コール・ゲート・ディスクリプタ Edit

目次 Edit

コール・ゲートとは Edit

コール・ゲートを用いると、異なる特権レベル間での移行が容易になる。
アプリケーションがシステムコールをする場合などに使用する。

コール・ゲート・ディスクリプタはGDTとLDTに入れることができる。

コール・ゲート・ディスクリプタの構造 Edit

0x0f0x0e0x0d0x0c0x0b0x0a0x090x080x070x060x050x040x030x020x010x00
セグメント内オフセット[15-0]0x00000x0000
セグメント・セレクタ0x0002
PDPLS:0Type000PC0x00040x0004
セグメント内オフセット[31-16]0x0006

PC : パラメータ・カウント(Byte:4[bit:0-4]) Edit

全5bit構成で、スタック・スイッチング?時にコピーするパラメータのバイト数を指定します。
16bitモード時には16bit単位のバイト数を、32bitモード時には32bit単位のバイト数を指定します。

Type : セグメント・タイプ(Byte:5[bit:0-3]) Edit

4bit構成で、セグメントの種類を指定します。

コール・ゲート・ディスクリプタに関するタイプは以下の2つです。

Byte:5説明
Hex3210
0x04010016ビット・コール・ゲート
0x0c110032ビット・コール・ゲート

S : ディスクリプタ・タイプ(Byte:5[bit:4]) Edit

システム・セグメントか、コード、データ・セグメントかを指定する。

DPL : ディスクリプタの特権レベル(Byte:5[bit:5,6]) Edit

セグメントの特権レベルを0~3で指定する。
特権レベルを参照。

P : セグメント存在フラグ(Byte:5[bit:7]) Edit

  • 0:セグメントがメモリ上に存在しないことを表す。
  • 1:セグメントがメモリ上に存在することを表す。

Since 2008 July. OS Project Wiki
リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS