ジョン・ライオンズ による『UNIXオペレーティングシステム第6版解説』(後に『Lions' Commentary on UNIX 6th Edition』[ 1 ] [ 2 ]として再発行され、一般に「ライオンズブック」と呼ばれている)は、1976年に出版された非常に影響力のある[ 3 ]出版物で、第6版Unixコンピュータオペレーティングシステムの「常駐核」 [ 4 ](つまりカーネル)ソフトウェアのソースコードに関する分析解説と、 AT&Tベル研究所の著者から入手したソースコードのライオンズによるフォーマットと索引付けが施されたコピーが含まれています。
ライオンズの作品は、出版プラットフォーム向けの移植可能なコードとしてのUNIXの初期の成功例であり、大学で移植されたコードを実行するシステム上でUNIXツールを使用して組版され、そのコードは彼が文書化したコードと類似していた。[ 5 ]
コンピュータサイエンス分野で最も頻繁にコピーされた書籍であると推測されている。[ 6 ]: xi出版から年月が経っているにもかかわらず、ライオンズの著書はシンプルで高品質なコードに関する優れた解説書として今でも高く評価されている。
ライオンズの作品は、最近では1996年にピアツーピアコミュニケーションズによって再版され[ 6 ]、他の団体によってさまざまなメディアで流通、再作成、または再構築されてきた[ 5 ] 。


ソースコードと解説は、1976年5月にニューサウスウェールズ大学のライオンズのコンピュータサイエンスコース(6.602Bと6.657G、本書の序文で言及されている)の講義ノート[ 4 ]として初めてまとめられた後、 1977年に書籍として出版された。
UNSWは、1974年にケン・ロビンソンがベル研究所のデニス・リッチーに問い合わせたことに応えて、1975年にUNIXのソースコードを入手した。 [ 7 ]ベル研究所はAT&Tの子会社であり、 1956年の同意判決によりAT&Tは他の分野で事業を行うことが許可されていなかったため、ソフトウェアを販売することはできなかったが、逆説的に、Unixやトランジスタなどの発明のライセンス供与は義務付けられていた。AT &Tの別の子会社であるウェスタン・エレクトリックがライセンスを管理していた。1977年から、v7以降のライセンスでは、AT&Tは教育用のコード解説書を禁止し、ライセンスごとに印刷されたライオンズ解説書のコピーを1部のみ許可した。
UNIXユーザーグループであるUSENIXのニュースレター「UNIX News」は、1977年3月号で、UNIXライセンス保持者向けに本書が入手可能になったことを発表した。[ 4 ]
この本の人気に追いつくのが難しかったため、1978年までにはAT&Tベル研究所からしか入手できなくなっていた。[ 8 ]
1979年6月にAT&TがUSENIXでUNIXバージョン7を発表した際、学術・研究ライセンスでは授業での使用が自動的に認められなくなった。しかし、世界中の何千人ものコンピュータサイエンス専攻の学生がコピーを配布した。授業で教えられていなかったため、彼らは放課後に集まってこの本について議論することもあった。UNIXやオープンソースの先駆者の多くは、何世代にもわたって大切にコピーされた本を所有していた。
ライセンス変更によるその他の影響としては、アンドリュー・S・タネンバウムがMinixを開発したことが挙げられます。タネンバウムは著書『オペレーティングシステム』(1987年)の中で次のように述べています。
AT&Tがバージョン7をリリースした際、UNIXが価値ある商用製品であることを認識し始めたため、企業秘密としての地位を危うくしないよう、ソースコードを授業で使用しないというライセンスを付けてバージョン7を発行した。多くの大学はこれに従い、UNIXの学習を廃止し、理論のみを教えるようになった。
ピーター・H・サラス、デニス・リッチー、バーニー・グッドハートをはじめとする様々なUNIX関係者は、長年にわたり、本書の公式出版を許可するよう、UNIXの様々な所有者(AT&T、ノベル、サンタクルーズ・オペレーション)に働きかけてきた。1996年、サンタクルーズ・オペレーションはついに、20年前の第6版のソースコード(および「Ancient UNIX 」の他のバージョンのソースコード)の公開を承認し、完全なコードと1977年版の解説がPeer-To-Peer Communications社( ISBN)から出版された。 978-1-57398-013-5) [ 6 ]再発行版には、マイケル・ティルソン (SCO)、ピーター・サラス、デニス・リッチー、ケン・トンプソン、ピーター・コリンソン、グレッグ・ローズ、マイク・オデル、バーニー・グッドハート、ピーター・レインチェスによる解説が収録されている。

UNIXオペレーティングシステムのソースコードレベル6は、カーネルソースコードであり、Lions氏によって機能の分離をより明確にするために若干編集されています 。具体的には、システム初期化とプロセス管理、割り込みとシステムコール、基本的な入出力、ファイルシステムとパイプ、およびキャラクタデバイスなどが挙げられます。すべてのプロシージャとシンボルはアルファベット順に一覧表示され、相互参照も付いています。

提示されたコードは、RK05ディスクドライブ、LP11 ラインプリンタインターフェース、PCL11 ペーパーテープライター、KL11 ターミナルインターフェースを備えたPDP-11 /40 、またはSIMHなどの適切な PDP-11 エミュレータ上で動作します。
『UNIXオペレーティングシステム解説』は、UNIXに関する解説とその他の有用な資料(UNIXマニュアルページ、DECハードウェアマニュアルなど)から始まり、PDP-11のアーキテクチャに関するセクションとCプログラムの読み方に関する章が続きます。ソースコードの解説は、コードと同じセクションに分かれています。本書の最後には、学習者向けの演習問題が掲載されています。
ライオンズ氏が説明するように、この解説はソースコード内のコメントを補足するものです。追加の解説がなくてもコードを理解することは可能であり、読者は必要に応じて解説だけを読むことをお勧めします。また、この解説ではコードの改善点についても言及しています。
悪名高いプログラムコメント「これを理解する必要はありません」は、ソースコードの2238行目(Lions' Commentary、p. 22)にあり、プロセス交換メカニズムを説明するコメントの最後にあります。これは、ファイルslp.cの325行目を参照しています。[ 9 ]ソースコードは次のとおりです。[ 10 ] [ 11 ]
/* * 新しいプロセスが スワップアウトされたために一時停止した場合、スタックレベルを savu(u_ssav) の最後の呼び出しに設定します。 * これは、aretu の呼び出し直後に実行される戻り値が、 * 実際には savu を実行した最後のルーチンから戻ることを意味します。 * * このことを理解する必要はありません。 */ if ( rp -> p_flag & SSWAP ) { rp -> p_flag =& ~ SSWAP ; aretu ( u . u_ssav ); }このコードが理解しにくかった主な理由は、PDP-11の C コンパイラがプロシージャ呼び出しでレジスタを保存する方法の癖に依存していたためです。このコードは他のマシンに移植すると失敗し、バージョン 7 UNIXで再設計する必要がありました。[ 12 ]デニス・リッチーは後にこの発言の意味を説明しました。[ 10 ]
「あなたがこれを理解できるとは期待されていません」という言葉は、生意気な挑戦のつもりではなく、「これは試験には出ません」という意味合いで言ったものです。
{{cite book}}: CS1メンテナンス: パブリッシャーの場所 (リンク){{cite book}}: CS1メンテナンス: パブリッシャーの場所 (リンク)