3 ポイント 投稿者 GN⁺ 2024-06-09 | 1件のコメント | WhatsAppで共有
  • Xv6は、オペレーティングシステムの構造を学ぶために作られたシンプルな Unix 風の教育用 OS であり、MIT の学部科目 6.1810 で使われている
  • 2006年夏に開発され、その後 6.1810 の授業向けに RISC-V へ移植され、現代の教育環境に合わせられた
  • ソースとドキュメントは xv6-riscvxv6-riscv-book の Git リポジトリとして提供されており、自分でビルドして読むことができる
  • 設計と学習の文脈は Unix V6 と John Lions の Commentary on UNIX' 6th Edition に根ざしている
  • 元の Unix V6 コードまで併せて読むには、Lions の解説、V6 ソース、PDP11/40 Processor Handbook のような参考資料が役に立つ

Xv6 と 6.1810

  • Xv6はシンプルな Unix 風の教育用オペレーティングシステムである
  • 2006年夏に開発され、MIT の学部科目 6.1810 向けに RISC-V へ移植された

ソースと学習資料

Unix V6 原典を読むための参考文献

  • The PDP11/40 Processor Handbook は元の Unix V6 コードを理解するうえで有用な資料である
    • スキャン画像ベースの PDF はテキスト検索できない
    • 命令名で索引された Web 版 も提供されている

フィードバック募集

  • Xv6 の使用経験、授業への導入経験、導入を容易にするための改善点、うまく機能した点とそうでなかった点についてのフィードバックを求めている
    • 連絡先は 61810-staff@lists.csail.mit.edu

