Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

What's Operating System?

2,737 views

Published on

尻切れとんぼで申し訳ないがまあ勉強会の議論のネタにということで。

Published in: Technology
  • Be the first to comment

What's Operating System?

  1. 1. Operating System って なんだろう? おがさわらなるひこ naruoga at twitter, gmail, hatena @ Study Party Basics of Computer
  2. 2. その前に重要な注釈 この資料を書いている人は OS の専門家でもなければ カーネルのソース一つ読んだことがない たんなるうんちく好きです。 間違ってもこの資料を本気にしないで 自分で確かめてね。 あと日立よりの記述が多いのは ぼくの大学の恩師が日立中研で OS の 開発をやってたからです。 さらに言うと組み込み系はなにも知らないので なかったことになってます。ひどい。
  3. 3. Agenda  まずは歴史から  OS の「本分」って何だろう?  ネタになりそうなキーワード列挙
  4. 4. Agenda  まずは歴史から  OS の「本分」って何だろう?  ネタになりそうなキーワード列挙
  5. 5. OS 前史  コンピュータ黎明期には OS は存在しなかった  昔のコンピュータはパンチカードやテープで プログラムを食わせて、順に実行していくの が普通だった  複数のプログラム間を調停する必要はない  プログラムはそのコンピュータ専用に機械語 (後にアセンブラ)でかかれるのが当然  ハードウェアの抽象化などいらない
  6. 6. OS の誕生①  SHARE (IBM  のユーザーズグループ )   アセンブリでコケたジョブは取り除くとか、暴 走したジョブを殺すとか人手やるの大変  GM と North Americal Aviation が GM/NAA I/O  system  ってのを作ったよ! と自慢  SHARE Operating System (SOS)  の提案  IBM 704  にて実装 (1953)  IBM 帝国の 基礎となった存在
  7. 7. OS の誕生②  こういう発想は SOS  が最初ではなかった  簡単なジョブ管理をするソフト「モニタ」  例えば日立中研ではモニタを 1963 年には自前 で書いていた  商用 FORTRAN の発売より必要とされた  ポイントは、このようなソフトに Operating  System という名前がついたこと  元々は IBM 用語
  8. 8. TSS ショック①  OS でバッチジョブが効率化して分かったこと  9 割のジョブは本体処理が非常に小さいので、 前準備と後始末の時間がムダになる  並列で実行していく方が効率がいい  「タイムシェアリングシステム」考案  CPU タイムを分割して複数ジョブを実行する  マルチプロセス、マルチユーザの時代到来  最初の実装は MIT の McCathy (Lisp の発明者 ) 主導 (1957) on modified IBM 704 
  9. 9. TSS ショック②  「ジョブ」から「プロセス」へ  逐次実効される「ジョブ」から並列実行される 「プロセス」という概念の登場  有限のハードウェア資源を分け合う  「資源管理」が OS の機能として認識される  特権レベルという考え方の導入  ファイルの所有権といったセキュリティの概 念の萌芽が産まれる  管理者対ハッカーの長い戦いの始まり
  10. 10. MULTICS①  MIT の Saltzer 教授を中心に、 GE ( 後にコン ピュータ部門を Honeywell に売却 ) 、 AT&T ベル研究所の共同研究による理想の OS  高水準言語 (PL/I) による実装  仮想記憶の実現  完全なセキュリティモデル  ダイナミックリンクライブラリ  1964 年、 GE のフラッグシップモデル GE ー 645 をターゲットに始まる
  11. 11. MULTICS②  理想が高邁過ぎて実装が遅れに遅れる  ベル研が撤退を決定 (1969)  紆余曲折あったものの完成はした (1975)  が、 ビジネス的には大失敗  しかし、そこで提唱されたアイディアは非常に 革新的であり、今の OS に取り込まれている  仮想記憶などのアイディアについては論文とし て公開していたため、それを読んだ日立の技術 者に実現の先を越されるという逸話あり
  12. 12. UNIX の誕生①  ベル研の Ken Tompson と Dennis Ritche ほか  MULTICS から撤退してちょっとヒマになった  ちょっとした暇つぶしに研究所に落ちてるミニ コン (PDP­7) でゲームでも遊べる OS 作ろうか  仮想記憶? 要らね要らね。  ダイナミックリンクなんか役にたたんだろ  アセンブラでごりごり書いちゃえ  んでできたのが UNIX (1970)  後に Ritche  が「俺の作った言語で書こうよ」 と持ちかけて C でポーティング (1973)
  13. 13. UNIX の誕生②  UNIX の偶然  研究者が使いたいものに割り切った仕様だった ので、研究機関や大学に好評  AT&T は当時ソフトビジネスが禁止されていた  欲しいところ(研究所や大学)に実費で配布  規模もそこそこなので OS の研究にちょうどいい  仕様が小さい言語 (C) で書かれていたので移植性 が高い  研究機関・大学における標準の地位を得る
  14. 14. 西海岸から来た悪魔君  UNIX のソースコードを受け取ったところに UCB (the University of California, Barkeley)  が  何人かのスキモノがハックしまくり  C­Shell, vi, TCP/IP socket,  仮想記憶 , ...  これが Berkeley Software Distribution (BSD)  ぶっちゃけ近代的 UNIX のネタは全部 BSD が仕 込んだといっても過言ではない。 ちなみに Stanford 大で Stanford University Network というハードウェアを作って たハッカー Andy Bechtolsheim とビジネス屋の Scott McNealy らを誘って BSD のコアメンバー Bill Joy が起こした会社が SUN ですね。
  15. 15. 視点を変えて~言語マシン~  厳密な定義は置くとして、 OS とはハードとソ フトと人をつなぐもの、と雑駁にいうと、 「ある言語の中だけでそのコンピュータの全 機能が扱える」ものがあったら、その言語は OS と言えるじゃないか!  Lisp マシン (Symbolics, LMI,  InterLisp/D, ELIS)  今だと Emacs が近いかも。  Pascal マシン (P­code  マシン )  Smalltalk­80 (Alto)
  16. 16. マイコン登場  Intel が出した 8080 というチップをきっかけに 噴出した自作コンピュータブーム  高水準言語を使いたいという声に、ダートマス 大学で発明された BASIC という教育用言語に 目をつけた人たちがいた  その中にはヒットしたマイコンキット MITS  Altair 向けに BASIC を作って売った Bill Gates と Paul Allen のコンビも  これは「ソフトを売って儲けるってありなん だ」というビジネスモデルを発明したというこ とで画期的な事件ですが OS とは関係ないね
  17. 17. マイコン BASIC 時代  初期のマイコン用 BASIC は初期汎用機のアセ ンブラと同じく OS 的機能はなかった  Apple ][  での革新= OS 化  電源 ON で ROM から BASIC  フロッピーディスクのファイルを 管理できる  日本における各種 BASIC 標準搭載マシンにつ いても同様であり、これが「始めて触れた OS らしきもの」という人は多いのでは?
  18. 18. CP/M & DOS  CP/M (by Digital Research Inc.)  8 ビット時代を席巻した OS  PC­DOS / MS­DOS (by Microsoft)  DOS = Disk Operating System  IBM が PC に搭載した OS  ほんとは IBM は CP/M 86 を考えてたんだけど、 約束をすっぽかされて急遽 MS が手をあげた  MS は他から買ってきて大急ぎで仕上げた  肝心なのは、どちらもせいぜいファイル管理 ぐらいしか機能を提供してなかったこと
  19. 19. 笑ってお仕事 Windows!  OS と言える初の Windows 、 Windows 95  の登場  ほぼ全ての資源管理は Windows 側に移る  それまでは DOS や BIOS に多くを依存  MS 自ら「 Operating Environment 」と言っていた  32bit CPU の機能を利用し、今までの擬似マル チタスクでなく完全なマルチタスクへ移行  ただし  堅牢性やセキュリティよりも互換性を重視した
  20. 20. ちょっと脱線~マイクロカーネル~  OS の機能はどんどん肥大化  プラットフォームも増大  OS から「本当に必要な部分」を切り出して、 それ以外の機能はその上に載せればいいん じゃないか?  そしたら移植しなきゃいけない部分が減るよね  「マイクロカーネル」という概念の登場  CMU の Mach カーネルが有名  「これからの OS は全てマイクロカーネル」?
  21. 21. Mac OS X のご先祖 NeXTstep  「ソーダ水売り」に Apple から追 放された Steve Jobs が世に問うた ワークステーション NeXT Cube  商売としてはまあアレでしたが……  その OS 、 NeXTstep は Mac OS X のご先祖  Mach  カーネルの上に BSD を載せる  Interface Builder で GUI プログラミングも楽々  Objective­C で先進的オブジェクト指向開発!  Display Postscript によるクールな GUI
  22. 22. WNT == VMS++  MS は DOS から発展した Windows の限界を感 じ、もと DEC の Dave Cutler をスカウト  NT = New Technology  マイクロカーネルを採用  Win32 以外に POSIX (Unix)  なども動作  x86 以外に DEC Alpha 、 IBM PowerPC 、 MIPS などの CPU アーキテクチャにも対応  新しいファイルシステム NTFS  詳しくは「闘うプログラマー」読め  今の MS の繁栄を築いたが、時代とともに NTFS 以外はほとんどなかったことに……
  23. 23. 国産 OS ってどうよ①  1960 年代の汎用機全盛時代は各社 ( 富士通、 日立、日本電気、東芝、三菱、沖など ) は独 自アーキテクチャで OS 開発も行っていた  1970 年代に入ると IBM System/360 という歴史 的名機が誕生(話すと長くなるので割愛)  非関税障壁で産業保護を狙うが守りきれない  そこで 1972 年、業界再編により「互換機路 線」を指示  独自アーキテクチャ、独自 OS の道を断つ  だから役人って奴は……
  24. 24. 国産 OS ってどうよ②  TRON (The Real­time Operating system Nucleus)  東京大学、坂本健助教授 ( 当時 ) 提案  いろいろ派生はあるけどここでは B­TRON の話  B­TRON  仮身・実身モデルを中心としたユニークな OS  通商産業省の外郭団体 CEC によって全小学校へ の標準環境としての導入が決まりかける  が、アメリカから非関税障壁とのクレーム  え?国際規格だから誰でも実装できるんだけど?  結局ビビってお流れ  だから役人って奴は……
  25. 25. Minix Operating System  独禁法の縛りが解けて UNIX のソースコード は手軽に手に入れられるものではなくなった  機能が増えた代償に OS の勉強として手軽に読 んでいじるものではなくなってしまった  アムステルダム自由大学の A.S.Tanenbaum 教 授が自著の付録として 16bit PC で動く軽量な 学習用 Unix like OS 「 Minix 」を開発  だれもがいじれ、全容が把握できる OS  書籍としての copyright だったため自由に改変で きない不満が募る (32bit 化、仮想記憶… )
  26. 26. まずは歴史から~ Linux 誕生~  ヘルシンキ大学の院生 Linus Torvalds もこの状 況にイライラしていた  いっそのことフルスクラッチで作っちゃえ!  できたよー、と Minix  コミュニティに投下  一気に大ブレイク! これは別に Linus が天才だったわけでもなければ Minix がへぼかった わけでもない。たまたまインターネットによるコラボレーションという 時代の波にうまく乗ったこと、 Minix が最初に書かれたころに比べると 高性能の PC が入手しやすい時代になっていたということ。 要はタイミングが全て。
  27. 27. AST 先生 vs Linus 論争  詳しくはネットで見ろことで一点だけ、  AST 「今更モノリシックカーネル開発するとか 何?  Linux は i386 しか考えてないやん?」  Linus 「じゃ成功したマイクロカーネルって? 先生の例は商業的に成功してないよね」  さて 2010 年になってみると  今純粋な形で商業的に成功しているマイクロ カーネルは Mach ぐらいだが、これは偶然  Linux は 10 を越えるプラットフォームに対応
  28. 28. まずは歴史から~まとめ①~  非常に大雑把にいってしまうと組み込み系を 除く OS は次の三つに集約されてしまった  汎用機用 OS/360  系列  POSIX  互換 OS (いわゆる Unix Like OS)  Windows NT 系  Mac  は?  OS をどこまで OS として定義するかだけど、 Mach + BSD  にガワをかぶせただけという オレ解釈(異論大歓迎)
  29. 29. まずは歴史から~まとめ②~  研究レベルはともかくとして、完全に新しい 概念の OS というのは長いこと現れていない  しかし、別の潮流が  趣味としての OS  自分が作りたいから OS を作る  今ある概念を一度捨ててみたり  プロジェクトとして成立したものはなさそうだ が、多分作っている人たちが望んでいない  OS 作りを個人のホビーとする動き
  30. 30. Agenda  まずは歴史から  OS の「本分」って何だろう?  ネタになりそうなキーワード列挙
  31. 31. 歴史を見てきましたが 出来事 概念 OS の誕生 簡易的なジョブ管理 TSS マルチプロセスの実現( CPU の仮想化) プロセス管理 特権レベルの導入 3A ( 認証・権限・課金 ) の概念の導入 MULTICS 高水準言語 (PL/I) による実装(移植性) 仮想記憶 共有ライブラリ UNIX システム記述専用言語 (C) による実装 ( 移植性 ) マイクロ ハードウェアに近い層とそれ以外の層の分離 カーネル 恣意的なまとめ: OS とは「資源を管理」するように進化してきた
  32. 32. OS = 「資源」の管理  「資源」=「物理的資源」+「論理的資源」  「物理的資源」=ハードウェア、もあれば  物理メモリ  記憶装置  I/O…  実体がない「論理的資源」もある  タスク  プロセス  メモリ  ファイル…
  33. 33. OS = 資源の「管理」  「管理」といって具体的に何を指すのか  新しい資源を作ったり、消したり、順序を入れ 替えたりすること  プロセス管理・ファイル管理・メモリ管理  有限の資源を無限に見せかけること  仮想記憶・タイムスライスによる擬似並列処理  プログラマにいろいろな物理資源を抽象化して 共通に見せること  ファイルシステム・ Hardware Abstruction Layer  移植性: H/W をアプリから隠す
  34. 34. UI は?  UI は OS じゃないの?  一般的な定義では、 OS には含まない  UI と OS は切り離して存在しうるため  OS の上に「殻となって」機能するから「シェ ル」と呼ばれる  でも GUI がない Windows や Mac OS X って?  技術的には切り離し可能(のはず)  しかし現実問題、シェルが提供している機能を アプリケーションが使いまくりなので不可分  これは技術じゃなくて商品性の話
  35. 35. Agenda  まずは歴史から  OS の「本分」って何だろう?  ネタになりそうなキーワード列挙
  36. 36. お詫び  ちゃんとした内容で書こうと思ったんですが 知識と時間がなくて余裕で間に合いませんで した。  ということで思いつくキーワードをでたらめ に列挙します  体系的な話をどうするかは検討しましょう
  37. 37. プロセスとスレッド  プロセス=多くの OS における最小の実行単位  独立したメモリ空間を持つ  スレッドはプロセスと似ているがメモリ空間 を共有するのが違い  一個のプロセスの中で複数のスレッドが走る  コンテキスト(実行環境)スイッチング  CPU の時分割処理とマルチ CPU の割り当て  擬似マルチタスクと真のマルチタスク
  38. 38. メモリ管理  ハードウェアのアドレスマップと実メモリと 仮想記憶の関係  ページ IN ・ページ OUT の考え  メモリ管理ユニット (MMU) の仕事  メモリブロックの割り当て戦略
  39. 39. ファイルシステム  そもそも OS においてファイルは必須の概念?  例えば Palm OS  にはファイルはなかった  ファイルシステムの基礎概念  コンテンツと管理ブロック  ジャーナリングファイルシステム  Linux の次世代 FS (Raiser FS, Btrfs) のソースと か読むのも面白いかも
  40. 40. ハードウェアの抽象化  UNIX における抽象化の例  デバイスをファイルに見せる  create / read / write / close  ついでに Plan9  とか  デバイスドライバ  OS の提供する I/F にしたがうことで「 OS  (を 経由してユーザー)から見てすべてのデバイ スを共通に扱える」ためのモジュール  各 OS における H/W の自動認識
  41. 41. ユーザインタフェース  一例として X の基礎  ウィンドウの管理  HID H/W イベントの振り分け  キーボード割り込みを受けてから特定のアプリ ケーションがそのイベントを受けるまで  シェルサービス  OS ではない、シェルが提供しているサービス  Windows のショートカットなど
  42. 42. 特権概念  ユーザーモードとカーネルモードの概念  x86 を例にして特権モードへの遷移を見たり  特権モードでできること、できないこと
  43. 43. 勝手に書き散らして来ましたが  私個人としては OS そのものを作ることにはあ んまり興味がないです(だから「 OS 自作入 門」の輪読とかはちょっと違う)。  もっと一般的な話を、微妙にハードウェアに はみ出したり、アプリ側にはみ出したり、っ て感じでやっていけたらいいな。  こんな変な OS があるよ、という話もしたい。  とはいえランダムな雑談はちとしんどい  体系的なテキストが欲しいよね。
  44. 44. そこで提案。  天下の MIT のテキストを拝借しませんか?  http://ocw.mit.edu/OcwWeb/Electrical­ Engineering­and­Computer­Science/6­828Fall­ 2006/CourseHome/  Lecture Notesも一通り揃ってるし  ボリュームがありすぎるというなら興味がある ところだけつまみ食いしてもいいと思う  いかがでしょうか?
  45. 45. おしまい。 デタラメな資料でごめんなさい。

×