ウォンツテック

そでやまのーと

OS作成 - シェル編

read(0, .., ..)でキーボード割り込みをカーネル内部でwaitする事になるのだけど、その場合いつまでも待てないので当然その他の割り込み特にスケジューリング用の割り込みは許可する。現状の実装ではカーネル内部から内部へのスイッチ(Privilege Level 0から0)を実装していないため一般保護例外が発生してしまう。Privilege Level 3から0へのスイッチ時にはeip,cs,eflags,ss,espがスタック上に保存されるが、Privilege Levelの変化が無い場合はeip,cs,eflagsしかスタック上に保存されないため生じる問題。
 どのみちカーネル内部でのスイッチを許可するには必ず実装しなくてはいけない物だったのでこれを気に実装しておくかな。