16 ポイント 投稿者 GN⁺ 2023-08-13 | 2件のコメント | WhatsAppで共有
  • Linux カーネルは3,600万行の巨大なオープンソースだが、最初のバージョンは 10239 行だった(コメント・空行を除くと 8670)
  • Linux v0.01 はその簡潔さゆえに、Unix スタイル OS カーネルの内部を学ぶための良い出発点
  • v0.01 には 66 個のシステムコールしかない
    • ファイル/ディレクトリの作成、削除、書き込み
    • chmod, chown, pipe, fork, execve
    • Socket の概念が導入されていないため、ネットワークをサポートしない
    • mount はまだ実装されていない
  • Intel 386 アーキテクチャ向けにハードコードされている(MINIX の作者がこれを批判した)
    • strcpy が i386 命令を使ったアセンブリで書かれている
  • PC/AT 機器のみをサポート
    • CMOS, PIT(Programmable Interval Timer), ATA(PIO), VGA(テキストモード), Intel 8042 PS2 キーボード(アセンブリ)
    • まだ drivers フォルダもなく、サブシステムにハードコードされている
  • Linus が元々付けていた名前である "FREAX" Kernel と書かれたコメントが Makefile にある
  • ファイルシステムは MINIX のみをサポート(ext は MINIX に着想を得た)
  • スケジューラのコードに「この部分はあらゆる環境で動作するかなり良いコードなので、変更する理由はないはず!」というコメントがある
    • もちろん現在ではさまざまな改善やアルゴリズムが導入されて修正されているため、この予言は外れた
  • カーネルパニックの実装部はわずか 5 行: "カーネルパニック: 原因" を出力し、for(;;) でシステムを停止
  • カーネル空間で fork(2) を呼び出している箇所がある
    • そう見えるが、実際にはその前にある move_to_user_mode() がトリック
  • Linus は 8Mb を超える RAM を搭載した機器を持っていなかった(自分は持っておらずテストしていないので、持っている人がうまくやってほしいと…)
  • 現代のツールチェーンではコンパイルが難しい
    • GCC は下位互換性があるとはいえ、それだけでは十分ではない
    • Linus には -mstring-insns というオプションを持つ独自の GCC があった(おそらく x86 の文字列命令をサポートするオプションのようだ)

2件のコメント

 
arfwene 2023-10-31

興味深いですね

 
GN⁺ 2023-08-13
Hacker Newsのコメント
  • 現代のLinuxの複雑さについての議論で、Linux v0.01のコード行数の4500倍にも達する複雑さが本当に必要なのかという疑問が提起されている。
  • 読者たちは、Linuxの各主要ソフトウェアモジュールで使われているコード行数と機能のグラフィカルな分析を見たいと考えている。
  • Linux、SQLite、vimのようなクラシックなコードベースを読むことが勧められており、これらは主に一人の人物によって書かれ、非常に成功した、あるいは大きな影響力を持っていた。
  • Linuxのcounterの動作についての説明があり、タスクが実行可能でない場合は 2 * 優先度 まで指数的に減少するという主張がある。
  • RedhatがIPO時に株主へ0.01ソースコード入りのポスターを送ったという話があり、読者たちはそれを時々読むのが面白いと感じている。
  • GCC (GNU Compiler Collection) の後方互換性についての議論で、GCCは長い間、自身の以前のバージョンをコンパイルできなかったというコメントがある。
  • 読者たちは、より深く理解し読み進めるために、注釈が豊富に付いたLinux Kernel Source Codeへ案内されている。
  • Linuxのような大成功したプロジェクトの最初の動作バージョンを読むことは、理解するうえで良い方法だという提案があり、通常は多くの抽象化や一般化なしに、最も重要な中核機能だけが含まれている。
  • 一部の読者は、ソースコードでタブの代わりにスペースが使われていることに気づき、Torvaldsは後にタブ支持者になったのかもしれないと推測している。
  • コード内のコメントの深さと頻度が評価されており、読者にとってアクセスしやすくなっていること、また誰かがコンパイルに成功したのか気になっている。