1件のコメント

 
GN⁺ 2024-06-09
Hacker News のコメント
  • MITでこの授業を受けたが、20/10でおすすめ。特にシステム系のバックグラウンドがない人に向いている。
    教材はかなり理解しやすく、演習は理解度を確認するのにとても良い。ただし最初の挑戦では、ネットワークドライバは飛ばしたほうがいいかもしれない。

    • この講義がオンラインで提供されているのか気になる。OpenCourseWareでは講義録画を見つけられなかった。MITのものではないが、xv6関連のYouTubeプレイリストは見つけて、かなり良さそうだった: https://www.youtube.com/playlist?list=PLbtzT1TYeoMhTPzyTZboW...
    • UCIでMITの授業のかなりの部分を取り入れて、ずっと易しくした授業を受けたが、それでもおすすめできる。
  • MITでこのOSを使う授業を受けたが、本当に素晴らしかった。
    今日も授業サイトを見て回ったが、実質的に独学でも受講できる。講義ノート、演習、各演習ごとのブランチがあるxv6リポジトリ、自分で実行する方法まで全部載っていて、公開度の高さに驚くほどだ。
    最初の演習: https://pdos.csail.mit.edu/6.1810/2023/labs/util.html
    近いうちに全課程をもう一度、自分で最後までやってみるつもり。

  • 大学のOS授業の多くのプロジェクトは、xv6オペレーティングシステム上に何かを作る形だった。
    そのうちの1つはxv用スケジューラを作るプロジェクトで、オペレーティングシステムのさまざまな構成要素を学ぶには間違いなく良い方法だった。

  • スペインのある大学では、Plan 9を教育用に使っていた、または現在も使っている。

  • タイトルを最初に見たときは、古いxv画像ビューアの新リリースかと思った: http://www.trilon.com/xv/

  • 以前からWindows NTカーネルを理解したいと思っていた。おそらく初期バージョンのほうが単純なので、そちらが良さそう。
    最初のバージョンはVMSに近いと聞いたが、本当なのか気になる。VMSの資料があるのかも気になるし、OpenVMSはオープンソースだと聞いたが、バージョンが高すぎるように思う。

    • NTカーネルの開発過程をよく知りたいなら、1996年の本Show Stopperを読んでみるといい。
      Dave CutlerがDEC内部でVMS関連プロジェクトを含む複数のプロジェクトを率いていたのは確かだが、Microsoft New TechnologyカーネルがVMSから受け継いだものは、設計やアーキテクチャ面での精神的な遺産くらいだった。
      DaveはDECでチームが追い出される前から、すでにVMSの大規模な刷新、または後継作に取り組んでおり、そのビジョンのかなりの部分はWindowsに移ったが、ミニコンピュータ側の堅牢な設計パターンを犠牲にした面もあった。
      CutlerはMSDOSチームを、間違った問題にスパゲッティ式の解決策を積み上げる初心者プログラマたちだと見ていたが、Bill GatesがOEM契約で市場をがっちり押さえていたため、BillはNeXTでSteveが作っていたものと競争できる本物のカーネルを彼に作らせるため、実質的に白紙小切手を渡した。
      そのため機能や形態の面でNTはVMSとまったく同じではなく、実装面でもまったく異なる。VMSにはきれいなC標準ライブラリとコンパイラ群があった。ただし、ミニコンピュータ側の人たちがマイクロコンピュータの世界で競争するために降りてきた流れだったとは言える。
      さらに詳しい雰囲気は、YouTubeのDave PlummerとCutlerのインタビューを見るとよい。
    • Windows Internalsの書籍シリーズ、昔のMSTech JournalとDDJの号、DigitalアーカイブのVMSマニュアルを見ればよい。
    • Windows 2000のソースコードはインターネットに流出しており、より新しいバージョンも流出している可能性が高い。実際に教育ツールとして使われたこともある。
    • 最初のNTバージョンがVMSに近いというわけではない。
      VMSの資料は非常に多く、もともと数メートル分の文書が付いてきた。今でも販売されており、無料のホビイスト向けVMイメージも入手できる。
      OpenVMSはオープンソースではなく、バージョンが高すぎるという話も事実ではない。
      質問する前に、前提を常に確認すべきだ。「AだからBが可能なのか?」と聞きたいなら、まずAが真かどうかを確認すべきだ。
    • OpenVMSはオープンソースだったっけ?
  • なぜUnix v6なのか気になる。なぜ50年前の設計で教えるのか分からない。
    オペレーティングシステムの基本であるスケジューリング、プロセス間通信、アドレス空間管理を教えるなら、マイクロカーネル設計のほうが良さそうに思う。

    • 現在広く使われている技術の先行技術を学ぶことは、私たちがどうやってここまで来たのか、どんなトレードオフがなぜ行われたのか、そして何を失ったかもしれないのかを学ぶ良い方法だ。
      後で新しい技術に触れるときにより深く理解できるし、今後のキャリアでも視野を広げてくれる。
      その歴史の一部を見逃した身としては、大学で学べていたら本当に良かったと思う。
    • 走る前に歩き方から学ぶ必要がある。Xv6は基本的だが、こうした概念を初めて見る学生が1学期でオペレーティングシステムの基礎を身につけるには、とても良い入門教材だ。
    • 多くの教授がOS授業にXv6を選ぶ理由は、優れた設計だからだけではないと思う。
      十分に良く、単純で、学生が他の科目も履修している1学期の中で教えやすいから選ばれることが多いのだろう。マイクロカーネル設計のほうが良いだけでなく、教えるのもより簡単という意味なのか気になる。
    • フォン・ノイマン・アーキテクチャは80年前のものだ。設計がどれだけ古いかがなぜ重要なのか分からない。今でも最も関連性が高く、広く使われているアーキテクチャならなおさらだ。
      Unix v6の基本的な抽象化は今でも有効だ。
      マイクロカーネルとモノリシックカーネルの核心的な違いは、ユーザー空間とカーネルの間でアドレス空間をどう共有するかだが、マイクロカーネル設計がなぜより良いのかよく分からない。広く使われていない設計をなぜ教えるべきなのかも疑問だ。
    • マイクロカーネルはソフトウェアエコシステムで重要な役割を果たしているが、私たちが触れる大半のソフトウェアはマイクロカーネルによって調整されているわけではない。
      インターネット上で動く大半のソフトウェアもマイクロカーネル上で動いているわけではなく、インターネットで入手できる大半のソフトウェアも同様だ。そうした授業では、カーネルを扱ったり仕事で出会ったりするカーネルを理解するための準備としては十分になりにくいように思う。
  • 独学する人がこれを実際に触ってみるには、どんなやり方が良いのか気になる。

  • Plan 9も、理解するにはかなり単純なコードベースだ。

    • Plan 9の設計判断の一部は尊重に値する。
      プロセスごとの名前空間、bind、すべてをファイルとして扱う方式は、他のUnix系OSではなかなか見られない優雅さを与えている。
  • 前学期のオペレーティングシステム授業でPintOSを使ったが、もっと深く掘り下げる第2部の授業があればよかった。