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

ちょっと普通じゃないTremaの動かし方

第2回クラウドネットワーク研究会「OpenFlow祭」でも好評だったOpenFlowコントローラフレームワークTrema。TremaをVMWare FusionのLinux上で動かしてみたときのメモを残しておこう。OpenFlowとPlan 9の関係は?と聞かれたけど、これには触れないことにしてお…

FUSEでUNIX V6ファイルシステムをマウント

Lions本合宿のネタに、ユーザ空間でファイルシステムを作ることが出来るMacFUSEを使って、UNIX V6ファイルシステムをマウントできないかと考えていた。@7shiさんや@superhogeさんとは別アプローチとして。さっそくMacFUSEのソースコードをダウンロードし、ま…

SIMHのreadline対応

懐かしのOSで遊ぶために欠かせない計算機シミュレータSIMH。そのモニタモードをreadline対応してみた。例えば「PDP-11のブートストラップ」で示したように、実行時の解析を行うには、ctrl-eで入れるモニタモード?が非常に有用だ。ただし、このモニタモード…

デバイススイッチの実装

第11回Lions本勉強会にインスパイアされ、UNIX V6、V7そしてV1へさかのぼりつつ、カーネルとデバイスドライバの界面であるデバイススイッチの実装について考えてみた。UNIXではデバイスもファイルとして見せた方が汎用的で便利ではということで、スペシャル…

ls(1)の由来とか

TwitterのTLでもMulticsの話がぽちぽち出るようになったので、今日は関連する小ネタを。 UNIXで無意識で使っているls(1)コマンド。manページには"list directory contents"とか書かれているので、listの短縮形だとばかり思っていたら、Wikipediaによるとlist…

9front

取り上げなきゃと思いつつ時間が経ってしまったが、ようやくちょっと時間が出来たので、9frontをインストールしてみた。9frontはPlan 9からforkしたOSである。主要開発者がベル研から抜けてしまい、フルタイムでPlan 9に関わる人がいなくなってしまった現在…

buildrootでカスタムディストリビューション作成

