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

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

前提知識無しで作るなんちゃって仮想ファイルシステムpart1。

開発日記です。独り言です。

作業リポジトリ

とりあえず、仮想ファイルシステムをmvfsと名付けてgithubにリポジトリ作りました。
MochiのVirtual(仮想)なFile(ファイル)のSystem(システム)でmvfs!安易!
https://github.com/MasterMochi/mvfs

ユースケース

mvfsにどんな機能を乗せようかと、ユースケースを考えてみる。
登場人物は、ユーザプロセス、mvfs、ビデオドライバ。
ユーザプロセスは、ビデオドライバによってビデオメモリを抽象化したファイルをopen/write/closeしてこのファイルに書き込む事で、画面に文字を出力する。readは割愛。
mvfsは、ファイルとそのアクセス先が誰なのか(タスクID)を管理する。
VGAドライバは、ファイルをmvfsに登録する。
ちょっとシーケンスを書いてみる。
ユーザプロセスmvfsビデオドライバmount( "/vram" )open( "/vram" )open( "/vram" )write()write()vram書込みclose()close()unmount( "/vram" )ユーザプロセスmvfsビデオドライバ
mount
このファイルへのopen/(read)/write/closeは私(シーケンスで言うとビデオドライバ)にスルーパスしてくれよ要求。名前はmountでいいのかな、、、まぁいいよね。
open/(read)/write/close
普通のファイル操作機能。先のmountによってファイルパスとタスクIDが関連づいているので、mvfsはこれを使って、ビデオドライバに機能呼出しをスルーパスする。
unmount
このファイルを削除してくれ。もうスルーパス要らないよ要求。
よし、これで、ユーザプロセスはVGAドライバプロセスのタスクIDなんか知らなくても、mvfsにファイルパスと機能番号を指定してメッセージ送信すれば、ビデオドライバプロセスに要求ができる。
ファイルディスクリプタとかファイル階層の管理とか、後で考えよう。アクセス権とかは、うん、いつか考えよう。

あれ…?

ビデオドライバもユーザプロセスも、mvfsにメッセージ送信するためには、mvfsのタスクID知らないとダメじゃね…?
タスクIDは動的に変わってしまうから、やっぱり、不変情報でタスクIDを引っ張ってくるカーネルの機能が必要だなぁ。
ユーザプロセスkernelmvfs仮想ファイルシステムは私って覚えといてーおい、仮想ファイルシステムのタスクID教えろはは、このIDでございます。ユーザプロセスkernelmvfs
こんな感じの。
なんか仮想ファイルシステムでやりたい事をkernelの機能でもやってしまってる感が否めないけれど、仕方が無いよねぇ。
まぁ、kernelはシンプルに小さく作りたいので、単純に名前とタスクIDの辞書だけとしよう。仮想ファイルシステムは、名前を階層化できるし、アクセス制限やらインタフェースの抽象化やら色々できるファイルシステムの共通処理部なので。
これで、機能の住み分けも付いた。
まずは、kernelの機能拡張からだなぁ。

コメント

このブログの人気の投稿

プライバシーポリシー

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