タグ

ブックマーク / oraccha.hatenadiary.org (5)

  • Multicsを振り返ってみたい - Plan9日記

    Coders at Workという業界の有名人に対するインタビュー集を読んでいるが、プログラミング寄りの切り口が面白い。さて、書のインタビューイの1人としてKen Thompsonが登場する。ベル研でProject MACに関わる以前の話から、現在Googleで何をやっているかという話まで触れられている。もちろんPlan 9の話題も(Linuxへの評価に関連して)出てきて、Plan 9のドライバを書くときは、Linuxのドライバを参考にしたと答えている。 ベル研のProject MAC撤退に伴い、kenとdmrらはMulticsの開発をやめ、そのアンチテーゼとしてUNIXを作り始めたというのは、歴史としてよく語られる。が、MulticsとUNIXの間の技術の連続性にもっと着目してもよいのではないだろうか。Multicsは技術的には非常に野心的な、怪物システムであったが*1、UNIXを設計

    Multicsを振り返ってみたい - Plan9日記
  • fork/execモデルの起源 - Plan9日記

    UNIXを勉強すると、forkとexecが分離されていることに疑問を持ち、パイプやリダイレクトを使ってシェルを作り、その合理性に感動するというのが、お決まりのパターンになっているが、なぜこんな実装が生まれてきたのだろう。 WindowsのネイティブAPIであるNtCreateProcessや、その祖先とも言える*1VMSのsys$creprcは、意味的にはforkとexecが一体化されている。まぁ、こっちの方がプロセス生成という意味では自然なアプローチに感じられるが、sys$creprcの山のような引数を見ると、これを使ってプログラムを書く気は萎えてくる。input、output、errorって標準入出力のバインディングを変えるためだろうか。そうだとすると、UNIXモデルの方がシンプルで理に適っている。 fork、execはUNIX V1のころから存在するのだが、「The Evolutio

    fork/execモデルの起源 - Plan9日記
  • mkdirシステムコールの変遷 - Plan9日記

    先週の@magoroku15さんのustで、システムコール番号の歴史が参照され、V7にはmkdirシステムコールがなくて、mknodとlinkを使っていたんだよねという話題が出てきた。それに触発され、mkdirについて調べてみたところ、試行錯誤の痕がいろいろ見られ面白かったのでまとめてみた。 まず、V7のmkdir.cを読むと、mknodでinodeを作り*1、自分(".")と親("..")にlinkを張っているのがわかる。mknodはinodeは作るがファイルの中身はからっぽで、ディレクトリとしては正しいフォーマットではない。最低限自分と親ディレクトリへの参照が必要だからだ。そこで、linkを使う。UNIXファイルシステムのディレクトリエントリの構造については説明不要だよね。 mkdir(d) char *d; { char pname[128], dname[128]; registe

    mkdirシステムコールの変遷 - Plan9日記
  • UNIX v6 on simh - Plan9日記

    Lions' Commentary on UNIX読書会に参加した。いまだにLionsが大学の教科書として現役だという事実に驚いたが、読書会に集まる我々も五十歩百歩か。何はともあれ、一緒に読んだり教えたりしてくれるメンタがいれば、現代でも楽しめる一冊であることは確か。すでに読書会のメモがいくつか書かれているようだけど、@kotritさんがきっとまとめページを作ってくれるはずなので、期待! ここでは実際にUNIX v6が動いているところを見て理解の助けにしたいということで、PDP-11シミュレータsimhでUNIX v6を動かす方法について書いてみる。 PDP-11は古いマシンではあるんだけど、愛好者が多いのでウェブ上には非常に多くの情報が公開されている。シミュレータの開発や当時のディスクやテープのアーカイブもあるし、ソースコードも公開されている。最初はsimhのSoftware Kits

    UNIX v6 on simh - Plan9日記
  • ファイルロック - Plan9日記

    UNIXでは複数のプロセスが同時にファイルにアクセスできるが、自動的にはロックされないので、おそらく最後のプロセスが書き込んだ結果が結果的に残こることになる。これでは都合が悪いので(特に分散ファイルシステムや分散OSでは)、ファイルロックという仕組みが提供されている。UNIXではflockやlockf、fcntlが使われる。UNIXのファイルロックは基的にアドバイザリロック(advisory lock)と言って、プログラムがお行儀よく書かれていることが前提になっている。一方、カーネルによって強制的にファイルアクセスを排他制御する仕組みを強制ロック(mandatory lock)と呼ぶ。 Plan 9には強制ロックを実現する仕組みとしてファイルパーミッションを拡張している。exclusive (l)ビットがそれである。 % touch a % chmod +l a % ls -l a -l

    ファイルロック - Plan9日記
  • 1