UNIX V1
第11回Lions本勉強会にインスパイアされ、UNIX V6、V7そしてV1へさかのぼりつつ、カーネルとデバイスドライバの界面であるデバイススイッチの実装について考えてみた。UNIXではデバイスもファイルとして見せた方が汎用的で便利ではということで、スペシャル…
a.out*1のヘッダの先頭にはマジックナンバーが埋め込まれていて、これによっていわゆるOMAGICとかNMAGIC、ZMAGICとかに分類される(詳細はWikipediaのここ)。OMAGICはヘッダのすぐ後にテキストとデータセグメントが続き、それら両方は書込み可能なメモリに…
先日、UNIX V1が動いたという話を書いたが、現実逃避でHello, world!書いてみた。もちろんPDP-11アセンブリでである。r0にstdoutのファイル記述子を入れてwriteシステムコールを呼び出す。文字列のアドレスと文字数は、sys命令の後に列挙する。$は即値で、14…
UNIXカーネルがC言語に書き換えられたのは3rd editionであり1973年のことなので、このバージョンのソースコードはPDP-11のフルアセンブリである。しかし、4221行とコンパクトだし、コメントも満載なので、アセンブリに対するアレルギーがなければ、pre K&R C…
以前、「よみがえるUNIX 1st ed.」というエントリを書いたが、そのソースコードが公開されていた(unix-jun72)。SIMHシミュレータを使って、当時のUNIX環境を再現することもできる。すばらしい!まず、Subversionからコードをチェックアウトする。 $ svn co…
今年はUNIX生誕40年ということで、あちこちのニュースサイトで特集が組まれたりしているし、この日記でも取り上げようかなと思っていたところ、面白いニュースが飛び込んできた。 USENIX2009で、Warren ToomeyがUNIX 1st ed.をシミュレータ上で動かしたと発…