今更ながらPlan 9 from Bell labsの紹介です。どちらかというと言語のGoを知ってる人向けに書きますね。
よくPlan 9と呼ばれますが、正確にはPlan 9 from Bell labsが正式名称です。
しかし、この記事でずっとPlan 9 from Bell labsと書き続けるのはしんどいのでPlan 9と今後書いていきますね。
Plan 9とはどういうOSかというと、今は結構普及した言語であるGoを開発したRob PikeやKen Thompsonが中心に開発したOSです。
言語の流れからすると、最初にCがあって、その後Plan 9の時にCも改修されPlan 9 Cがあって、その後Alefが出てきて、Plan 9の後継のOSとしてInfernoが開発された時の言語としてLimbo(その後Plan 9にもLimboを移植)が来て、そしてその開発者がみんなGoogleに行ってしまって、今のGoがある訳です。詳細はかどたさんのブログ記事の方が詳しいです。
Plan 9の特徴としてはたくさんありますが、幾つか列挙しますと、
・UTF-8を最初に実装されたOS
・/proc
・9P
・Cはcreatがcreateにちゃんと修正されている
・shellはrc
・Windows systemはrio
・namespace
・UNIXの流れとしては正統な系譜のOS
・CPUサーバー、ファイルサーバー、認証サーバー、ターミナルの4種類に分割可能
とか、挙げだすときりがないくらいですし、今のLinux等のOSに取り込まれてるものが結構多いですね。UTF-8や/proc,ファイルシステムを被せるNetBSDでいうunionfs的なnamespaceとか本当に挙げだすときりがないです。
そんなPlan 9の大きな特徴としてCPUサーバーを立てて、9PでCPUリソースを持ってくる事が可能という事で、ターミナルのCPUが貧弱であってもCPUサーバーのCPUが高速であれば問題ないというものです。それも前提としてはネットワークは無限に速いという前提です。
ファイルサーバーとの共有も9Pです。
9Pって実はいろんなものにこっそり入っていて、最近ですとChromebookにこっそり入っていて、アップデートの時に9Pを一瞬使っているらしいです。
そんなPlan 9ですが、Bell Labsが解散してから色々中途半端な状態で宙に浮いた状態でしたが、最近はforkした9legacy中心にだと思いますが、今年Plan 9のライセンスがLPLからMITに変更され、Plan 9 foundation中心に分散したパッチのマージしていくように見えます。
また、後継のOSのInfernoのライセンスも同時にMITに変更されて、こちらも同様の動きがみられます。
ちなみにInfernoの方はMMU無しでも動く組み込み系にも使えるOSですし、色んなOS上でも動く仮想OS的な物としても使えるものです。そちらはまた別の時にでも書きます。
次回は9PやInfernoの記事にしましょうか?
とりあえずは、こんな感じで。