タグ

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

  • はじめてのOSコードリーディング - Plan9日記

    Lions' Commentary on UNIX 読書会で親交のあった@superhogeさんが「はじめてのOSコードリーディング」を上梓される(「はじめてのOSコードリーディング」というを出版します)。読書会の活動が書籍として結晶したことに感動するし、自分が生まれた頃のソースコードの解説が今出版されるというのも感慨深い。 OSに限らず技術には理論と実践の両面がある。UNIX V6やLionsが出た頃は、OSの黎明期であり、その理論については論文などで知ることができたけど、実際にどのように作られているのか、その方法についての情報は手に入らなかった。そこにLionsが受け入れられた背景がある。翻って現在は、実践的な情報が氾濫している。で、どこから初めていいのかわからず思考停止に陥ってしまいがち。まず簡単なところ(しかし、トイOSではなく実用に耐える(た)OS)から一歩踏み出してみよ

    はじめてのOSコードリーディング - Plan9日記
    ogijun
    ogijun 2013/01/04
    おおお、これ読みたい!
  • クラウドOSについてもう一度考えてみる - Plan9日記

    SACSIS2010でNakajimaさんの講演を聞いたり、twitterでPlan 9カーネルをモジュール化できないかというつぶやきが流れていたりしたので、勢いで書いてみた。 マイクロカーネルの定義 以降、マイクロカーネルの話が出てくるので少し前置きを。マイクロカーネルかモノリシックカーネルかという議論は正直どうでもいいし、厳密な定義なんてないんじゃなかいかと思うが、ここでは、OSの機能とそれを支える機構を分離したカーネルアーキテクチャと定義したい。もう少し具体的に言うと、一般的に前者の機能部分はOSサーバ(OSパーソナリティ)というユーザランドプロセスとして実装されるが、これらのOSパーソナリティの実現基盤としてのカーネルをマイクロカーネルと呼ぶことにする。 この定義を当てはめると、Plan 9はマイクロカーネルとは言えない(「Plan9はマイクロカーネルか?」)。 クラウドOSとかマ

    クラウドOSについてもう一度考えてみる - Plan9日記
    ogijun
    ogijun 2010/06/09
  • gnotの由来 - Plan9日記

    gnotはPlan 9端末のデフォルトホスト名であり、この名前は何に由来しているかと疑問に思っていたのだが、意外なところからわかった。 事の発端は、@__ciruzzo__さんからAT&Tのターミナル630を使ったことがあると聞いたことだ。630というのはRob Pikeがベル研で作ったグラフィカルターミナルBlitの後継機である。次の写真は630のカタログから拝借したものだが、赤いマウスがなんともかわいい。と思ったらボタンが日人にはとても重すぎて使えたものではなかったそうな。 Blitの名前はグラフィックオペレーションbitblit*1に由来する。BlitはMC68000、256KB RAM、24KB ROM、800x1024のポートレート型のディスプレイとマウス、キーボードを持ち、UNIXとはRS-232Cで接続されていた*2。Blitにはmpxtermと呼ばれる小さいOSが動作し、

    gnotの由来 - Plan9日記
    ogijun
    ogijun 2010/03/01
  • Xの起源に分散OS - Plan9日記

    UNIXのGUIがいまいちな元凶にX Window Systemがあるけど、twitterで昔話に花が咲いて、hutaiさんにいろいろ教えてもらったので忘れないうちにまとめておく。 今時のLinuxなどのXサーバはX.Orgになっていると思うが、それ以前のXFree86を含め、これらはX11、つまりX Window System version 11のシステムである。version 11というからにversion 1から歴史は始まった訳で、それが1984年頃の話。プロジェクトの中心人物はMITでアテナプロジェクトを推進していた*1アテナプロジェクトのJim GettysとMIT CSAILのBob Scheiflerだった。Xはアテナプロジェクトの一部として、ハードウェア/ベンダ独立なグラフィックスシステムを実現するために開発がスタートした。プロジェクトでは最初分散OS Vで開発されたW

    Xの起源に分散OS - Plan9日記
    ogijun
    ogijun 2009/10/14
  • カーネルを読んでみる - Plan9日記

    UNIXカーネルがC言語に書き換えられたのは3rd editionであり1973年のことなので、このバージョンのソースコードはPDP-11のフルアセンブリである。しかし、4221行とコンパクトだし、コメントも満載なので、アセンブリに対するアレルギーがなければ、pre K&R Cの文法に惑わされなくてよい分、V6カーネルよりも読みやすかったりして。どちらにしろPDP-11アーキテクチャの理解がある程度必要だけど。Gordon BellのページにPDP-11 handbookのコピーがあったので、興味がある人はそちらもどうぞ。 まずはシステムコール呼出しから。次のコードは、cat.sのopenシステムコールを呼び出す部分の抜粋だ。 2: mov r0,0f sys open; 0:..; 0システムコールの実現には、sys命令によるトラップを利用する。この際にパラメータをどのようにユーザからカ

    カーネルを読んでみる - Plan9日記
    ogijun
    ogijun 2009/08/03
  • diffのアルゴリズム - Plan9日記

    ふと見つけた「あなたが一番好きなアルゴリズムを教えてください。また、その理由やどんな点が好きなのかも教えてください」を読んで、diffのアルゴリズムを調べてみた。2つのファイルの違いを見つけるには、共通する部分が最長になるペアを見つければよい。これはLCS (Longest Common Subsequence)問題と呼ばれる。LCS問題の最適解は動的計画法を用いて求めることができるが、計算時間、メモリ使用量ともにO(MN)になる*1。これより早く、また小メモリで実行できるようにいろいろなアルゴリズムが提案されている。 テキストを比較するdiffというUnix系のコマンドがありますが、これは実は高度に数学的なエディットグラフというアルゴリズムが使われています。 [1] E.W.Myers, "An O(ND) difference algorithm and its variations"

    diffのアルゴリズム - Plan9日記
    ogijun
    ogijun 2009/07/04
  • Small is Beautiful - Plan9日記

    I have made this letter longer than usual because I lack the time to make it shorter. ―Blaise Pascal If I am to speak ten minutes, I need a week for preparation; if fifteen minutes, three days; if half an hour, two days; if an hour, I am ready now. ―Woodrow Wilson ミニマリストカーネルの次は、ミニマリストSchemeのハナシ。Chibi-SchemeというR5RS互換のScheme処理系の作者であるAlex Shinnさんが「Small is Beautiful」という記事を書いている。 ピカソの抽象画に始まり、ユークリッドの原論

    Small is Beautiful - Plan9日記
    ogijun
    ogijun 2009/06/29
  • Xen domUカーネルのダイエット - Plan9日記

    懲りずに「KVMに特化したミニマリスト・カーネル」のXen版。今時のディストリビューションはdom0未対応なので、CentOS 5.3 (kernel 2.6.18-128.1.6.el5)を使った。Xenのバージョンは3.0.23.1.2-128.1.14.el5と古い。ゲストOSはDebian 5.0.1 (kernel 2.6.26-2-xen-686)。 ダイエットの結果、カーネルサイズは900KBを切った。詳細はコンフィグファイルを見てもらうとして、PCIデバイスをはずしてもちゃんと動くのね。ちょっと驚いた。起動も5秒。ところでbootchartを見るとsleep(1)が呼ばれているようなんだけど、これは何だろう? rootfsはddでファイルを作って、mkfs.ext3 & debootstrapでDebian lennyをインストールした。カーネルは.debを展開して別途作成

    Xen domUカーネルのダイエット - Plan9日記
    ogijun
    ogijun 2009/06/24
  • KVMに特化したミニマリスト・カーネル - Plan9日記

    Native Infernoをビルドしてみて、そういえば昔はLinuxも1FDディストリビューションとかあって、フロッピーディスクに収まるぐらい小さくできたんだよなぁと昔を懐かしんでいた(嘘)。Ubuntu 8.10のカーネルはvmlinuzで2.3MB強で、さらにモジュールの方が容量的には一桁大きい。さて、このような最新の(肥大化した)Linuxカーネルでもフロッピーディスクに収まるぐらい小さくカスタマイズできるものだろうか? ソフトウェアは基的に単調増加するもので、肥大化の運命は避けられない。とはいえ、コア部分はフロッピーディスクサイズに収まるよね? しかし、いまどきのPCにフロッピーディスクなんて付いてないし、1FDディストリビューションなんて作っても現実的じゃないので、仮想化環境に特化するとどれくらいカーネルが小さくできるか挑戦してみた。ただし、ssh経由でログインできるようにネ

    KVMに特化したミニマリスト・カーネル - Plan9日記
    ogijun
    ogijun 2009/06/24
  • acidまめ知識 - Plan9日記

    acidはacmeから使う 「gdb豆知識」で、「gdbemacsから使うのが正しい姿」説が語られている。Plan9の場合、特別な連携がなされているわけじゃないけど、ここでは「acidをacmeから使うと便利」という話を書こうと思う。具体的には、スタックトレースすると、次のようにアドレスと一緒にソースのファイル名と行番号が表示される。 acid: stk() pread()+0x7 /sys/src/libc/9syscall/pread.s:5 read(fd=0x4,buf=0x2f428,n=0x200)+0x2f /sys/src/libc/9sys/read.c:7 Read(fd=0x4,buf=0x2f428,cnt=0x200)+0x1f /sys/src/cmd/rc/plan9.c:500 emptybuf(f=0x2f418)+0x2a /sys/src/cmd/r

    acidまめ知識 - Plan9日記
    ogijun
    ogijun 2009/04/26
  • Better is the enemy of good - Plan9日記

    <よりよく>することは、<よい>ことの敵である -- フォン・ブラウン これはV2ロケットの開発者にしてアポロ計画の立案者であったフォン・ブラウン氏の言葉である。 クリステンセン的に読めば、「持続的イノベーション」から「破壊的イノベーション」は生まれないということだろうか。 東大宇宙航空研を長年率いてこられた斎藤成文氏の著書(初の国産人工衛星「おおすみ」打ち上げまでのトラブルシューティングの物語である)では、この言葉を次のように評している。 サブシステムの担当者が自分の受け持ちの部分をよりよくしようとするが、そうするとシステムの全体としての信頼性はバランスを失して悪くなる これはソフトウェアにもあてはまるし、まさにエンジニアリングの質を言い表している。特に息の長いシステムソフトウェアはアプリケーションのニーズやハードウェアの進化に合わせて、リバランスする必要があり、エンジニアの飯のタネは

    Better is the enemy of good - Plan9日記
    ogijun
    ogijun 2009/04/22
  • クラウドOS - Plan9日記

    Google Moderatorには、Googleエンジニアが質問に答えるAsk a Google engineerというページがある。ここでLinuxのAndrew MortonやPythonGuido van Rossumと一緒に、UNIXやPlan9の開発者として有名なKen Thompsonが質問に答えている。将来のOS像についても軽く触れていて興味深い。詳細は実際に目を通してもらいたいが、いくつか抜き出してみる。 まずは、時間をさかのぼることができたらUNIXの何を直したいかという質問から。creat「e」とお約束の答えをした後に、 ポータビリティ イーサネットとIPよりもよい通信 プロセスごとの名前空間 ファイルシステムへのリモートアクセスプロトコル を挙げている。1、3、4はPlan9で実現されている。2はどんなものを想定しているんだろう?Plan9にもILがあったが、成

    クラウドOS - Plan9日記
    ogijun
    ogijun 2009/04/18
  • Plan 9初心者ガイド - Plan9日記

    Michael A. Covington 2008年5月28日 訳者注 オリジナルはA Plan 9 Newbie's Guideである。著者のMichael Covington氏はUniv. of Georgiaの学生で、インターンか何かでCoraidで働いたときに書いたようだの先生で、Coraidのために書いたものだ。訳したバージョンはちょっと古いものなので、できればオリジナルを参照されたい。 2008年末に少し訳したが、今は完訳する時間がないので、とりあえず公開してしまうことにした。 はじめに この文書は何か? これは私自身がCoraidで始めた経験に基づいた、Plan 9オペレーティングシステムのユーザインタフェースに関するクイックスタートガイドである。具体的には、Coraidで実際に使った設定を記述している。UNIXと商用GUIWindowsMacOS、最近のLinux)に関

    Plan 9初心者ガイド - Plan9日記
    ogijun
    ogijun 2009/04/05
  • UTF-8小話 - Plan9日記

    UTF-8Wikipediaに書かれている通り、 当初は、Plan 9で用いるエンコードとしてベル研究所で考案された。 ものだけど、最近古屋で見つけた「インターネットヒストリー」の村井純先生のあとがきに気になる記述があった。 ちょっと長くなるけど引用する。 かなり昔の話だが、ベル研のUNIXを作ったオペレーティングシステムを担当していたグループにオペレーティングシステムについての講演を頼まれたときに「日語」の話をしたことがある。正直にいうと、ケン・トンプソンやデニスリッチなど、コンピュータ界のノーベル賞といわれるチューリング賞をとった錚々たるメンバーを前にして、当時「ただの研究者」であった自分がオペレーティングシステムについて何を話したらよいのだろうと悩んでしまった。結局開き直って話すことにしたのが漢字の問題だったわけだ。しかし、このときの講演の内容が、彼らにとっては1バイト1文字と

    UTF-8小話 - Plan9日記
    ogijun
    ogijun 2008/10/07
  • OSとアーキテクチャ - Plan9日記

    コンピュータアーキテクチャのエッセンス (IT Architects Archiveシリーズ) 作者: ダグラス・E・カマー,Douglas E. Comer,鈴木貢,中條拓伯,仲谷栄伸,並木美太郎出版社/メーカー: 翔泳社発売日: 2007/06/01メディア: 単行(ソフトカバー)購入: 2人 クリック: 107回この商品を含むブログ (21件) を見る 「コンピュータアーキテクチャのエッセンス」というを読んだ。いろいろ不満もあったが、予想以上に面白かった。著者のカマー教授はXinuと呼ばれる*1、教育用のUNIXモドキOSなどの研究で知られる。余談だけど、私が最初にTCP/IPの実装を勉強したのも、カマー教授の教科書だった。 さて最近、とある大学の先生と「OSをスクラッチから書くというのは研究テーマになりにくい」「今、スクラッチから書くなら、VMMあたりが落としどころか」などとい

    OSとアーキテクチャ - Plan9日記
    ogijun
    ogijun 2008/05/22
  • IWP9まとめ - Plan9日記

    時間が空いてしまったけど、ウェブ上のリソースを集めてみる。 オフィシャルページ 写真1 写真2 写真3 ビデオ1 ビデオ2 Unix and Beyond: Themes in Operating Systems Research Dennis Ritchie氏のスライド。Plan9のスクリーンショットがあるけど、日語のフォントが欠けてますよ。Unixは「ローカルファイルシステムをどのように表現するか?」という問題に対する構造的なアイデアから出発し、Plan9は「(ローカル、リモートにかかわらず)資源とどのように対話するか?」という問題に対する構造的なアイデアから出発した。 Russ Cox: Talks 「Acid Trips」、「Threads without Locks」というチュートリアル二。 AcidはPlan9標準のデバッガだけど、プログラミング言語としての一面も持つ。ちょ

    IWP9まとめ - Plan9日記
    ogijun
    ogijun 2007/12/17
  • ソフトウェアの単純さ - Plan9日記

    UNIXの代表的なプログラムにcatがある。Wikipediaから引用すると、 catはUNIXの標準コマンドであり、ファイルを連結させたり表示したりするのに用いる。catは連結することを意味する「catenate」の略である。 (中略) UNIXファンの間では、cat(1)はユーザインターフェースデザインのよい手とされている。catはファイルの内容に空白やヘッダのような余分なものを一切付加せずに提供してくれるためであり、またテキストファイルのみならずどんな種類のデータに対しても正しく動作するためだ。 UNIX嫌いの間では、cat(1)は悪いユーザインターフェースデザインの正統な手とされている。それはこの悲しげなまでにわかりづらい名称のためである。catは、ファイルの連結(concatenate)に使うよりもむしろ標準出力への出力に使われることの方がはるかに多い。後者の使用法に対するc

    ソフトウェアの単純さ - Plan9日記
    ogijun
    ogijun 2007/10/16
  • Plan9 on BlueGene/L - Plan9日記

    「QEMUとXen3の比較」あたりの時期に、Plan9をBlueGene/Lへポーティングしていることを知ったのだけど、OSNewsの記事になっている。USENIXのポスターセッションでライブデモが見られる予定とのことだ。そういえば、9fansにUSENIX会場でBOFやるぞってメールが流れていたな。 Plan 9 Running on Blue Gene/L (OSNews 2007-06-18) 開発者のblog Grave Robbers From Outer Spaceで、スクリーンショットも見られる。Infernoも動いているようだ。ところで、このエントリに張られているBlueGene/Lの筐体写真は物かな?だとしたらかなり愉快。 確かこのプロジェクトはUS DOEのスパコン用OS研究プロジェクト「FAST-OS」の一環で行われていたはず。日のペタスケールコンピューティングと

    Plan9 on BlueGene/L - Plan9日記
    ogijun
    ogijun 2007/06/20
  • Concurrency/message passing Newsqueak - Plan9日記

    Newsqueakといっても、広く知られているSmalltalk系のSqueakではなくて、Limboの先祖にあたるCSP(Communicating Sequential Processes)ベースの並行プログラミング言語のこと。Newsqueakはインタプリタだったけど、LimboはJIT技術を使っている。当然、GoogleのSawzallもその影響を受けているみたい。 Google TechTalkにおけるRob Pike氏の講演が、Google Videoに投稿されている。まだ見てないけど、興味深かそう。 http://video.google.com/videoplay?docid=810232012617965344 Newsqueakで検索すると、増井さんのサーベイページの次にあろはさんの「Inferno のチャネルシステム」がヒットする。チャネルはPlan9カーネルでも重要

    Concurrency/message passing Newsqueak - Plan9日記
    ogijun
    ogijun 2007/05/19
    あとで見る
  • 10のPlan9小技 - Plan9日記

    10のUNIX小技に反応してみる.Plan9のコマンド群はUNIXに近いが,かなりミニマルなセットなので,使いはじめると,あれもない,これもないってことになる.rcをまともに使いこなしていないので,勉強がてら調べてみる. 1. ディレクトリの作成 mkdir -pは使えるけど,複雑な例の方はどうするのかな? $ mkdir -p a/{lib,src,doc/{html,pdf,txt}}配列を使ってこんな感じ?ちょっと苦しい. % tmp=(html pdf txt); dir=(lib src doc/$tmp); mkdir -p a/$dir(追記: 2007-03-09) 結合演算子^を使って,配列を繋げばいいのね. % mkdir -p a/^(lib src doc/^(html pdf txt))2. tarの解凍先を指定する tarの引数が違う.perl - Yet An

    10のPlan9小技 - Plan9日記
    ogijun
    ogijun 2007/01/15