Sunday 25 March 2012

v6 Unix 勉強会

楽しかったです。

http://atnd.org/events/25533

いやはやまぁ、

* 古色蒼然たるソースコード

由緒正しいとも言うか。もちろん、K&R C (+ PDP-11 アセンブラ)ですが、一部、古い構文も。

int a[] {0,1,2,3};

= は、どこにいった〜 インデントが少しおかしい。=+ は、なかった。

for(i=0;i<10;i++)
if (list[i]) { ...

とか。; か {} 書かないと、うちの研究室では怒られるだろう… つうか、僕の目の前で「アセンブラ良くわかりません」とか言い放った僕の学生が… Linux で、ほぼ同じ内容を必修の課題で出しているのに。

そう、自分の授業で Fedora Linux を使ってやっていることと、ほぼ並行したソースコード読み会でした。system call の呼び出しから、割り込みベクタ、kernel 内部での処理と読んでいく方法です。

今だと、VMで kernel を gdb でトレースとかできる。設定が面倒なんだが、わかりやすいです。

でも、TLBのないメモリマップ方式、Single CPUを前提とした割り込み禁止領域の設定、配列を中心とした実装。うーん、古臭い。でも、ドライバ、ファイルシステムを含めて、1万行というのは素晴らしい。一晩で読める。ただ、

* PDP-11 のアーキテクチャとアセンブラを勉強しなくてはいけない

ってのが虚しい感じ。なので、僕は Fedora + Intel64 でやっているわけですが。今だと、

* Multi CPU を前提とした kernel 内排他制御

* Kernel Thread の実装

* Copy on Write などのセグメンテーションと仮想メモリ

は必須かな。

でも、1万行を一気に書いた感じ(v6だから全然一気ではないのだが、C で書かれた最初のOS)に勢いを感じます。この「スクラッチから一気に書き上げる感覚」が素晴らしい。そのメタな雰囲気を勉強するものだと思う。

PDP-11は素直なアーキテクチャだし、デフォルトのintを省略してプロトタイプも出てこない K&R C も、単純で合理的な記述になってます。bit 命令はアセンブラでは出てくるが、C の bitfield が出てこないのも Good 。Union も禁止らしい。なかったのかも知れない。

そここに、Western Digital の copy right が残っているのも良いです。Lion 本は、持っていた気もするが、錯覚かな。

でも、自分のOSの授業の方向の正しさも確認できたし、昔のz80/68いじっていた頃の気分に浸れました。

でも、PDF ではなくて、ソースコード + vi で読みたかった :-p

No comments: