技術

[xv6 #6] Chapter 0 – Operating system interfaces – Real world

テキストの15〜16ページ

本文

Unixを操作するための、標準のファイルディスクリプタ、パイプ、便利なシェルの書式の組合せは、汎用的で再利用しやすいプログラムを書くことにおいて、非常に役立った。
そのアイデアは、全ての”software tools”の文化と、初期の頃”scripting language”と呼ばれていたシェルを花開かせ、”Unixの素晴らしい力と人気”の原動力となった。
Unixのシステムコールのインターフェースは、BSDやLinuxやMac OS Xの中で今日も存続し続けている。

最近のカーネルは、xv6よりもっとたくさんのシステムコールやカーネルサービスの類を提供する。
大部分においては、最近のUnix由来のOSは、今までの節で説明したconsoleデバイスファイルのように、特殊なファイルとしてデバイスを提供するような、初期のUnixのやり方には従っていない。
Unixの作者たちは、Plan9の開発に移った。
Plan9は、最新の設備、ネットワークをまとめること、グラフィック、ファイルやファイルツリーのようなその他のリソースのために、”全てのリソースはファイルである”というコンセプトを適用したOSである。

インターフェースとしてのファイルシステムは、とてもパワフルなアイデアとなり、そのアイデアはごく最近インターネット(World Wide Web)上のネットワークリソースに適用された。
そのアイデアはパワフルではあるが、違う方式のインターフェースを採用してるOSもある。
Multics(Unixの先祖)は、メモリの中のデータとディスクの中のデータの区別が曖昧で、とても異質な感じのするインターフェースの作りになっている。
このMulticsのデザインの複雑さは、よりシンプルな何かを作ろうと思っていたUnixの設計者に直接の影響を与えた。

このテキストは、xv6のUnix的なインターフェース(しかしそのアイデアとコンセプトはUnixだけじゃなくもっと広く適用可能である)をどう実装するのかを考察している。
どのOSも、ハードウェアの上で複数のプロセスをお互いに分離し、なおかつプロセス間通信の仕組みによって連携させながら実行しなければならない。
あなたはxv6を学習した後、さらにより複雑なOSを調査し、その中に隠れてるxv6のコンセプトを観察すると良いだろう。

感想

Unixより新しいPlan9と、Unixより古いMulticsが出てきました。
Multicsは使ったことがありません。
数年前にMITがソースを公開したらしいので、使ってみるのもおもしろいかもしれません。
ただ、開発環境を整えたり、実行するためのエミュレータを用意するのが大変な気がします。
x86に移植するのとどっちが大変でしょうね。

Plan9は数年前に使ってみたことがあります。
ただ当時は単に使ってみただけでそのコンセプトを感じるというところまで至っていませんでした。

歴史的な話で、短いながらちょっと読むのに苦労しました。
技術的な事なら、謎の言い回しがあっても、ソース読むなり他所の情報をあたるなりすれば、裏がとれるのでその点は楽かも。
まぁ今回の部分も、かなり有名な歴史なので色々裏をとりながらやりましたが、やはりかなり適当な翻訳です。

さて次回はChapter 1ですね。
x86CPUの仕組みからブートローダの仕組みまでが範囲みたいです。
本格的になりますね。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示