ライオンズの解説のコピーを手に持つブライアン・カーニガン | |
| 著者 | ジョン・ライオンズ |
|---|---|
| 言語 | 英語、中国語、日本語でもご利用いただけます |
| 主題 | Unixオペレーティングシステム |
| ジャンル | コンピュータサイエンス |
| 出版社 | ニューサウスウェールズ大学 |
発行日 | 1976 |
| 出版地 |
|
| OCLC | 36099640 |
| 005.43 | |
| LCクラス | QA 76.76 .O63 L56 |
ジョン・ライオンズ によるUNIXオペレーティングシステム第6版の解説(後にライオンズのUNIX第6版解説[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]
AT&T が1979 年 6 月にUSENIXでUNIX バージョン 7 を発表したとき、学術研究ライセンスでは教室での使用は自動的に許可されなくなりました。しかし、世界中の何千人ものコンピュータ サイエンスの学生がコピーを配布しました。授業では教えられなかったため、授業時間後に集まって本について話し合うこともありました。UNIX とオープン ソースの先駆者の多くは、何世代にもわたるコピーを大事にしていました。[要出典]
ライセンス変更によるその他の影響としては、Andrew S. TanenbaumによるMinix の作成が挙げられます。Tanenbaum は、Operating Systems (1987) で次のように書いています。
AT&T はバージョン 7 をリリースしたとき、UNIX が価値ある商用製品であることに気づき始め、企業秘密としての地位が危険にさらされるのを避けるため、ソース コードをコースで学習することを禁止するライセンスでバージョン 7 をリリースしました。多くの大学はこれに従い、UNIX の学習を中止し、理論だけを教えました。
UNIX 関係者、特にPeter H. Salus、Dennis Ritchie、 Berny Goodheart らは、UNIX のさまざまな所有者 (AT&T、Novell、Santa Cruz Operation ) に何年もロビー活動を行い、この本が公式に出版されるよう求めました。1996 年、Santa Cruz Operation はついに 20 年前の第 6 版のソース コード (および他のバージョンの「Ancient UNIX」のソース コード) の公開を認可し、完全なコードと 1977 年版の解説が Peer-To-Peer Communications から出版されました ( ISBN 978-1-57398-013-5 )。[6]この再版には Michael Tilson (SCO)、 Peter Salus、 Dennis Ritchie、 Ken Thompson、 Peter Collinson、 Greg Rose、 Mike O'Dell、 Berny Goodheart、 Peter Reintjes ら による解説が含まれています。
コンテンツ

UNIX オペレーティング システム ソース コード レベル 6はカーネル ソース コードであり、Lions によって軽く編集され、システムの初期化とプロセス管理、割り込みとシステム コール、基本的な I/O、ファイル システムとパイプ、およびキャラクタ デバイスなどの機能がより適切に分離されています。すべてのプロシージャとシンボルは、相互参照とともにアルファベット順にリストされています。
提示されたコードは、RK05ディスク ドライブ、LP11 ライン プリンター インターフェイス、PCL11 紙テープ ライター、および KL11 端末インターフェイスを備えたPDP-11 /40 、またはSIMHなどの適切な PDP-11 エミュレーターで実行されます。
UNIX オペレーティング システム解説書は、 UNIX に関する注記とその他の有用なドキュメント (UNIX マニュアル ページ、DECハードウェア マニュアルなど) から始まり、PDP-11 のアーキテクチャに関するセクションとCプログラムの読み方に関する章があります。ソース解説書はコードと同じセクションに分かれて続きます。本書は学生向けの演習問題で終わります。
Lions の説明によると、この解説はソースのコメントを補足するものです。追加の解説がなくてもコードを理解することは可能ですが、読者は追加の解説を読まず、必要に応じて注釈だけを読むことをお勧めします。解説では、コードをどのように改善できるかについても言及しています。
「これを理解する必要はない」
悪名高いプログラムコメント「これを理解する必要はない」は、ソースコード(Lions' Commentary、p.22)の2238行目、プロセス交換メカニズムを説明するコメントの最後にあります。これは、slp.cファイルの325行目を参照しています。[9]ソースコードは次のとおりです。[10] [11]
/*
* 新しいプロセスが
スワップアウトされたために一時停止した場合、スタック レベルを
savu(u_ssav) への最後の呼び出しに設定します。これは、
aretu への呼び出しの直後に実行される return が、実際には
savu を 実行した最後のルーチンから戻ることを意味します。
* * これを理解する必要はありません。 */ if ( rp -> p_flag & SSWAP ) { rp -> p_flag =& ~ SSWAP ; aretu ( u . u_ssav ); }
このコードが理解しにくかった主な理由は、PDP-11のCコンパイラがプロシージャ呼び出しでレジスタを保存する方法の癖に依存していたためである。このコードは他のマシンに移植されたときに失敗し、バージョン7 UNIXで再設計する必要がありました。[12] Dennis Ritchieは後にこの発言の意味を説明しました。[10]
「これを理解する必要はない」というのは、厚かましい挑戦というよりは、「これは試験には出ません」という趣旨の発言として意図されたものです。
参照
- xv6 – 第 6 版 Unix の現代的な再実装
参考文献
- ^ ライオンズ、ジョン (1976–1977)。UNIX オペレーティングシステム第 6 版の解説。ニューサウスウェールズ大学: コンピュータサイエンス学部。OCLC 494684468 。
- ^ Unix オペレーティングシステム ソースコード レベル 6。ニューサウスウェールズ大学: コンピュータサイエンス学部。1976–1977。OCLC 494684460 。
- ^ Jonathan Corbet Brian Kernighan が Unix の起源について語る LWN.net。2022 年 1 月 17 日。
- ^ abc 「新しい本」。UNIXニュース。USENIX。1977年3月。
- ^ ab Lehey, Greg (2015-09-14). 「第 6 版 UNIX オペレーティング システムに関する解説」Greg Lehey、Warren Toomey。
- ^ abcd Lions, John (1996). Lions' Commentary on UNIX 6th Edition with Source Code . Peer-to-Peer Communications. ISBN 978-1-57398-013-5。
- ^ 工学部、ニューサウスウェールズ大学(学部長)(2020-09-18)。「ケン・ロビンソンを偲んで」。ニューサウスウェールズ大学:工学部。2020年10月20日時点のオリジナルよりアーカイブ。
- ^ デーモン、GNU、そしてペンギン - 第 2 章と第 3 章 ( Peter H. Salus )
- ^ Ken Thompson. 「unix-history-repo/usr/sys/ken/slp.c」。GitHub 。 2018年10月12日閲覧。
- ^ ab Dennis Ritchie (2002-06-22). 「Odd Comments and Strange Doings in Unix」。2021年5月14日閲覧。
- ^ https://swtch.com/unix/ [裸の URL ]
- ^ Johnson, SC; Ritchie, DM (1978). 「UNIX タイムシェアリングシステム: C プログラムと UNIX システムの移植性」(PDF) . Bell System Technical Journal . 57 (6): 2021–2048. doi :10.1002/j.1538-7305.1978.tb02141.x. S2CID 17510065. 2022-10-09 にオリジナルからアーカイブ(PDF)されました。
さらに読む
- Andrew S. Tanenbaum著『オペレーティングシステム: 設計と実装』 ( Prentice Hall、ISBN 0-13-637331-3、1987年 6 月)
- ブライアン・W・カーニハンとデニス・リッチー著『プログラミング言語 C』、ISBN 0-13-110362-8
外部リンク
- [1]
- [2]
- コード批評家 (レイチェル・チャーマーズ、Salon、1999 年 11 月 30 日)
- デーモン、GNU、そしてペンギン - 第 6 章: 1979 年 (ピーター H. サルス)
