2011-01-01から1年間の記事一覧
第2回クラウドネットワーク研究会「OpenFlow祭」でも好評だったOpenFlowコントローラフレームワークTrema。TremaをVMWare FusionのLinux上で動かしてみたときのメモを残しておこう。OpenFlowとPlan 9の関係は?と聞かれたけど、これには触れないことにしてお…
Lions本合宿のネタに、ユーザ空間でファイルシステムを作ることが出来るMacFUSEを使って、UNIX V6ファイルシステムをマウントできないかと考えていた。@7shiさんや@superhogeさんとは別アプローチとして。さっそくMacFUSEのソースコードをダウンロードし、ま…
懐かしのOSで遊ぶために欠かせない計算機シミュレータSIMH。そのモニタモードをreadline対応してみた。例えば「PDP-11のブートストラップ」で示したように、実行時の解析を行うには、ctrl-eで入れるモニタモード?が非常に有用だ。ただし、このモニタモード…
第11回Lions本勉強会にインスパイアされ、UNIX V6、V7そしてV1へさかのぼりつつ、カーネルとデバイスドライバの界面であるデバイススイッチの実装について考えてみた。UNIXではデバイスもファイルとして見せた方が汎用的で便利ではということで、スペシャル…
TwitterのTLでもMulticsの話がぽちぽち出るようになったので、今日は関連する小ネタを。 UNIXで無意識で使っているls(1)コマンド。manページには"list directory contents"とか書かれているので、listの短縮形だとばかり思っていたら、Wikipediaによるとlist…
取り上げなきゃと思いつつ時間が経ってしまったが、ようやくちょっと時間が出来たので、9frontをインストールしてみた。9frontはPlan 9からforkしたOSである。主要開発者がベル研から抜けてしまい、フルタイムでPlan 9に関わる人がいなくなってしまった現在…
先日、SH7706LSRにDebianをインストールしてみた。ただ、Debianは公式なサポートがされているわけじゃないので、使い続けるのが不安という一面があった。また、si-linuxのリポジトリからSH3版のetchが消えて、なぜかsargeにダウングレードしたことも大きい(…
渕一博。というと「第五世代コンピュータ」を率いた人という印象しかなかったのだが、彼が若い頃(1969年)にACM SOSPで発表した論文「A Program Simulator By Partial Interpretation」を読んで驚いた。これはまさに仮想マシンである。これはもっと知られてよ…
Coders at Workという業界の有名人に対するインタビュー集を読んでいるが、プログラミング寄りの切り口が面白い。さて、本書のインタビューイの1人としてKen Thompsonが登場する。ベル研でProject MACに関わる以前の話から、現在Googleで何をやっているかと…
はじめに 8000円弱でSH3で遊べるボード、SH7706LSRにDebian 5.0 (lenny)をインストールしたときのメモ。Linuxのポーティングに関する情報は、三岩さんのページにまとまっている。また、Debian etchを動かすという話はいくつか見つかるのだけど、さすがに古い…
カーネルなど大規模なソースコードを検索したい場合、findとgrepを使ったり、タグジャンプを使うだろう。Eclipse使う場合とか異論はあると思うけど、今日はfindとgrepの合わせ技について調べてみた。普段はxargsを噛ませて、 $ find . -name \*.c | xargs gr…
UNIXを勉強すると、forkとexecが分離されていることに疑問を持ち、パイプやリダイレクトを使ってシェルを作り、その合理性に感動するというのが、お決まりのパターンになっているが、なぜこんな実装が生まれてきたのだろう。WindowsのネイティブAPIであるNtC…
GUIの定量的な評価手法であるフィッツの法則(Fitts's Law)について。この日記でGUIというと、rioとかacmeの話になるが、今日はもっと普遍的な話をしたいと思う。フィッツの法則が提唱されたのは1954年で、GUIというかコンピュータとも関係のない、人間工学…
先日、UNIX V6におけるsleep/wakeup関数のことを書いた。Plan 9もsleep/wakeup関数を持っていると書いたが、いまどきのOSではどのような実装になっているのか、フォローアップしていきたいと思う。 Linuxにはsleep_on/wake_upって関数がある。実際にはinterr…
今日はシグナルの歴史を調べてみたいと思う。シグナルというのはUNIXにおけるプロセス間通信の一手段であるが、CPUにおける例外のように、プロセスにとって非同期に発生するものなので、その実装はいろいろ面倒くさい。したがっていろいろ問題もあり、長年の…
昨日はsleep/wakeupの話を書いたが、これだけあればカーネル内の同期・排他制御が完璧かというとそうではない。sleepするにはコンテキストが必要なので、割込みハンドラ内でsleepできない。そこで、割込み処理が動くとまずい箇所は割込みを禁止する必要があ…
古典的なUNIXでは、カーネル内で走行中のプロセスがバッファやIOなどの共有資源にアクセスするときの同期機構としてsleepとwakeup関数を提供している。ちょっと注意が必要なのは、これらの関数はsleep(1)と直接動作に関係ないこと。実はV6にはsleep(1)を実装…
先週の@magoroku15さんのustで、システムコール番号の歴史が参照され、V7にはmkdirシステムコールがなくて、mknodとlinkを使っていたんだよねという話題が出てきた。それに触発され、mkdirについて調べてみたところ、試行錯誤の痕がいろいろ見られ面白かった…
我らがDennis RitchieとKen Thompsonが「UNIXオペレーティングシステムの開発への貢献」の理由で第27回日本国際賞(ジャパンプライズ)を受賞していたことを知った。予定では二人の記念講演が行われるはずだったけど、今回の震災で中止になったとのことであ…
(2011-03-24:しばらく編集できなそうなので、とっかかりの段階で公開)UNIXユーザがPlan 9を使おうと思ったときに、おそらくもっともフラストレーションを感じるのはマウス操作を多用しなければならないことだろう。マウス操作に対するもっとも多い不満は…
@n_kaneさんがPlan 9のソースコードをひらメソッドを使って読み始めたようだ。そういえば、g:plan9readingという試みもあったんだけど、断念してしまった。影ながら応援したい!! しかし、いきなりil.cとか読みに行くなど道を誤っているところに、一抹の不…
KVMでPlan 9が動くことは何回か紹介してみるが、今回はネットワークデバイスをPCIパススルーを使ってアクセスできるか試してみた。結論から言うと、Debian/squeezeの標準カーネル(2.6.32-5-amd64)はNGだけど、2.6.36なら動いた。使用したデバイスはIntelの…
先日もLions' commentary on UNIX読み会に参加したりと、UNIX v6づいている。この前はxv6をVirtualBoxにインストールして遊んでみたが、次はUNIX v7をx86に移植したv7x86をQEMU on Ubuntu 10.10上で動かしてみた*1。こちらは(UNIX v7が多少なりとも移植性を…
「Linux 0.01の設計と実装」という記事に触発されてLinux 0.01をUbuntu 10.10上のQEMUで動かしてみた。で、gcc 4.4.5ではコンパイルできないことがわかり、gdbでリモートデバッグした。(今回はPlan 9の「ぷ」の時も出てこないのであしからず。)オリジナル…
Plan 9に標準的なパッケージングシステムは存在せず、replica/pullを利用してシステム全体をベル研のリポジトリと同期するというのが一般的である。もちろん足りないツールはいろいろあって、sourcesリポジトリをみると、みんないろんなプログラムを作成した…
せっかくMacBook AirにVirtualBoxをインストールしたので、xv6をVirtualBoxで動かそうという話(わざわざそんなことをする人はいないだろうので、誰得なわけだが)。この日記を読んでいる人には説明の必要はないだろうけど、xv6はUNIX v6をx86に移植してOS講…