先日、SH7706LSRにDebianをインストールしてみた。ただ、Debianは公式なサポートがされているわけじゃないので、使い続けるのが不安という一面があった。また、si-linuxのリポジトリからSH3版のetchが消えて、なぜかsargeにダウングレードしたことも大きい(…

渕一博と仮想マシン

渕一博。というと「第五世代コンピュータ」を率いた人という印象しかなかったのだが、彼が若い頃(1969年)にACM SOSPで発表した論文「A Program Simulator By Partial Interpretation」を読んで驚いた。これはまさに仮想マシンである。これはもっと知られてよ…

Multicsを振り返ってみたい

Coders at Workという業界の有名人に対するインタビュー集を読んでいるが、プログラミング寄りの切り口が面白い。さて、本書のインタビューイの1人としてKen Thompsonが登場する。ベル研でProject MACに関わる以前の話から、現在Googleで何をやっているかと…

SH7706LSRにDebian 5.0をインストール

はじめに 8000円弱でSH3で遊べるボード、SH7706LSRにDebian 5.0 (lenny)をインストールしたときのメモ。Linuxのポーティングに関する情報は、三岩さんのページにまとまっている。また、Debian etchを動かすという話はいくつか見つかるのだけど、さすがに古い…

findとgrepの合わせ技

カーネルなど大規模なソースコードを検索したい場合、findとgrepを使ったり、タグジャンプを使うだろう。Eclipse使う場合とか異論はあると思うけど、今日はfindとgrepの合わせ技について調べてみた。普段はxargsを噛ませて、 $ find . -name \*.c | xargs gr…

fork/execモデルの起源

UNIXを勉強すると、forkとexecが分離されていることに疑問を持ち、パイプやリダイレクトを使ってシェルを作り、その合理性に感動するというのが、お決まりのパターンになっているが、なぜこんな実装が生まれてきたのだろう。WindowsのネイティブAPIであるNtC…

フィッツの法則

GUIの定量的な評価手法であるフィッツの法則(Fitts's Law)について。この日記でGUIというと、rioとかacmeの話になるが、今日はもっと普遍的な話をしたいと思う。フィッツの法則が提唱されたのは1954年で、GUIというかコンピュータとも関係のない、人間工学…

sleep/wakeup関数のその後

先日、UNIX V6におけるsleep/wakeup関数のことを書いた。Plan 9もsleep/wakeup関数を持っていると書いたが、いまどきのOSではどのような実装になっているのか、フォローアップしていきたいと思う。 Linuxにはsleep_on/wake_upって関数がある。実際にはinterr…

シグナルの誕生

今日はシグナルの歴史を調べてみたいと思う。シグナルというのはUNIXにおけるプロセス間通信の一手段であるが、CPUにおける例外のように、プロセスにとって非同期に発生するものなので、その実装はいろいろ面倒くさい。したがっていろいろ問題もあり、長年の…

spl: set priority level

昨日はsleep/wakeupの話を書いたが、これだけあればカーネル内の同期・排他制御が完璧かというとそうではない。sleepするにはコンテキストが必要なので、割込みハンドラ内でsleepできない。そこで、割込み処理が動くとまずい箇所は割込みを禁止する必要があ…

sleepとwakeup関数

古典的なUNIXでは、カーネル内で走行中のプロセスがバッファやIOなどの共有資源にアクセスするときの同期機構としてsleepとwakeup関数を提供している。ちょっと注意が必要なのは、これらの関数はsleep(1)と直接動作に関係ないこと。実はV6にはsleep(1)を実装…

mkdirシステムコールの変遷

先週の@magoroku15さんのustで、システムコール番号の歴史が参照され、V7にはmkdirシステムコールがなくて、mknodとlinkを使っていたんだよねという話題が出てきた。それに触発され、mkdirについて調べてみたところ、試行錯誤の痕がいろいろ見られ面白かった…

dmrとkenが今年度の日本国際賞を受賞!

我らがDennis RitchieとKen Thompsonが「UNIXオペレーティングシステムの開発への貢献」の理由で第27回日本国際賞(ジャパンプライズ)を受賞していたことを知った。予定では二人の記念講演が行われるはずだったけど、今回の震災で中止になったとのことであ…

マウス対キーボード

(2011-03-24:しばらく編集できなそうなので、とっかかりの段階で公開)UNIXユーザがPlan 9を使おうと思ったときに、おそらくもっともフラストレーションを感じるのはマウス操作を多用しなければならないことだろう。マウス操作に対するもっとも多い不満は…

ひらメソッド for Plan 9

@n_kaneさんがPlan 9のソースコードをひらメソッドを使って読み始めたようだ。そういえば、g:plan9readingという試みもあったんだけど、断念してしまった。影ながら応援したい!! しかし、いきなりil.cとか読みに行くなど道を誤っているところに、一抹の不…

Plan 9 on KVMでもPCIパススルーしてみる

KVMでPlan 9が動くことは何回か紹介してみるが、今回はネットワークデバイスをPCIパススルーを使ってアクセスできるか試してみた。結論から言うと、Debian/squeezeの標準カーネル(2.6.32-5-amd64)はNGだけど、2.6.36なら動いた。使用したデバイスはIntelの…

v7x86 on QEMU

先日もLions' commentary on UNIX読み会に参加したりと、UNIX v6づいている。この前はxv6をVirtualBoxにインストールして遊んでみたが、次はUNIX v7をx86に移植したv7x86をQEMU on Ubuntu 10.10上で動かしてみた*1。こちらは(UNIX v7が多少なりとも移植性を…

Linux 0.01をUbuntu 10.10のQEMUで動かす

「Linux 0.01の設計と実装」という記事に触発されてLinux 0.01をUbuntu 10.10上のQEMUで動かしてみた。で、gcc 4.4.5ではコンパイルできないことがわかり、gdbでリモートデバッグした。(今回はPlan 9の「ぷ」の時も出てこないのであしからず。)オリジナル…

contribを使ってパッケージをインストールする

Plan 9に標準的なパッケージングシステムは存在せず、replica/pullを利用してシステム全体をベル研のリポジトリと同期するというのが一般的である。もちろん足りないツールはいろいろあって、sourcesリポジトリをみると、みんないろんなプログラムを作成した…

xv6 on VirtualBox

せっかくMacBook AirにVirtualBoxをインストールしたので、xv6をVirtualBoxで動かそうという話(わざわざそんなことをする人はいないだろうので、誰得なわけだが)。この日記を読んでいる人には説明の必要はないだろうけど、xv6はUNIX v6をx86に移植してOS講…