2009-03-31

submit final report




ようやく終わりました。とてもとてもとても長かったようで実は結構短い研究が終わりました。

ようやく自他共に認める春休み…って、え、もう終わる?
そんな馬鹿なorz orz

授業が始まるまでもう少しか。研究室どこにしようかなー。正直、OSとデータ解析でかなり迷っているけど、まぁ決め手はオープンハウスということで明日と明後日にワクテカしとくか。とりあえず産総研の見学申し込みだけはしておこう。面白そうだし。



※ なお、今回の研究成果は全てオープンソースとして公開しています。OSに興味ある方はLet'sアクセス!
OSに興味無い方でも他のソフトウェアも公開してるので見てってね!
URL: http://www.arukou.sakura.ne.jp/yasulab/os/

はりぼてOSの拡張:メモリ空間のみを使用して動作するファイルシステムの実装




【Description】
Trying to implement a file system, which runs only using memory, on haribote OS.


【目的】 ※ myos_report_001.pdfから一部引用
研究内容として"メモリ領域のみを使用して動作するファイルシステムの実装"
(以下、本研究)を選んだ2つの目的について述べる。

1つ目の目的は、はりぼてOSの拡張例を広く公表することで、OS開発者数の増加を促進させることである。はりぼてOSは、必要最低限の機能のみを実装し、他の欠けている機能の実装については各読者に委ねるというスタンスを持っている。このため、一般的なOSにあるべき大部分の機能が欠けている。はりぼてOSの著者は、これらの欠けている機能について、読者自身で実装することを強く勧めているが、ウェブ上で確認できる読者自身による開発例は未だ多くはない。

また、ウェブ上で確認できる拡張例の多くは、拡張したOSの配布のみに強く焦点が当てられているため、拡張へのアプローチや拡張したOSの仕様について深く述べられている例が少ない。このため、読者の多くは、はりぼてOSの拡張するための具体的なアプローチ方法が思いつかず、本書を読み終えた後においても、OSの拡張まで手を伸ばす読者が多くないのだと私は考えている。

これらのことから、本研究では、まずはりぼてOSを拡張させ、その後、拡張したOSの制作過程とその仕様をウェブ上に広く公表する。そうすることで、読者自身によるOSの拡張を促し、今後のOS開発者数の増加を目的の1つとしている。
(引用終了)


URLhttp://www.arukou.sakura.ne.jp/yasulab/os/
上記URLに置かれている資料は全てオープンソースとして公開しています
これら資料が、どこかの誰かの役に立っていたら嬉しいです。
yohei yasukawa, March 31th, 2009,
Dept. of Computer Science,
Waseda University

2009-03-29

Absolute path / Relative path











cdコマンドの引数に対する構文解析器を作りました。


今までのcdコマンドでは絶対パスが表現できなかったり、隣接したディレクトリにしか移動できなかったりと、色々とショボイcdコマンドでした。しかしながら今回の更新により、例えば、ルートディレクトリに直接移動出来たり、パス名を連続して綴ることで隣接していないディレクトリに移動出来たりします。


ただ「これだけだと従来のcdコマンドと何も変わらいじゃないか!面白くナス!」と思ったので、言語処理系の授業で習った誤り処理も追加してみました。これにより、cdコマンドが失敗したとき、なぜ失敗したのかを教えてくれます。


関係ない話だけど、cdコマンド改造後の方がソースコードが短くなっのはビビったw。元々のcdコマンドがnaiveだったという原因もあるだろうけど、それ以上に再帰降下関数が最強すぎるという罠なのだろう。2単位の癖にSoC設計×2よりキツイと噂の言語処理系を、糞真面目に取り組んでおいて心の底から良かった思った瞬間。実は、言語処理系はオープン科目として受講できるみたいだけど、どう見ても死亡フラグです。本当にありがとうございました。
※ちなみに、言語処理系のノート等はここら辺にあります。参考資料としてどうぞ。


さて、メモリの離散的な確保も実装したし、cdコマンドも強化したので、後はドキュメント書くだけかな。ガリガリ書いていきます。

