MochiOS@仮想ファイルシステムの作成part0

MochiOS@仮想ファイルシステムの作成part0
開発中の自作カーネルであるMochi Kernelは、プロセスを起動したり、プロセス(タスク)間通信ができたり、デバイスI/O操作が出来る様になったりと、ちょっとまだ自由は効かないけれど、簡単なシステムを作れるようになってきた。
以前、試しに、Mochi Kernel上でSLコマンドを無限ループさせるデモを作った。
MochiKernel上で動くSLコマンド
このデモは、ビデオドライバ、端末エミュレータ、TTY、SLコマンドの4つのプロセスをカーネル上で動かし、プロセス間でメッセージをやり取りする事で、ただ80*25のテキスト画面上にSLを走らせる。
SLコマンドTTY端末エミュレータビデオドライバ指定行列番号に文字出力ビデオメモリ書込みloop[ 無限 ]SLコマンドTTY端末エミュレータビデオドライバ
いい感じに動いてるけど、実装はかなり汚い。たまにバグって止まるし。
無理やり実装している事の1つは、メッセージ送信先の指定。
メッセージはタスクIDを指定して送信するが、ビデオドライバや端末エミュレータなどのタスクIDは起動した順番で割り当てられる。
システムを作り上げた私は、起動させる順番を把握しているのでタスクIDは分かっていて、ソースコードにタスクIDを直接記載している。が、これは汎用的でない。
普通、HelloWorld!プログラムを書くのに出力先ドライバのプロセス番号を指定する必要はない。printf(“HelloWorld!\n”)で済む。
linuxはどうやってこれを解決しているかというと、ファイルシステム。
(linuxはマイクロカーネルではないので、厳密にはやらせたい事に違いがあるが。)
printfは標準出力に文字列を書いていて、標準出力の実体は、大体、/dev/pts/0とかいうファイル。
このファイルに書き込むとファイルシステムがうまい事ビデオドライバに橋渡ししてくれるというわけ。たぶん(かなり説明端折ってる)
じゃぁ、ファイルシステムを作って、そのファイルに書き込む事でビデオドライバにメッセージを送ろうそうしよう。
ファイルシステムというと、FAT32やらEXT4やらNTFSやら、色々なファイルシステム用語を思い浮かべるが、これらは単にフォーマットの話なので、少しやりたい事と違う。でも、今回作るファイルシステムを応用して今後対応できるようにしたい。
というわけで、よく知りませんが、仮想ファイルシステムを作ることとする。ファイルシステムの基礎となるような部分を仮想ファイルシステムとして作っておけば、今後の拡張も用意にできそう。
イメージ:
SLコマンド
仮想ファイルシステム
FAT32
EXT4
NTFS
ビデオドライバ
端末エミュレータ
TTY
次回に続く。。。

コメント

このブログの人気の投稿

プライバシーポリシー

git@よく使うコマンド早見表