TSSの構造、タスク管理機構

以下、タスク管理機構のまとめ。

一つのタスクに対し、一つのTSSとTSSディスクリプタを定義する。
TSSはメモリの任意の場所に設定され、TSSディスクリプタディスクリプタテーブルの上に設定される。
TSSはレジスタ保存部、OS用領域、IO許可マップの三部からなり、レジスタ保存部は固定的に定義されており、OS用領域は任意長である。
IO許可マップの位置はレジスタ保存部のiobaseで指定する。

定義されたタスクを開始するには、セグメント間ジャンプ命令、またはセグメント間コール命令を実行する。
セグメント間コール命令を発行した場合はTSSのバックリンク領域に元のタスクのセレクタ値が保存され、iretでreturn出来る。
現在実行中のタスクのセレクト値はtrレジスタに設定されており、ltrで書込み、strで読み込みが出来る。
通常は直接アクセスする必要は無いが、タスク機構の初期化の際にはltrで初期タスクのセレクタを書き込む必要がある。