2009-03-27

Block Division ver 2







ブロック構造体に色々なバグがあったのを修正。






ついでに、ブロックサイズを#defineの値を変えるだけで変更できるようになりました。試しにブロックサイズを3byteにすると上述したようなブロックを跨ぎまくってデータを保存するファイルシステムになります。1ブロックあたりに損するデータ量は、head部のサイズと+ヌル文字[byte]です。なので、ブロックサイズが3byteだと、実際のデータ量より、データ情報を構築するためのデータ量の方が大幅に大きくなります。つまり、超冗長なファイルシステムになります。しかしながら、確保するメモリのサイズも小さくなるので、フラグメントの隙間にも挟める可能性がグッと上がります。






・・・しかしながら、今のファイルシステムはブロック毎に、離散的にメモリを確保しているんじゃなくて、連続的にメモリ確保しているという罠。なんというもったいないシステムorzorzorzorz






明日中に、離散的にメモリを確保して、つなぎ合わせて実データを構築できるようにしよう。

2009-03-26

Project Research D




うおおおおおおおおおおおおおおおおおおおおおおおおおおおお。

プロジェクト研究DがA+だったあああああああああああああああ。
これは超うれしいww。今年一番の嬉しいイベントだわw。
これで、オペレーティングシステムがCだった言い訳が出来たw。
というかOSの授業がCで、OSの研究がA+とか、極端すぎるなw。

研究の最終的な仕上げをやるモチベが急上昇した。
このまま30日まで突っ切るわ!

2009-03-24

haribote OS on VirtualBox


qemuじゃなくて、SunのVirtul Boxで自分の作ったOSを動かすことに成功。今日はそれに関するメモ。

成功といっても、実際にやったことはVirtualBoxのフロッピーイメージにharibote.imgを登録しただけです。フロッピーイメージをマウントしていると、ハードディスクにあるOSよりも優先的に起動するため、マウントしている限りずっとharibote OSが動きます。それだけ、かな。特にメモするようなことでもないかw。一応キャプチャも使ってみる。

はりぼてOSを起動させるときはファイルイメージをマウントする。




"追加"でフロッピーイメージを登録して、登録されたharibote.imgを選択する。


マウントしたらリセットする。




はりぼてOSが起動する。


はりぼてOSを起動させたくないときは、フロッピーイメージをアンマウントするだけです。
以上。


ちなみに、Virtual Boxを使ってもサウンドオーディオの問題(QEMUだとmmlplayやbeepdownを入力しても音が聞こえない問題)は解決しません。理由は…現在調査中。Ubuntuの方ではしっかりと音が出ているので、少なくともVirtualBoxのせいではないはず。いちいち音確認するためだけにリブートする気にはならないから、やっぱしemulatorで音が確認出来たら便利だよなぁ。

さて、作業再開。

2009-03-21

Block Division




ブロックサイズごとに区切ったファイルデータの保存に成功!
これで、今後の開発では、大量のログを保存できるようになりました。テラ進化すぎるwww。ちなみに、最終研究報告書の提出は都合によりロスタイム(2日間)に突入いたしました。これはもうやりきるしかねぇw

2009-03-19

Edit Mode with open/save/close functions




とうとうmy operating systemに編集機能というブルジョワジーな機能が搭載いたしました!設計をメインにやってたので、まだコマンドライン上でしか編集できないけど、関数のアセット化には気を配っているのでeditorアプリもそれほど遠くない未来に実現できるはず。

正直なところ、以前実装したツリー構造のファイルシステムと同期を組むのが若干面倒くさかったけど、なんとかツリー構造を維持したままファイルの編集ができるようになっています。まぁ現状ではメモリ上で弄っているだけなので、再起動したらサラサラ~と中身は消えてしまうのですが。それでもopenやcloseはそれっぽく実装しているので、あとでI/Oの部分さえクリアしてしまえばそのまま実装できるはずです。

あとは例によってレポートを書いて提出するだけ、draftだけど。実際ここからがシンドイが、まぁなんとかするしかない。

