本を読む

読書やコンピュータなどに関するメモ

GREE Labs勉強会でPlan9の話を聞いてきた

 GREEで開催されている「オープンソーステクノロジー勉強会」で、Plan9の話をやるというので聞いてきました。GREEとPlan9という組み合わせはちょっと不思議でしたが、GoogleのGo言語からの流れなのかもしれません。

 以下、メモ。

Plan9のお話:高野(@oraccha)さん

 産総研の高野さんが、Plan9について解説しました。Plan9は、オリジナルUnixを作った人たちがその後に開発したOSで、「UnixよりUnixらしい」のを目指しているそうです。ちなみに、開発メンバーのほとんどはGoogleに行って、Go言語とかを作ってるようです。

 Plan9の特徴は「すべてがファイル」であること。ネットワークやウィンドウシステムなどもprocfsやsysfsのようにファイルとして見えるそうです。ただし、ネットワークアドレスや共有メモリなどは例外だそうです。

 なので、/dev/screenを読めば画面全体のスクリーンショットがとれるし、/dev/windowを読めばそのプロセスのウィンドウのスクリーンショットがとれる、というのを実演していました。ファイルの名前空間はプロセスごとに分かれているので、/dev/windowがそのプロセスごとに違うそうです。

 ネットワークも同じで、コネクション1つがディレクトリとして見えて、その中にdata(データの読み書き)とかstatus(状態)とかremote(接続先のIPアドレスとポートが読める)とかが見えてました。接続するときは、/net/tcp/cloneに書き込むと新しいコネクションが作られるそうです。

> cat > /net/tcp/clone
connect 192.168.0.1:80

 そのため、ネットワーク用のシステムコールはなく、通常のopen、write、closeを使うとのこと。ioctl()もなくて、listen()でブロックする仕様。ただ、ラッパーとしてCライブラリも用意されていて、GoのGoのdial()はそのライブラリ由来だとか。

 など、高野さんは、「Unixカーネル=I/O多重化装置」「Plan9カーネル=サービスの多重化装置」とまとめていました。

 以下、細かいネタ。

  • CPUサーバー、ファイルサーバー、ターミナルなどから成る分散環境を想定
  • 共通する9Pプロトコルで通信
  • 最近はスタンドアロン版も
    • ターミナル+fossil(ファイルサーバー)
      • ファイルの内容のSHA1がIDに
  • プロセスのリターンバリューは整数じゃなくて文字列
    • (emasaka注:シグナルも整数じゃなくて文字列らしい。そのメモリは誰が管理するのか、聞こうと思って聞きそびれた)
  • Unixで動くPlan9環境
    • Plan9port:Plan9コマンドセット
    • 9vx:Plan9カーネルをUnixのユーザープロセスとして
    • Glandix:Linuxカーネル拡張
    • drawterm:UnixからCPUサーバーにグラフィカルに接続
  • Plan9でman emacsすると、「それはバグである」と出てくるw
  • ヘッダファイルの中にリンク用のpragmaが入っている
  • 環境変数も/envで参照
  • 実行プログラムの入ったディレクトリはみな/binにユニオンマウントされている
  • コアダンプしないで、フリーズした状態(broken)でメモリに残る
    • 閾値で掃除される
  • リモートデバッグも/procをimportするだけ
  • createシステムコールw
  • ダイナミックリンクがない、すべてスタティックリンク
  • Blue GeneでもPlan9が動いてる
  • SheevaPlugでPlan9が動いた!

 質疑応答で、Plan9にはselect相当のものやノンブロッキングreadがないらしいけど、どうやってネットワークプログラミングをするのでしょうか、と質問してみました。質問がわかりづらかったようですが、懇親会で高野さんと話したところによると、selectがなくてすべてマルチスレッドで処理するモデルという回答でした。Limbo/Infernoのスレッドは並行処理ではなくてコルーチンのようなものだけど、I/O待ちでコンテキストが切り替わるので、そのあたりをうまく処理できる、のだそうです。スレッドやGoroutineは相互にChannelの読み書きで通信するので、そのあたりもコンテキストの制御モデルに合っているようです。

軽快なPlan9:斎藤(@go_vm)さん

 筑波大の斉藤さんは、「みなさん今日帰ってPlan9をインストールすると思いますがw」という言葉を枕に、仮想化ハイパーバイザーのKVM上でPlan9を動かした話を紹介しました。

 前半は、同人誌「軽快なPlan9」の話。研究室でPlan9が流行って、なぜかGlendaのぬいぐるみを作った人もいたとか。で、ビッグサイトのイベントに出店したところ、3時間すこしで50部完売したそうです。若い人よりはおじさんが興味を持ったようで、「マネージャーに買ってこいと言われたので…」という謎のお客さんもいたとか。

 後半はその内容の紹介。実はPlan9というよりKVMのほうを中心としたネタだそうです。KVM上でPlan9を動かしてみたけどネットワークが使えない。そこで、ホストOSに通信処理を丸投げするようにKVMを改造したのだそうです。具体的には、ゲストマシン側でCPUのVMCALL命令を実行してKVMに制御を移し、ホストマシンのコンテキストでソケットを開いて、そのデータをゲストマシンに書き込む、という荒技だそうです。

 名付けて「VM床抜き」。これでPlan9からインターネットにアクセスして操作方法を調べられる、というオチで締めました。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/711-783970de

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad