フィッツの法則

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講…

Plan 9 on VirtualBox 4.0

12/22、VirtualBox 4.0がリリースされた。機能拡張の他、商用版がなくなってOSS版にパッケージが統一されたりしたそうな。詳しいことはいろんなソースをあたってほしい。これまで、VirtualBoxでPlan 9が動かないのかという質問に対して「No」と答えてきたけ…

PDP-11のブートストラップ

年の瀬も押し迫った頃、なぜかPDP-11のブートストラップが気になってしまったので、simhとPDP-11のプロセッサハンドブックを見ながら、調べてみた。今回は実機のイメージがあった方が理解しやすいと思い、Wikipediaから写真引用。これは2基のDECtapユニット…

pre K&R Cコンパイラ

UNIX V6のソースコードを読むときにネックになるものの一つがK&R以前のC言語の仕様である。これをpre K&Rと呼ぶ。マニュアル(「C Reference Manual」)も存在するので、興味のある人はどうぞ。ちなみにUNIX V7では、後にも触れるポータブルCコンパイラを使…

UNIX v6 on simh

Lions' Commentary on UNIX読書会に参加した。いまだにLions本が大学の教科書として現役だという事実に驚いたが、読書会に集まる我々も五十歩百歩か。何はともあれ、一緒に読んだり教えたりしてくれるメンタがいれば、現代でも楽しめる一冊であることは確か…

さくらVPSでPlan 9〜ネットワーク編〜

昨日はNICの認識に失敗するところまでしかできなかったが、@naobsdさんのおかげもあり、ネットワークが使えるようになった。これで本契約決定だなw e1000ドライバには二つの問題があって、一つはcache line sizeが0と返ってくる点、もう一つはEEPROMのread…

さくらVPSでPlan 9

いろいろ動かないなぁと探っていたんだけど、何のことはないパーティションIDをMINIXからPlan 9に変えるのを忘れていて、9loadがパーティションを見つけられなかったというオチで、結局MINIX3と同じアプローチでPlan 9をさくらVPSで動かすことができた。Grub…

ls(1)の実装からみるUNIXとPlan 9の思想の違い

lsはもっとも使用頻度の高いUNIXのコマンドだろう。あたりまえに使っているlsだが、よく考えると不思議な挙動がある。具体例を示すと、lsとls | catの出力が異なるのはなぜだろうか? lsの出力はターミナルの幅に合わせて多段に表示されるが、パイプを介す、…

さくらVPSでMINIX3

KVMベースのさくらVPSがあちこちで話題になっている。月額980円という値段やブラウザから利用できるコントロールパネルの出来具合もさることながら、KVMベースなので自分好みのOSをインストールできるところがマニア受けもしているようだ。社長自らがブログ…

Plan 9でVM床抜き

KVM環境を再整備したので、@go_vmさんのVM床抜きを試してみた。伝説のコミケ本「軽快なPlan 9」のあれである。ハイパーコールや/dev/kvmへのioctlを追加する方法の勉強にもなるので、Plan 9に興味なくても一読をお勧めする。基本的に問題なく動いたのだけど…

Debian/testing(squeeze)上でのKVM環境の構築

PCのOSをubuntu 9.10からDebian/testing(squeeze)に変えた。ついでにソースからKVM環境を作ってみたのでメモを残しておく。コンパイルに必要となるパッケージの記述は省略した。必要に応じてapt-get installすること。 カーネルパッケージ作成 普通にmake in…

Kerberos

直接Plan 9に関係する話題じゃないけど、Plan 9の認証でも基盤になる技術なのでKerberosについて少し調べてみた。KerberosはMITで開発された認証方式で、WindowsやMac OS Xなどでも使われている。Kerberosという用語はプロトコルだけでなくサービスやソフト…

クラウドOSについてもう一度考えてみる

SACSIS2010でNakajimaさんの講演を聞いたり、twitterでPlan 9カーネルをモジュール化できないかというつぶやきが流れていたりしたので、勢いで書いてみた。 マイクロカーネルの定義 以降、マイクロカーネルの話が出てくるので少し前置きを。マイクロカーネル…

Plan 9/9grid勉強会

3月のPlan 9勉強会に引き続き、@80nashiさんを講師に呼んで勉強会を開催した。当日の資料などは例によって探検隊のページに置かせてもらっている。今回のテーマは9gridとそのベースとなる認証、特にマルチドメイン認証の仕組みだった。この辺は興味はあって…

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

5/8にIIJで開催された第4回カーネル/VM探検隊に参加、LTしてきた。80〜90名ぐらいの参加者があったとのことで、懇親会もお店貸し切りだったし、大きなイベントになってきたなと感慨ひとしおだった。みんなあちこちでPlan 9に言及してくれたし、変態御用達OS…

contribアカウント

少し前にベル研のサイトのcontribアカウントをもらったので、それにまつわる話を書いておく。contribアカウントをもらうと、9fs sourcesで/n/sources/contrib以下にマウントされる自分の領域に書き込み権限が得られる。contribの内容は毎日アーカイブされ、h…

Mac OS XでPlan 9テイストを堪能

Plan 9のコマンドをUNIXに移植したPlan9portの存在については何度も書いているが、もっと日常生活にも使って行こうという話。9termとacmeを使えば、かなりPlan 9テイストが満喫できる。以前も書いたがRuss CoxはMac OS X上で9termとacmeを常用しているようだ…