name: how-to-study-unix class: title, smokescreen, shelf, no-footer # Unixオペレーティングシステム<br>〜勉強法〜 <div class=footnote> このスライドは試験には出ません:-) </div> --- class: col-2,compact # (古典的な)勉強法 - 座学としては「オペレーティングシステム」という名の教科書を読んで知識を得てください、 というのが古典的かつ正統的な方法なのでしょうけれど、 実際に動いているものを勉強する方がはるかに有意義です (お薦めしろと言われても正統的教科書に詳しくない;-) - そもそも**実運用しているOS**は教科書どおりには動かないし、 きれいでない試行錯誤の跡がたくさんあるソースコードだったりします。 そのへんを体感するのが重要!というわけで 古代(といっても半世紀前:-)より Unixのソースコードを読んで勉強するというのが定番 <wbr> - いちおうOSの概念を学ぶたぐいの教科書を2,3あげておきます - 清水謙多郎著「オペレーティングシステム」(岩波書店,1992) - 情報処理入門コース第2巻 - ISBN-13: 9784000078528 - 前川守著「オペレーティングシステム」(岩波書店,1988) - 岩波講座ソフトウェア科学第6巻 - ISBN-13: 978-4000103466 --- name: xv6 class: col-2,compact # おすすめの勉強法(MITのxv6) - 後述する「Unix第6版カーネル」のソースコードを読むのが伝統の勉強法でしたが、 いかんせん古すぎるので、 第6版をリスペクトしつつ現代によみがえらせたMITのxv6カーネルが一番のおすすめです。 ただし**英語**ですけど:-) (a)第6版およびLions先生の第6版解説書のスタイルをゆるく踏襲 (b)Unixの主要概念をコンパクトにまとめて1万行 (c)現代のIntel 80386 (i386)で動くコード - [MIT](https://mit.edu/)の[OSの授業(course: 6.828)](https://pdos.csail.mit.edu/6.828/2016/xv6.html)の教材 - Lionsスタイルの2つの教材がPDFで配布されています - [ソースコード](https://pdos.csail.mit.edu/6.828/2016/xv6/xv6-rev9.pdf) - [ソースコードの注釈書](https://pdos.csail.mit.edu/6.828/2016/xv6/book-rev9.pdf) <wbr> - なにしろUnix第6版カーネルはDEC PDP-11という古代のコンピュータで動くものなので、 C言語のスタイルも標準化前だし、 アセンブリ言語も古い (いまどきgoogleすれば、いろいろでてくるから大丈夫なのかもしれませんが...) - C言語へのDEC PDP-11の影響などは考古学的興味で面白いですけど - 本来のLions先生の授業はアセンブリ言語の授業(半年)+カーネル解説(半年)らしいので、 とつぜん後半だけ読むと???になるのは当たり前で... - その点Intelなら解説書がたくさんあるので安心 (参考:「はじめて読む486」など) --- class: img-right,compact # おすすめの勉強法(Unix第6版カーネル) <div class=footnote> (脚注)一万行は読めます!敷居が高いかも...? Photos By Oikawa Takuya / <A HREF="https://creativecommons.org/licenses/by-sa/2.0/deed.en">CC BY-SA 2.0</A> </div> ![height480px](https://upload.wikimedia.org/wikipedia/commons/thumb/5/50/Lions_Commentary_Unix.jpeg/450px-Lions_Commentary_Unix.jpeg) - 適度な長さのカーネルソースコードを読むことです。 第6版ならC言語とアセンブリ言語(全体の数%)で1万行 - 解説書も必要です。 というのはC言語の文法も標準化以前だったりと古文書を読む世界なので 解説書がないと読めない(ソースコードだけでは辛い)です - [日本語の解説書](#unix-v6-kernel)があるのも第6版がおすすめできる理由です - 最近は、エミュレータで第6版を動かせます(今の方が恵まれてるやん) --- class: img-right,compact # おすすめの勉強法(ユーザランド) ![](/images/unix/dmesg.png) - 実際に手を動かさないと身につきません - 自分で古いPCとかラズベリーパイにインストールして使うのがいいとおもいますけど、 ハードウエアを用意したくない人は [O'reilly](https://www.oreilly.co.jp/index.shtml)の 無料Linux環境[Katacoda](https://www.katacoda.com/)とか使えばブラウザだけで色々できます - Office365のアカウントで[マイクロソフトのEL教材(Microsoft Learn)](https://docs.microsoft.com/ja-jp/learn/)が使いたい放題です(とうぜん在学中のみ)。 仮想環境(sandbox)を起動して実際に手を動かす教材もあるので、 それなりに使えるかもしれません。 ただ、Azureの使い方などに偏っているので、 初心者向け教材はないのかもしれません --- class: img-right,compact # 資格試験 e.g. Linux Essentials, LPIC-1 <div class=footnote> https://www.lpi.org/ja/our-certifications/linux-essentials-overview </div> ![](https://www.lpi.org/sites/default/files/styles/w555/public/Essentials-Linux.jpg?itok=8pNrYkCP) - [LPIC](https://www.lpi.org/ja/)というLinuxの資格試験があります。 いまどき、インフラ関係で就職すると、 Ciscoの資格(CCNAほか)とLPICの取得をほぼ強制されるはずです - 私は、受けたことがないので、よくわかりませんが、 2018年かな?に4年生と一緒に「無料配布されているLPIC-1の教科書」を読みました。 教科書の出来が非常に悪いし、 なにより実務経験のある人が試験を受ける前提に見えました - Unixの操作をしたことがない人が無理やり暗記してもつらいだけだとおもいます --- name: unix-kernel class: title, smokescreen, shelf, no-footer # Unix カーネル<br>〜参考書〜 <div class=footnote> <pre> You are not expected to understand this. -- Unix第6版カーネルの有名なコメント(2238行め) </pre> </div> --- name: unix-v6-kernel class: col-2,compact # Unix第6版カーネル - Lion's Commentary on Unix - 1970年代にニューサウスウエールズ大学で行われていたOSの授業教材で (人づてに世界中にコピーが出回った)伝説の同人誌(?)。 みんなこれを読んでUnixの勉強をしたというもの。 1990年代後半に正式に出版できるようになったので、 いま入手できる書籍は正式のものです - 洋書(ISBN-13: 978-1573980135, Peer-to-Peer, 1996) - 翻訳(ISBN-13: 978-4756118448, ASCII, 1998)は絶版ですが中古で入手可 - 本来見開き4列200行という横長の本なので、洋書のほうが読みやすい <wbr> - はじめてのOSコードリーディング -UNIX V6で学ぶカーネルのしくみ- - 青柳隆宏著, 技術評論社, 2013 - ISBN-13: 978-4774154640 - むかし新宿でおこなわれていたLion本の読書会からうまれた解説書 - (さすが50年もあとに作られているだけあって) Lion's本に欠けている情報も多数フォローされており、 こちらのほうがわかりやすい --- class: col-2,compact # 研究用Unixカーネル時代の文献(1970年代〜1980年代前半) <div class=footnote> (脚注) TUHS = <A HREF="https://www.tuhs.org/">The Unix Herigate (遺産) Society</A> </div> - BELL SYSTEM TECHNICAL JOURNAL, vol.57, no.6, part 2 (1978) - 本家AT&Tベル研発行の雑誌のUNIX特集号 - 1974年の最初の論文をはじめ歴史的文献の宝庫 - 入手方法不明 ... いや[TUHS](https://www.tuhs.org/Archive/Documentation/Papers/BSTJ/)にPDFでありました <wbr> - BELL SYSTEM TECHNICAL JOURNAL, vol.63, no.8, part 2 (1984) - 本家AT&Tベル研発行の雑誌のUNIX特集号 - UNIX特集号第2弾 - 入手方法不明 ... (Amazon.comで古本が入手可) - UNIX原典(パーソナルメディア,1987) [絶版] - BELL SYSTEM TECHNICAL JOURNAL, vol.63, no.8, part 2 (1984)の訳 - ISBN-13: 978-4893620149 --- class: col-2,compact # Unix カーネルの解説: 1980年代のSystem V - 1980年代になるとUnixは商用や実用目的になっていきます - 細かなコードの解説ではなく、アルゴリズムや構造を外観するタイプの解説書 - v6カーネルが分かっていれば、 単純すぎるv6を現実的にする修正は...といったことが腑に落ちるはずです。 ただ、あるていどUnixに親しんだ後で読んだ方がいいと思います <wbr> - M.J.Bach著「UNIXカーネルの設計」(共立出版,1991)[絶版] - ISBN-13: 978-4-320-02551-6 - 擬似コードでカーネル内部のアルゴリズムと構造を解説 - 出発点としては、この本あたりでは? - B. グッドハート, J. コックス著/桜川貴司監訳 「UNIXカーネルの魔法 - System V リリース4のアーキテクチャ」(桐原書店, 1997) [絶版] - ISBN-13: 9784931356047 --- class: col-2,compact # Unix カーネルの解説: BSD Unix - 4.3BSDの設計と実装 (丸善,1991)[絶版] - S.J.Leffler, M.K.McKusick, M. Karels and J.S.Quarterman著/ 中村 明,相田 仁訳 - ISBN: 9784621036075 - 4.3BSD開発者たち自身による解説 - 4.4BSDの設計と実装 (ASCII, 2003)[絶版] - M.K.McKusick, K. Bostic, M. Karels and J.S.Quarterman著 - ISBN: 9784756143464 - 4.4BSD開発者たち自身による解説 <wbr> - 4.4BSD以降のコミュニティ開発 - 386BSD カーネルソースコードの秘密 (ASCII, 1998)[絶版] - W.F.Jolitz, L.G.Jolitz 著/吉川 邦夫 (翻訳) - ISBN-13: 978-4756120427 - BSDカーネルの設計と実装 - FreeBSD詳解 (ASCII, 2005)[絶版] - M.K.McKusick, G, V. Neville-Neil 著/砂原秀樹【監修】/歌代和正【訳】 - ISBN-13: 9784756146793 --- class: col-2,compact # Unix カーネルの比較 - UNIX Internals: The New Frontiers (Prentice Hall, 1995) - Uresh Vahalia 著 - ISBN-13: 978-0131019089 - 内部構造について、主要Unix間の実装を比較、議論するというマニア垂涎の本 <wbr> - UNIX Internals: The New Frontiers (Dorling Kindersley Pvt Ltd, 2008) - Uresh Vahalia 著 - ISBN-13: 978-8177582499 - 第2版ではなくて、Mass market paperback という廉価版なんですね? 1995年の本と中身が同じなのかどうかは買いそびれてるのでコメントできませんけど orz --- class: col-2,compact # 商用Unixの内部注解 - Solarisインターナル - カーネル構造のすべて (桐原書店,2001) - J. Maure, R. McDougall 著/福本 秀,兵頭武文,細川一茂,大嶺朋之,佐藤敬訳 - ISBN-13: 9784894714588 - 実際の商用Unixの実装について、 その実装を必要とした理由、 なぜその選択をしたのか?などが詳細に解説されていて実におもしろい <wbr> - Solaris Internals: Solaris 10 and OpenSolaris Kernel Architecture 2nd Edition - R. McDougall, J. Maure 著 - ISBN-13: 978-0131482098 - 翻訳はない --- name: unix-userland class: title, smokescreen, shelf, no-footer # Unix ユーザランド<br>〜参考書〜 <div class=footnote> </div> --- class: col-2,compact # Unixユーザランドの使い方 - UNIXプログラミング環境 (ドワンゴ,2017) - B.W.Kernighan, R. Pike著/石田晴久【監訳】,野中浩一【訳】 - 古典。 むかしの情報工学科には、 この本を教科書に「UNIXプログラミング環境」という授業があったもの - 絶版と再販をくりかえしているので表紙が違う版がありますが、 現在手に入りやすい版はドワンゴが再販した黒と緑の表紙のもの <wbr> - UNIXという考え方 (オーム社,2001) - Mike Gancarz 著、芳尾桂監訳 - ISBN-13: 978-4-274-06406-7 - UnixのユーザランドはUnixという思想が理解できると開発効率が非常に上がります。 **20-30年単位のスケールでみれば、 技術はスパイラルを描いて似たようなところを巡っているにすぎない**こともわかります (例:「マイクロサービスなんて、しょせんUnixの再実装じゃん」) --- class: col-2,compact # Unixユーザランドの使い方 (変化球) - シス管系女子 - まんがでわかるLinux 第1巻 (日経BP,2015) - Piro著 - ISBN-13: 9784822224967 - シス管系女子 - まんがでわかるLinux 第2巻 (日経BP,2015) - Piro著 - ISBN-13: 9784822236076 - シス管系女子 - まんがでわかるLinux 第3巻 (日経BP,2018) - Piro著 - ISBN-13: 9784822256784 <wbr> - [https://system-admin-girl.com/](https://system-admin-girl.com/) - 試し読みもできますよ - いま風の萌絵なので、作画で引かれてしまうことも多いのですが ;_; 、 とても実践的で良い内容です。 ふだんサーバ運用などをしているエンジニアがマンガも書けるという 今風なかんじですね〜 - 技術水準は初心者向けで、当たり前のことが書いてあるだけなので、 プロは一時間で斜め読みするレベル - この本が斜め読みですむひとは、とりあえず普通にサーバ運用できます --- name: unix-history class: title, smokescreen, shelf, no-footer # 歴史的展望 --- class: col-2,compact # Unixの歴史 <div class=footnote> まとまったUnix歴史書は、この2冊しかありませんけど... </div> - P.H.Salus「Unixの1/4世紀」(ASCII,2000)[絶版] - ISBN-13: 978-4756136596 - 1990年代前半までのUnixの歴史を書き綴ったもの。 当時は、ほぼ全員存命だったので当事者へのインタビューも多い <wbr> - 藤田昭人「Unix考古学」(ASCII DOWANGO,2016) - ISBN-13: 978-4-04-893050-5 - 多くの原典をひもときながらUnixの歴史をたどる文字どおりの考古学っぽい本 - Unixマニアの大好物、たまらない感じにあふれている - 藤田さんはBSD Unixの開発に関係していたUnix当事者です。 今の所属はIIJ(いつのまにやらIIJに転職してた:-) --- class: compact # Unixの原典 (一次資料) <div class=footnote> (脚注) TUHS = <A HREF="https://www.tuhs.org/">The Unix Herigate (遺産) Society</A> </div> - BELL SYSTEM TECHNICAL JOURNAL, vol.57, no.6, part 2 (1978) - 本家AT&Tベル研発行の雑誌のUNIX特集号 - 1974年の最初の論文をはじめ歴史的文献の宝庫 - 入手方法不明 ... いや[TUHS](https://www.tuhs.org/Archive/Documentation/Papers/BSTJ/)にPDFでありました - BELL SYSTEM TECHNICAL JOURNAL, vol.63, no.8, part 2 (1984) - 本家AT&Tベル研発行の雑誌のUNIX特集号 - UNIX特集号第2弾 - 入手方法不明 ... (Amazon.comで古本が入手可) - UNIX原典(パーソナルメディア,1987) [絶版] - BELL SYSTEM TECHNICAL JOURNAL, vol.63, no.8, part 2 (1984)の訳 - ISBN-13: 978-4893620149 - [故Dennis Ritchie (<- C言語の作者)のホームページ](https://www.bell-labs.com/usr/dmr/www/)に、 当時の文献がいろいろあります。また、 TUHSが当時のソースコードやバイナリを収集していて、これまた貴重品ぞろいです --- name: unix-culture class: title, smokescreen, shelf, no-footer # Unix開発の文化的側面 --- class: img-right,compact # フリーソフトウエアの歴史 (1980年代前半〜) <div class=footnote> "Free Software Foundation Bulletin" by OsamaK is licensed under CC BY-SA 2.0 </div> ![](images/CC-BY-SA-2.0_GNU_bulletin__3801230519_6a6e02dd21_b.jpg) - [GNU Bulletin](https://www.gnu.org/bulletins/bulletins.html) - GNU Projectが季刊くらい?で配布していたパンフレットというかブックレット。 当時の状況を語る一次資料は、おそらくこれくらい。 あとは当時のネットニュースやメーリングリストで探せたものが一次資料。 日本ではSRAの引地夫妻が翻訳して配っていました - ウエブなら[GNU Project本家の語る理念](https://www.gnu.org/philosophy/philosophy.html)などを読んでください。 [Debian Projectの歴史](https://www.debian.org/doc/manuals/project-history/index.ja.html)にある付録A「[Debian宣言](https://www.debian.org/doc/manuals/project-history/manifesto.ja.html)」が手頃なサイズ感でよろしいかとおもいます - まとまった書籍というのは知りません --- class: compact # オープンソースの歴史 (1998-) - C. Dibona, S. Ockman and M. Stone 編著 「オープンソースソフトウエア -- 彼らはいかにしてビジネススタンダードになったのか」 (Oreilly Japan, 1999)[絶版] - オープンソースというマーケティング用語を作った1998年当時に作られたものなので、 当時の生々しい感じがよく伝わる一次資料といってよい文献 - 書籍は絶版でも、文章自体はウエブで公開されています -> [Web公開版](https://www.oreilly.co.jp/BOOK/osp/announce.htm) --- class: col-2,compact # オープンソース文化論 (1998からの2〜3年) - OSSエバンジェリストのEric. S. Raymondが言い始めたOSS文化論というか、 OSS方法論は正しい的なプロパガンダのようなもので、 それがあてはまるいくつかのプロジェクトはあるとは思うけど、 一般論として本当か?といろいろ思うところのある話 - 山形浩生さんがたくさん訳しているので、そちらでどうぞ - [https://cruel.org/jindex.html](https://cruel.org/jindex.html) - 特に有名なのが、この3部作 - [第1部「伽藍とバザール」](https://cruel.org/freeware/cathedral.pdf) - [第2部「ノウアスフィアの開墾」](https://cruel.org/freeware/noosphere.pdf) - [第3部「魔法のおなべ」](https://cruel.org/freeware/magicpot.pdf) <wbr> - あまり長続きせず、OSS文化論の研究は停滞したままです - その後さかえているのは? - 経済学の分野でOSSネタは流行しているみたいです - sourceforgeやgithubをデータマイニングのデータとみなして、 OSSの活動状況を分析するというマイナージャンルがありますね (といっても日本では大阪近辺の一派しかないはず。 面と向かって聞いてみたけど、 彼らOSSには興味が無くて、 データマイニングの対象にしたいだけみたい) --- name: create-my-os class: title, smokescreen, shelf, no-footer # 番外編: OSやCPUを自作 --- class: col-2,compact # OSやCPUを自作すれば、さらに深く理解できる! <div class=footnote> もっとも、すでにUnixは関係ないですけどね;-) なんにせよマニアックな世界です </div> - OSを自作 - 川合秀実著「30日でできる!OS自作入門」(毎日コミュニケーションズ,2006) - ISBN-13: 978-4839919849 - 坂井弘亮著「12ステップで作る組込みOS自作入門」(カットシステム,2010) - ISBN-13: 978-4877832391 - 内田公太著「ゼロからのOS自作入門」(マイナビ出版,2021) - ISBN-13: 978-4-8399-7586-9 <wbr> - CPUを自作 - 渡波郁著「CPUの創りかた」(毎日コミュニケーションズ,2003) - ISBN-13 : 978-4839909864 - 表紙でドン引きされそうですが名著っぽい。 この今風のかわいらしい絵も自分で書いてるみたいよ、やるね