「30日でできる!OS自作入門」をRustで。27日目

Posted on August 13, 2019 , Tags: OS自作入門, OS, Rust

「30日でできる!OS自作入門 」のC言語の部分をできるだけRustですすめてみる。今回は27日目の内容。

アプリケーション起動中でもコンソールを閉じられるようにする

表題の通り。

task_aのfifoにsheet_indexに2024を足したものを送ることで、コンソールのみの終了ができるようにする。

その他細かい修正があるが、ここでは記載しない。

実行結果

以下の通り、コンソールのみ終了することができるようになった。

コンソールのみの終了1 コンソールのみの終了2

LDTの設定

現状、アプリからOSのセグメントは書き換えられないが、アプリ同士だと書き換えることができてしまう。
本のcrack7.hrbを実行すると確かに画面表示がおかしくなった。
これを防ぐため、LDT(Local Descriptor Table)を導入する。

実行結果

以下の通り、crack7.hrbを実行するとエラーになるようになった。

crackエラー

セグメントサイズが足りないのでふやす

アプリケーション用のセグメントサイズが足りず、オーバーフローして変な挙動をしていたので、kernel.ldを修正した。

本では、27日目の残りの部分はコードの整理がメインとなる。
Rustで書いているため、若干構成が異なり、あまり参考にならないので、この辺りは飛ばすことにした。

27日目は以上となる。ここまでの内容のコードはyoshitsugu/hariboteos_in_rustのday27としてタグを打ってある。