2009-03-18

blue screen

OSを作成する過程で、ポインタ変数を弄りまくっていることが原因なのか、どうもOS制作中はブルースクリーンになることが多い。

今日も今日とて、例外なくブルースクリーンになりましたorz。結構頻繁に上書き保存しているから、大抵の場合は再起動すれば問題なく開発を再開することができます。今日もそんな感じで淡々と再起動しました。再起動後、とりあえずコンソール画面でmakeしてみると、なにやらエラーがいっぱい表示されるではないか!?何故だーと思い、色々と調べてみた結果、なんとOSのファイル関連を扱うソースコード"file.c"が全て白紙になってしまっているという罠orz orz orzこれなんて水の泡?

幸運にも、東芝で働いていた時の癖で1日毎にソースコードのバックアップを取っていたから、被害は最小限で済みました。というか、東芝さんのところでバックアップ取る癖を躾けられていなかったら、今頃発狂していたかもしれません。いやはや感謝感謝です。

そういえば、最近何かと東芝さんと縁があることが多いですね。インターンしかり、推薦状しかり、SoC設計実習しかり、と。インターン先もそうだったし、SoC設計実習時でご一緒させてもらった東芝社員の方もそうだったんですが、東芝の社員さん(特に技術系社員)は本当に技術に対して純粋で、かつ社外の人に対してもフレンドリーな方が多い。確か某コンサルティング会社代表取締役の方も同じようなことを言っていたことを記憶しています。ということで、就職活動中の同期の皆さん、就職するなら東芝がオススメですよ(宣伝?)。

さて、息抜き終了。開発再開!

[追記]
何故だ―、なぜ書き込めないんだーorz

2009-03-15

myos: distinct path


今日はTOEIC受けたんですが、う~ん中々手ごたえが無い感じ。。。

TOEICに限らず何か試験があるときは、試験後にやることを常に意識する癖があるんだけど、そうしたら段々とOSのことが気になってきて、気づいたらOS開発を始めてたのがどう考えても原因。自業自得としか言いようがないorz。TOEFLと違ってTOEICは腕試しとして受験したわけだから、特に高得点が取れなかったとしても問題はないんだが、周りの人の点数が皆900点代だからそれに比べて低すぎる点数を取ってしまうと、それはそれでショックが大きいという罠。やっぱ試験前日・当日ぐらいは他のことやるべきではないな。自戒。

一方、OSの方は結構快適に開発が進みました。まずは、適当につけていた仮変数名・構造体名をちゃんと決定し、全ソースコードに反映。明らかにdirectoryと同等の振る舞いをしているのに、myfs(my file systemの略)という変な名前を付けていたので、これを修正。ソースコードの可読性もこれで少しは高くなったはず。

あとは、current directoryの絶対pathのスコープを、大域変数からconsoleの構造体の一部に移動。これにより、右側のコンソールと左側のコンソールが別々のpathを保有することができました。・・・それだけですorz。他には、ちまちまとしたバグや冗長なコードの最適化といったところかな。

明日からは本格的にread/write関数の設計・実装に取り掛かります。今週末がドラフトの提出日だから割とハイペースで作らないとまずいっぽい。

春休みも気づいたらもう終盤で、あとはプロジェクト研究をやりきるだけ。気合いれてやるっきゃない。聞いたところによると、研究室に入ったら輪読地獄云々に入るらしいので、自己中心的な開発もこれで最後か(?)。悔いの無いようにOSで遊びきるしかねぇw

ではでは。

2009-03-13

SoC, device driver




SoC設計Eコースも、今日で最終日となりました。以前の実習の時と同じで、なんと時が過ぎるのが早いことか。。。

Eコースの課題は無線を使って組込みOSを搭載した台車を走らせ、1m先で停止させることです。課題へのアプローチには色々な方法があると思いますが、今回は理論アルゴリズムから中間アルゴリズム、そして実装アルゴリズムを求め、最終的にはそれをC言語で実装します。PID制御という方法で台車を制御しているので、実習では比例や微分・積分、ラプラス変換⇔逆ラプラス変換、z変換などを使わなくちゃいけないのか~、と思っていたのですが実際は既にある理論アルゴリズムを改良するという中々のチートっぷりでした。しかしながら、おかげさまでやることがほぼSWのみとなったので、僕としては願ったりかなったり。

