2009-01-01から1年間の記事一覧

Snow Leopardでdrawterm

MacBook (Core 2 duo 2GHz/Black)をTigerからSnow Leopardにしてみた。そのついでにHDD(TOSHIBA MK1234GSX)もSSD、しかもIntel X25-M G2に換装した。4万円の出費は痛かったけど、快適、快適(NetBook買えちゃう値段だよね)。参考までにXbenchの結果はMacBoo…

V7/x86

先日、MITのvx6を紹介したけど、UNIX V7をx86に移植するというV7/x86というプロジェクトも存在した。デモディスクイメージをQで動かしてみたけど、単なるV7じゃなくて、vi、csh、moreというUCB由来のプログラムも含まれている。コンパイラはpccではなく、ACK…

Springの名前サービス

これまたtwitterで久々に目にしたOS。90年代初期、SUNはSpringと呼ばれる、マイクロカーネルベースのオブジェクト指向分散OSを研究していた*1。プロジェクト開始時の時代背景としては、UNIXをオブジェクト指向的に再実装しようというプロジェクトがご破算に…

xv6

twitterでなぜだかUNIX V6ネタが盛り上がっていたのだが、たまたまググっていて見つけたのが、xv6。KMC Staff Blogでも取り上げられているので後追い(「UNIX v6 を x86 マルチプロセッサシステムに移植した xv6」)。xv6(x86 version 6)は、MITのOperatin…

忍び寄る機能主義

TuxRaderというLinuxのニュースサイトに面白い記事が載っていた。「Creeping Unix featurism」。「忍び寄る機能主義」とでも訳すのか。有名なUNIX哲学の一つとして、Doug Mcllroyは「一つのことをうまくやるプログラムを書け」と言っている。しかし、現在のL…

a.outのマジックナンバー

a.out*1のヘッダの先頭にはマジックナンバーが埋め込まれていて、これによっていわゆるOMAGICとかNMAGIC、ZMAGICとかに分類される(詳細はWikipediaのここ)。OMAGICはヘッダのすぐ後にテキストとデータセグメントが続き、それら両方は書込み可能なメモリに…

Hello, world!

先日、UNIX V1が動いたという話を書いたが、現実逃避でHello, world!書いてみた。もちろんPDP-11アセンブリでである。r0にstdoutのファイル記述子を入れてwriteシステムコールを呼び出す。文字列のアドレスと文字数は、sys命令の後に列挙する。$は即値で、14…

第一回カーネル/VM探検隊

関係者のみなさん、お疲れさま。楽しい時間を過ごせました。私もPlan9の紹介というか、ぬるい話をしてきた。一応、発表スライド「今日からはじめるPlan 9 from Bell Labs」をアップロードしたので興味のある方はどうぞ。本当はもっとデモの時間を取りたかっ…

カーネルを読んでみる

UNIXカーネルがC言語に書き換えられたのは3rd editionであり1973年のことなので、このバージョンのソースコードはPDP-11のフルアセンブリである。しかし、4221行とコンパクトだし、コメントも満載なので、アセンブリに対するアレルギーがなければ、pre K&R C…

UNIX 1st ed.カーネルのソースコード

以前、「よみがえるUNIX 1st ed.」というエントリを書いたが、そのソースコードが公開されていた(unix-jun72)。SIMHシミュレータを使って、当時のUNIX環境を再現することもできる。すばらしい!まず、Subversionからコードをチェックアウトする。 $ svn co…

第一回カーネル/VM探検隊

8/10に「カーネル/VM探検隊」というイベントで少しお話しすることになった。詳細はこちらから。こじんまりした集まりだと思っていたのに、結構人数が増えてるなぁ。まだ参加受け付けているようです。

えxぺ勉強会「ごっついFirewallの裏側勉強会」

7/27デジハリ渋谷校にてパロアルトネットワークの人から次世代ファイアウォールの話を聞いた。より詳細なレポートは誰かが書いてそうだけど、全体像については、「斬新なファイアウォール - Palo Alto Networks」 (Geekなページ 2009-07-08)が参考になる。Pa…

準仮想化ファイルシステム

KVMとvirtioのことを調べていたら、Eric Van Hensbergen氏がKVM Forum 2008で発表した資料「Paravirtualized File Systems」を見つけた。virtioとは、仮想環境におけるネットワークやブロックデバイスを準仮想化することで高速化する技術である。この発表で…

Plan9 on KVM

そういえば、KVMで動かしてなかった。ちょっと調べてみても、あまり事例がないみたい。みんな9vxとかp9pで十分満足なのかな。Plan9 on lguestになると、今度はいろいろヒットしてくるんだけど。まぁ、とにかく完全仮想化だし問題はあまり起きないだろうと予…

Small is Beautiful

I have made this letter longer than usual because I lack the time to make it shorter. ―Blaise PascalIf I am to speak ten minutes, I need a week for preparation; if fifteen minutes, three days; if half an hour, two days; if an hour, I am re…

Xen domUカーネルのダイエット

