あと、上のことが正しいとすると、
タスク切り替えを行う場合、割り込みハンドラをCPL=3のコードセグメントに配置させて、
そこで、タスクのスケジューリングを行い、次に実行するタスクへのCS EIP に、
スタック上の CS EIP を書き換えて、iret でマルチタスク実現というのを考えたのですが、
どうでしょう?
特権命令は、タスクゲートを使って、CPL=0にして特権命令を実行後、
元に戻るということにしようかなと思っています。
問題点等ご指摘ください。