トップ «前の日記(2020-03-11) 最新 次の日記(2020-03-29)» 編集

日々の破片

著作一覧

2020-03-19

_ Xinuオペレーティングシステムデザイン

アスキーの鈴木さんからもらったのでXinuオペレーティングシステムデザイン改訂2版を読んだ。

読み始めると、どのページを読んでもおもしろい。OSが実行する個々の制御の必要性、デザイン上の戦略、実装の仕組みを丁寧に記述しているのでつまらないわけがない。厚さ(600ページある)とか気にしないのであれば手元に置いておきたい本の1つだ。

Xinuは、MinixやLinux(当時。今はUnix=Linuxみたいな感じであるな)などと同様な小さなUnixクローン(そもそもUnixが小さなMultixクローンなのがおもしろい。どんどん小さくなるのか? ――そうではないけど)で、学習用でもあるけど実用的な組み込み用OSでもあった。90年代の前半あたりに当時の勤め先の先輩がノンプリエンティティブマルチプロセス制御(OS側が実行中プロセスを停止して別のプロセスに切り替える制御方式。現在はほぼすべてがこれだが90年代はそうとも言えないのは16ビットWindowsがプリエンティティブマルチプロセス制御だったからだ)の適当なOSが必要でXinuを採用していたのを思い出す。

そういう実用的でソースコードが実在する手頃なOSの解説本としては現存する中でもっともよいものと思う。

筆者はこれまた1990年代にTCP/IPというかLAN以降に通信プログラムを書いた人なら間違いなく読んでいるダグラス・カマー(コマー)なので、この人を信頼せずに誰を信頼するというレベルで問題ない。訳も僕には良いものに感じる。

ただし、あまりに21世紀スタンダードに慣れていると以下にはとまどう。

・スレッドが無い

Xinuのプロセスは軽量プロセスという実質スレッド相当の実装になっている

(現在の普通に接するOSのプロセスを本書では重量プロセスと呼ぶ)

・しかしセマフォなどのメモリロックのための機構がある

プロセスが実質スレッドなので、スタック以外はメモリが共有されている

・要はみんなリングゼロで動く(僕が誤読していなければ)

逆にその分、えらく解説がシンプルになっているとも言えるので(しかしノンプリエンティティブマルチプロセス制御のためのプロセス切り替えなどの機構は持っていてその実装についての解説があるので知識的には十分に満たされる)悪いことではないと思う。

一方、以下はとても良い点だと思う。

・あらかじめIPスタックが組まれているので説明が多い

ブートのためのDHCPのクライアントコードが掲載されていたりとか。

・ついでにリモートディスクのような対ネットワークのデバイスドライバの説明もある

あと、本書のコードは当然のようにCで記述されている。C90にintのビット幅を示すマクロ定義を組み合わせたコードに見える。

Xinuオペレーティングシステムデザイン 改訂2版(神林 靖)


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え