懲りずに「KVMに特化したミニマリスト・カーネル」のXen版。今時のディストリビューションはdom0未対応なので、CentOS 5.3 (kernel 2.6.18-128.1.6.el5)を使った。Xenのバージョンは3.0.23.1.2-128.1.14.el5と古い。ゲストOSはDebian 5.0.1 (kernel 2.6.26-2…

よみがえるUNIX 1st ed.

今年はUNIX生誕40年ということで、あちこちのニュースサイトで特集が組まれたりしているし、この日記でも取り上げようかなと思っていたところ、面白いニュースが飛び込んできた。 USENIX2009で、Warren ToomeyがUNIX 1st ed.をシミュレータ上で動かしたと発…

KVMに特化したミニマリスト・カーネル

Native Infernoをビルドしてみて、そういえば昔はLinuxも1FDディストリビューションとかあって、フロッピーディスクに収まるぐらい小さくできたんだよなぁと昔を懐かしんでいた(嘘)。Ubuntu 8.10のカーネルはvmlinuzで2.3MB強で、さらにモジュールの方が容…

Native Inferno

Hosted Infernoと呼ぶのが正しいのかわからないけど、InfernoはホストOS上で動かすのが一般的だと思う。でも、ベアマシン上でも当然Native Infernoが動作する。id:m-shibaさんのエントリで触れられていたので、試してみることにした。環境はQEMUじゃなくてVi…

分散コンピューティングの8つの嘘

90年代前半、GhostScriptの作者として有名で、当時SunのフェローでもあったPeter Deutschは、「Eight Fallacies of Distributed Computing」という社内向けメモを書いた*1。どれも言われてみれば当たり前だし、頭ではわかっているんだけど、いざ開発が始まる…

はてなダイアリーのRSSにおけるIf-Modified-SinceとLast-Modified

昨日の続き。feedparserでLast-Modifiedタグを調べるには、 a = feedparser.parse(url) a.modified (2009, 3, 3, 5, 40, 37, 1, 62, 0) でよいんだけど、はてなダイアリーのRSSはAttributeErrorになってしまう。ググってたら、昔は付いていたけど消えたとい…

Plan9/Inferno Twitter bot

最近、ずいぶん周回遅れでTwitterを使い始めた。ちょっと雰囲気がわかってきたので、Plan9とInferno関連のblog更新をポストするボットをPythonで書いてみた。興味のある人はp9botをfollowしてやってください。今のところ、自分の日記以外に更新をチェックし…

ブラウザがOSになる日

以前から「ブラウザがOSになる」みたいなことが言われてきたけど、最近のHTML5の動き、例えばローカルストレージAPIやCanvas、O3Dなどのグラフィック機能の導入などを見ると、ますますそれが現実的になってきたのかなと思い始めてきた。アプリがクラウド上で…

APIの設計について

Twitter経由で知った、「API Design Matters」というACMQの記事を流し読んでいた。書かれたのは2007年なのでちょっと古いが、この手の話題は時代を越えて残りそうだし、今読んでも損はないかな。システムコールやライブラリ関数など、よく使われるAPIほど良…

システムコールの追加

概要 Plan9にシステムコールを追加してみる。この手の演習ではgetpidを作ることになっているので、それに倣う。ちなみにPlan9のgetpid(2)は/dev/pidを読んで表示するというライブラリ関数である。ということで、kgetpidを実装してみよう。関係するファイルは…

ページャ

ページフォルトの話に続くと誤解されそうだが、今回はmore、pg、lessなどファイルページャの方の話。近所の図書館でO'Reillyの「UNIX Cプログラミング(Using C on the UNIX System)」を見つけた*1。今日のネタはここから。 ファイルを特定の行数でぶった切…

acmeでコマンド実行結果を挿入

リダイレクトを利用したTipsを二つほど。例えば、編集中のファイルにタイムスタンプを挿入したいとする。この場合、"Emacsだと、 (insert (format-time-string "%a %b %d %H:%M:%S %Z %Y")) をevalのだろうか。一々こんなことしてられないので、.emacsにこん…

ページフォルトハンドラ

9vx上で動作するPlan9プロセスは、ホストOSのプロセスと1対1対応している訳ではない。これはホストOSでpsしてみれば、9vxという1つのプロセスしか見えない(Plan9プロセスは見えない)ことからもわかる。9vxの内部実装は基本的に「1 CPU = 1スレッド(pthrea…

9vx on x86_64

9vxがx86_64環境でも動くという話だったので、MacOS XのVMWare Fusion上にUbuntu 9.04/amd64をインストールして、試してみた。MacOS X上での動かし方は、こことかに書いている。基本は一緒なので、注意点だけをメモしておこう。vx32用のbinutilsとgccが必要…

gitリポジトリ

Eric Van Hensbergenさんが、Plan9とInfernoのソースリポジトリをgitにミラー(?)してくれた。これは便利。 http://github.com/ericvh/plan-9/tree/master http://github.com/ericvh/inferno-os/tree/master P.S. gitは最近よく使うんだけど、MacOS XのHFS…