カーネル読書会番外編 talos について
ということで Windows や Mac や Linux なんかとはまったく概念が違う独自 OS、talos*1 の話を聞いてきました。
え? Linux とも Printing とも関係ないじゃないかって?
そう思ってたんですが、そうでもなかったのだよ、山田くん。>誰?
いつもながら幹事役の id:hyoshiok さんと、今回アテンダーの伊藤さん @ BlueQuartz、そしてもちろん、プレゼンターの tarosuke さんに超感謝。
えっと、私の知識不足により d:id:fslasht:20081219:1229669956 を大変参考にさせていただきました。篤く御礼申し上げます。というかあの超アツい紙飛行機は id:fslasht さんのだったのですね。
勉強会本編
- プロジェクトページは Sourceforge にあります。
- 用語説明
- タスク:実行単位のこと。他の OS におけるスレッドも talos ではタスクと呼ぶ。
- プロセス:普通はメモリ空間を持つ実行単位のことをさすが、talos ではユーザー空間に渡されたメモリ空間その物をさす *2。
コンセプト
- データ操作 UI
- エージェント指向による本物のデータ共有
- すげー TRON くさいとおもったらやっぱり影響ありとのこと。
- 非 WYSWYG (NOT PDF! HTML World!)
- マルウェアプルーフ (後述)
- 極低 TCO
目標は NULL image system <=> Mono image system
ユーザにシステムの存在を感じさせない
プロジェクト運営上の方針
- 実装の統一をしない
- 選択の幅を狭めたらつまらない
- フォーク上等 *3
- フォークした場合、フォークしたものからおいしいとこどりできるから、かならずしもヒューマンリソースの無駄遣いにならない。
- パッチシステムは取らない。パッチをコミットするしないとか論争疲れるし。それぐらいならフォークしてくれ。
ここで質疑応答。
Q: バージョン管理システムはナニ使ってます?
A: SVN です。
C: Git にしなよ。Git は基本的にブランチする考え方だから開発もデルに向いてると思う。
作った動機・きっかけ、などなど
- Mac OS の理想と現実
- 1B/V2 *4
- 反WYGWYG
- 紙と同じものをディスプレイに表示しようとするのが WYSWIG。
- 例えば PDF とか
- でも紙とディスプレイはしょせん違うもの
- 拡大縮小とか超めんどくせー
- HTML みたいに、view によって表示変えてくれればいいのに! *6
- 紙と同じものをディスプレイに表示しようとするのが WYSWIG。
- マルウェアフリー
- セールストークとしては活用しているが、実は副次的なもの
- 「アプリが存在しない、完全なデータ指向 OS」を考えていたら、それってすごく安全ジャンってことに気づいた
- Linux
- 低コストで自在に使える開発環境
- プロジェクト管理面で大きく影響を受けた
実装
- 超巨大なカーネルにいろんなサービスが入ってる (GUI フレームワークもカーネル)
- もちろん実装上は分けたっていいけど、今のところは一枚岩
- ユーザーモードでは「描画」「ファイルの編集」「通信」しかできない
- しかもそれも直接「画面」「ファイル」「ソケット」を触るのではない
- エージェントにお願いしてやってもらう
- 必要に応じてエージェントが相互にお話したりもある
- 内部ではことごとくリスト
- 線形双方向リストで管理
- 双方向なのは purge があるので
- 管理コスト楽だし
- メモリアロケーションも単純だし
- でも一つのセルから二つのオブジェクトにリンクはれない。ちょっと面倒。
- 線形双方向リストで管理
- メモリ管理 @ 仮想空間
- O(1) のメモリ管理が特徴
- ここで絵を描くとわかりやすいのだけど面倒くさいのでごめん
- 要は 2^n のメモリブロックを格納するリストを用意しておく
- 最初はリストは空
- 例えばあるサイズ (30byte とか) の要求が来たら1ページ分ドカンと取って、32byte に分割して一個渡し、残りはリストに並べておく
- free されるとそのメモリブロックはリストにぶら下げる
- 仮想空間馬鹿食いするけど、所詮仮想だからいいよね?
- メモリ管理 @ 実メモリ
- こっちも似たようなかんじ
- ただフラグメンテーション対策は必要かも?
- tick なし、実時間管理
- すべての内部処理を起動からのμ秒で管理。
- 64bit だから全然余裕。
- tick は実時間の生成にしか使わない。
- 誤差出ないの?
- →うーん。ずれるかも……補正手段いるかなぁ。
困りごと
懇親会などなど
- 独自OSの作成というマニアックな課題に中学2年生が来てた! しかもちゃんと個人名刺つくってた! 名刺交換したさ。これは家宝だ! 日本の未来は明るいぞ! 今日最大のポイント。
- 彼はブログを持ってて、もう報告上げてた。素晴らしい。
- ていうか中二に負けてるウチの会社ダサ! が、そこで評論家になったら俺もっとダサい。意識改革せねば。このままじゃヤバいぞ。
- スカウトした人も Good Job だが、カーニハン・パイクの「プログラミング作法」を貸し出したのは超 GJ!
- そしてカーニハン談義で盛り上がる。K&R をちゃんと読めない奴はいかなる言語でもプログラミングをする資格がない。あそこには C の、いや言語設計の哲学のすべてがある。
- そして相変わらず組版について暑苦しく語る俺。「DTP のやつらは日本語を分かってない」とか唾飛ばして力説。しかも DTP のシステム屋さんを前に。はずかしー。
- Linux で動く BASIC で超盛り上がる。renum とか on error goto とか new とか懐かしすぎ。あれってパッケージになってんのかな? 俺も入れたい。
- Interface の付録だったっけ? の基盤キットでハードウェア組んで、紙飛行機に仕込んだ加速度センサーで Google Maps の上をぶんぶん飛び回れるシステムを作って持ってきてた人……が id:fslasht さん。すっげー。おもしれー。オイラまるでハードはできないからハードできる人ってそれだけで尊敬しちゃう。
二次会
- 基本的にみんなただの酔っ払いだった。
- お店のおねーちゃんが綺麗だからってツーショット写真取りまくるのはどうよ。
- しかもその写真を GPL で公開だ! とか。アホやな。(褒めてる)
- でも仮想化の話ができたのはちょっとおもしろかったよ。
とりあえず独自 OS ということでまったく分からないかとドキドキしてたけど、なんとかついてけるところもあったので一安心。
いやいや、根が TRON と非 WYSWYG ということで非常に親しみがわいたプレゼンでございました。
あー楽しかった。
こんな楽しいところになんでみんな出てこないのかわかんねーよ。
*1:tarosuke さんが作られてるので taros と間違われるけどギリシャ神話の巨人の名前なので ”l” が正解。あと大文字だと商標に引っかかるので小文字でヨロシクとのことでした。
*2:ここらへん記憶があやしい……。
*3:個人的にはここ面白かった。でもフォークしたものからどれを取り込むかと言うのは非常に難しいジャッジだと思うんだな。この開発モデルがうまくいくかどうかはそこにかかっていると思う。
*4:若い人は知らないかもね。B-TRON の実装の一つ。パーソナルメディアから出てた。後の「超漢字」の前身。ここの話を聞いて、talos って要は tarosuke さんの理想の B-TRON なのかなって思った。
*5:すげー分かる。超同意します。まだ HTML はおろか hypercard がなかった時代に仮身・実身モデルって概念を提唱してるんだから (そう、TRON ってすごいんですよ。坂村健はタダの山師ではないのだ。不幸だったのはあの時代にはまだオープンソースという考えがなかったことではないかしらん) 当然それを使って Web ブラウジングだって表現できるはず。せっかくのコンセプトを User Experience のためにねじ曲げてしまったといってもいいと思う。
*6:これまた超同意。ユーザが印刷したいのはコンテンツであって画面ではない。つかみんな Knuth の Computer & Typesetting 読め。欲しいことはみんなあそこに書いてある (除く CJK)。ここは思い入れあるので思わず聞いちゃったよ。「Knuth の仕事とか意識してますか?」って。
*7:ただ、コンストラクタにいっぱい仕事をさせちゃダメ、ってのは Effective C++ で見たことがある気がするから、他のカーネルサービスを使う人にお約束 (new したら必ず init 呼んでね、とか) を作りたくないからといって、あんまりコンストラクタを重くしたらそもそもいけないんじゃないのかなぁ。俺全然違う理解してるかも。
*8:概念は Cool だと思う。実装してみないとわかんないことはいっぱいあると思うけど、まずは作って姿を見せてほしい。その上で議論したいな。かなり否定的な意見が出てたけど、やる前から Concern を並べるのは個人的にはつまんないよ ^^; 思わず突っ込んでしまった。
*9:気のせいか初期の MS Network ^^;