要約

  • Xinuは小規模ながら一通りの構成要素を備え、学生が段階的に構築して実験用ボードで起動できるOSだった。
  • Purdueのラボはボード割り当て、イメージ転送、シリアルコンソール接続を自動化した。コードを実行する経路は繰り返しやすくなったが、学生が何を学んだかを測定したわけではない。

Randy Bondが覚えているのは、ひとつの授業の場面だ。1984年春、Purdueで学部最終学年だった彼は、Doug Comerのオペレーティングシステムの授業で初版のXinu本を使った。数十年後、OSを基礎から組み立てる経験は、後に組み込みソフトウェアを書く自分にとって大きな学びだったと振り返っている。これは一人の学生の回想で、クラス全体を評価した研究ではない。それでも、Comerの教育上の賭けをよく表している。構造を追い、できあがったものを自分で起動できれば、OSは単なるAPIの集合ではなくなる。Purdueに残るBondの回想はその記憶を伝え、Xinuの資料はそれを支えた仕組みを示す。

教科書の序文は、よくある学びの空白から始まる。学生はOSが提供する機能を学んでも、内部構造をブラックボックスのままにしてしまうことがある。Comerの答えは、題材を小さくするだけではなかった。裸のマシンから始め、依存関係が見える順序で部品を積み上げるシステムを用意した。Xinuの教科書の序文では、プロセスとメモリの管理、同期、デバイス非依存の入出力、ドライバー、プロトコル、ファイルシステムが、機能一覧ではなく一つの実行可能な設計を構成するものとして説明される。

Xinuは小さいが、Purdueはこれを玩具ともUnixの別名とも説明していない。名前は「Xinu Is Not Unix」の略で、内部設計も異なるとサイトは注意を促す。教育上の主張はもっと限定的だ。小さなシステムでも一般的なOSの構成要素と抽象化の関係を見せられるため、授業で具体的な実装を追える。唯一の正しい設計を証明するわけでも、Xinuを組み立てられる学生が市販OSをすべて理解したと証明するわけでもない。Purdueのプロジェクト説明には、範囲と限界の両方が記されている。

実機ラボによって、教科書は図とソースコードの列から一歩進んだ。学生は通常のLinuxワークステーションでイメージをコンパイルしてリンクする。別のバックエンド群には実験用ボード、Ethernet、遠隔再起動装置、シリアルマルチプレクサが接続されていた。ラボのソフトウェアが空いているボードを割り当て、イメージを転送し、コンソール画面を開いて起動する。つまり、コードを変更するたびにハードウェア経路を手作業で組み直さず、動作するシステムへ戻れる。Purdueのラボ説明はこの手順を記録している。

この前後工程の分離こそ、授業を支える運用面だ。前面の端末は普段の開発ツールを保ち、バックエンドは実機実行を共有資源にする。割り当てと転送の自動化は繰り返しの設定作業を減らすが、学生の考える仕事を自動化するわけではない。起動に成功した事実が示すのは、あるイメージがあるボードに届き、実行を始めたことまでだ。スケジューリング、メモリ、割り込み、デバイスアクセスを学生が理解した証拠にはならない。観察できる実行と、理解が示されたことの境目では、主張を控えめにする必要がある。

ハードウェアへのアクセスも設計条件だった。教科書の序文では、選んだGalileoとBeagleBone Blackの価格は執筆時点で50米ドル未満と記される。Purdueの年表によると、2014年のラボ再設計ではIntelから寄贈されたGalileoボード120台と、数台のBeagleBone Blackが使われた。いずれも当時の情報であり、現在価格でも学生一人あたりの費用でもない。資料はボードの稼働率、待ち時間、故障率、サポート費用を公開していない。低コストの共有ラボを構築したことは分かるが、全体の経済性までは計算できない。

この仕事はComer一人の成果でもなかった。Comerが本を書きシステムを導いた一方、序文は移植やドライバーを担った大学院生に謝意を示し、Galileo向けドライバーと多段階ダウンロード機構を作ったRajas KarandikarとJim Lembkeを挙げる。問題を見つけてコードに貢献した学生たちの名前も記されている。Purdueの年表は、完全なTCP/IP実装にComerとDave Stevensが協力したことも紹介する。Xinuを一人の発明として描けば、資料に残る教育モデル――学生や協力者が実際に手を加えること――を見落とす。

仮想マシンという経路もあるが、実験用ボードと同じではない。Purdueによれば、VirtualBox版では一部のメモリマップドI/OをポートマップドI/Oに合わせた処理に置き換え、Ethernetドライバーも変更している。VMはハードウェアの壁を低くする一方、学生が試すインターフェースを変える。結果を報告するときには、実機とエミュレーターのどちらを使ったかを明記すべきだ。

根拠をもって語れる遺産は明確だ。Xinuは読み解ける実装と、ソースからハードウェアまでを繰り返す道筋を結びつけ、APIの表面より多くのOS構造を学生が観察できるようにした。Bondの証言は一人の経験を伝える。プロジェクト資料はコード、ラボの構成、報告された利用例を示すが、対照研究による学習向上も、後年の採用状況を網羅した独立調査も示していない。コードを動かせば授業の主張を試せる。しかし起動ログが教育効果の研究になるわけではない。

出典