では、具体的には何をやっているのかというと、Zigbeeを使った無線通信を台車と行うための、デバイスドライバ作りやミドルウェア作りです。これが凄い楽しい!デバイスドライバといっても、約五百行ぐらいのプログラムでで大した量ではないです。が、人生で一回はデバイスドライバを作ってみたかった僕としては非常に良い機会に恵まれたなぁ、と思ってます。まさかアルゴリズム設計のコースでデバイスドライバを作れるとは(笑)

加えて、SoC設計Eコースは、ほとんどの受講生が院生と社会人で構成されているので、実習以外の部分でも色々と勉強になることが多いです。中には、明らかに講師と同じぐらいの年のシニアエンジニアの人もいて、教わることが多いのなんの。例えば、今回のような組み込み系の開発ではデバッグが即座に行えないため、デバッグ効率を考慮した開発方針が求められるのですが、そのためのデザインレビューの徹底っぷりといったら、もう感動すら覚えるレベルでした。

とまぁ、現在はこんな感じで中々に楽しい実習を堪能中です。今日の最終発表までにはちゃんと台車を走らせ、1mで止められるよう頑張りたいです。

ではでは。

2009-03-09

Submit and Start SoC design E




Cover letterやらCVなどを書き終え、他必要な資料を3部ずつ揃えて、ようやく書類提出が一部終了!あとは推薦状やらnominated formやらを別送するだけッス。

そして明日(今日)からは去年の夏に受講して以来のSoC設計実習Eが始まります。1週間ほど缶詰だけど、ここは踏ん張って念願の組み込みマスターになってくんよ!

もう寝る!

2009-03-02

my filesystem with tree structure + 元A組の人へ

現在制作しているOSのディレクトリ層が、平面構造からツリー構造に生まれ変わりました!これにより、Change Directoryコマンドが実装できるようになりました。正直最初はソースコードが大きすぎてどうなるかとおもったけど、Eclipse C/C++様のお陰で作業効率がかなり高まった気がします。というか、JDE使わないと開発する気にならないっすw

以下、ちょっとした簡易DEMOを作ったのでよければご覧ください。
--------------------------





現状はこんな感じです。これからread/write関数を実装して、自作OS専用text editorとか作れたらいいなぁ~、と妄想中。フロッピーディスク or CDで動くから、他人のPCで自分のOSが立ち上がるのか!?うはwww夢が広がりんg(以下、自主規制)

とはいえ、6日後にはTOEFL iBTの本番があるのでOS制作は一旦中止にするつもりです。今からは気持ちを切り替えてTOEFLのR/L, W/Sの復習に専念しまッス。

ではでは。



P.S.
> 偶然にもこの投稿を見た学院元A組の人たちへ

学院の某S先生からの要望もあって、ふっくんがイギリスから帰ってきたら元学院A組の飲み会開きます!飲み会の決行日は、6/12(金)か6/13(土)のどっちかを予定しています。今後は、皆それぞれ就職やら研究やら留学やらでどっか行っちゃうはずなので、個人的にはこの日ぐらいは徹夜したい気分です。なので、割と大勢に参加してもらえたらなぁ、と思ってます。後日MLでも流しますし、個人的にもメールを送るつもりですが、これ見たA組の人も他のA組の人達に宣伝してもらえると助かります。ちなみに、飲み会の日を変更して欲しい人がいたら、早め早めのうちに僕にコンタクト取ってください。

以上です。ではではー

[追記]
出欠確認用の掲示板作りました。AUとi-modeでの動作は確認済みです。
http://www.arukou.sakura.ne.jp/yasulab/gakuin/imb.cgi

携帯のお気に入りで常時監視したいツワモノは、↓これ使ってください。