What's Operating System?

45
Operating System って なんだろう? おがさわらなるひこ naruoga at twitter, gmail, hatena @ Study Party Basics of Computer

description

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

Transcript of What's Operating System?

Page 1: What's Operating System?

Operating System ってなんだろう?

おがさわらなるひこnaruoga at twitter, gmail, hatena

@ Study Party Basics of Computer

Page 2: What's Operating System?

その前に重要な注釈この資料を書いている人はOS の専門家でもなければ

カーネルのソース一つ読んだことがないたんなるうんちく好きです。

間違ってもこの資料を本気にしないで自分で確かめてね。

あと日立よりの記述が多いのはぼくの大学の恩師が日立中研で OS の

開発をやってたからです。

さらに言うと組み込み系はなにも知らないのでなかったことになってます。ひどい。

Page 3: What's Operating System?

Agenda

まずは歴史から OS の「本分」って何だろう? ネタになりそうなキーワード列挙

Page 4: What's Operating System?

Agenda

まずは歴史から OS の「本分」って何だろう? ネタになりそうなキーワード列挙

Page 5: What's Operating System?

OS 前史

コンピュータ黎明期には OS は存在しなかった 昔のコンピュータはパンチカードやテープで

プログラムを食わせて、順に実行していくのが普通だった

複数のプログラム間を調停する必要はない プログラムはそのコンピュータ専用に機械語

(後にアセンブラ)でかかれるのが当然 ハードウェアの抽象化などいらない

Page 6: What's Operating System?

OS の誕生①

SHARE (IBM  のユーザーズグループ )  アセンブリでコケたジョブは取り除くとか、暴

走したジョブを殺すとか人手やるの大変 GM と North Americal Aviation が GM/NAA I/O 

system  ってのを作ったよ! と自慢 SHARE Operating System (SOS)  の提案 IBM 704  にて実装 (1953)

IBM 帝国の基礎となった存在

Page 7: What's Operating System?

OS の誕生②

こういう発想は SOS  が最初ではなかった 簡単なジョブ管理をするソフト「モニタ」 例えば日立中研ではモニタを 1963 年には自前

で書いていた 商用 FORTRAN の発売より必要とされた

ポイントは、このようなソフトに Operating System という名前がついたこと

元々は IBM 用語

Page 8: What's Operating System?

TSS ショック①

OS でバッチジョブが効率化して分かったこと 9 割のジョブは本体処理が非常に小さいので、

前準備と後始末の時間がムダになる 並列で実行していく方が効率がいい

「タイムシェアリングシステム」考案 CPU タイムを分割して複数ジョブを実行する マルチプロセス、マルチユーザの時代到来 最初の実装は MIT の McCathy (Lisp の発明者 )

主導 (1957) on modified IBM 704 

Page 9: What's Operating System?

TSS ショック②

「ジョブ」から「プロセス」へ 逐次実効される「ジョブ」から並列実行される

「プロセス」という概念の登場 有限のハードウェア資源を分け合う

「資源管理」が OS の機能として認識される 特権レベルという考え方の導入

ファイルの所有権といったセキュリティの概念の萌芽が産まれる

管理者対ハッカーの長い戦いの始まり

Page 10: What's Operating System?

MULTICS①

MIT の Saltzer教授を中心に、 GE ( 後にコンピュータ部門を Honeywell に売却 ) 、 AT&Tベル研究所の共同研究による理想の OS

高水準言語 (PL/I) による実装 仮想記憶の実現 完全なセキュリティモデル ダイナミックリンクライブラリ

1964 年、 GE のフラッグシップモデル GE ー645 をターゲットに始まる

Page 11: What's Operating System?

MULTICS②

理想が高邁過ぎて実装が遅れに遅れる ベル研が撤退を決定 (1969) 紆余曲折あったものの完成はした (1975)  が、ビジネス的には大失敗

しかし、そこで提唱されたアイディアは非常に革新的であり、今の OS に取り込まれている

仮想記憶などのアイディアについては論文として公開していたため、それを読んだ日立の技術者に実現の先を越されるという逸話あり

Page 12: What's Operating System?

UNIX の誕生①

ベル研の Ken Tompson と Dennis Ritcheほか MULTICS から撤退してちょっとヒマになった ちょっとした暇つぶしに研究所に落ちてるミニ

コン (PDP­7) でゲームでも遊べる OS 作ろうか 仮想記憶? 要らね要らね。 ダイナミックリンクなんか役にたたんだろ アセンブラでごりごり書いちゃえ

んでできたのが UNIX (1970)

後に Ritche  が「俺の作った言語で書こうよ」と持ちかけて C でポーティング (1973)

Page 13: What's Operating System?

UNIX の誕生②

UNIX の偶然 研究者が使いたいものに割り切った仕様だった

ので、研究機関や大学に好評 AT&T は当時ソフトビジネスが禁止されていた

欲しいところ(研究所や大学)に実費で配布 規模もそこそこなので OS の研究にちょうどいい 仕様が小さい言語 (C) で書かれていたので移植性

が高い

研究機関・大学における標準の地位を得る

Page 14: What's Operating System?

西海岸から来た悪魔君

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 ですね。

Page 15: What's Operating System?

視点を変えて~言語マシン~

厳密な定義は置くとして、 OS とはハードとソフトと人をつなぐもの、と雑駁にいうと、「ある言語の中だけでそのコンピュータの全機能が扱える」ものがあったら、その言語はOS と言えるじゃないか!

Lisp マシン (Symbolics, LMI, InterLisp/D, ELIS)

今だと Emacs が近いかも。 Pascal マシン (P­code  マシン ) Smalltalk­80 (Alto)

Page 16: What's Operating System?

マイコン登場

Intel が出した 8080 というチップをきっかけに噴出した自作コンピュータブーム

高水準言語を使いたいという声に、ダートマス大学で発明された BASIC という教育用言語に目をつけた人たちがいた

その中にはヒットしたマイコンキット MITS Altair向けに BASIC を作って売った Bill Gatesと Paul Allen のコンビも

これは「ソフトを売って儲けるってありなんだ」というビジネスモデルを発明したということで画期的な事件ですが OS とは関係ないね

Page 17: What's Operating System?

マイコン BASIC 時代

初期のマイコン用 BASIC は初期汎用機のアセンブラと同じく OS的機能はなかった

Apple ][  での革新= OS 化 電源 ON で ROM から BASIC フロッピーディスクのファイルを

管理できる 日本における各種 BASIC標準搭載マシンにつ

いても同様であり、これが「始めて触れたOS らしきもの」という人は多いのでは?

Page 18: What's Operating System?

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 は他から買ってきて大急ぎで仕上げた

肝心なのは、どちらもせいぜいファイル管理ぐらいしか機能を提供してなかったこと

Page 19: What's Operating System?

笑ってお仕事Windows!

OS と言える初の Windows 、Windows 95  の登場

ほぼ全ての資源管理は Windows側に移る それまでは DOS や BIOS に多くを依存 MS 自ら「 Operating Environment 」と言っていた

32bit CPU の機能を利用し、今までの擬似マルチタスクでなく完全なマルチタスクへ移行

ただし 堅牢性やセキュリティよりも互換性を重視した

Page 20: What's Operating System?

ちょっと脱線~マイクロカーネル~

OS の機能はどんどん肥大化 プラットフォームも増大

OS から「本当に必要な部分」を切り出して、それ以外の機能はその上に載せればいいんじゃないか?

そしたら移植しなきゃいけない部分が減るよね 「マイクロカーネル」という概念の登場

CMU の Mach カーネルが有名 「これからの OS は全てマイクロカーネル」?

Page 21: What's Operating System?

Mac OS X のご先祖 NeXTstep

「ソーダ水売り」に Apple から追放された Steve Jobs が世に問うたワークステーション NeXT Cube

商売としてはまあアレでしたが…… その OS 、 NeXTstep は Mac OS X のご先祖

Mach  カーネルの上に BSD を載せる Interface Builder で GUI プログラミングも楽々 Objective­C で先進的オブジェクト指向開発! Display Postscript によるクールな GUI

Page 22: What's Operating System?

WNT == VMS++

MS は DOS から発展した Windows の限界を感じ、もと DEC の Dave Cutler をスカウト

NT = New Technology マイクロカーネルを採用

Win32以外に POSIX (Unix)  なども動作 x86以外に DEC Alpha 、 IBM PowerPC 、 MIPS

などの CPU アーキテクチャにも対応 新しいファイルシステム NTFS 詳しくは「闘うプログラマー」読め

今の MS の繁栄を築いたが、時代とともにNTFS以外はほとんどなかったことに……

Page 23: What's Operating System?

国産 OS ってどうよ①

1960 年代の汎用機全盛時代は各社 (富士通、日立、日本電気、東芝、三菱、沖など ) は独自アーキテクチャで OS 開発も行っていた

1970 年代に入ると IBM System/360 という歴史的名機が誕生(話すと長くなるので割愛)

非関税障壁で産業保護を狙うが守りきれない そこで 1972 年、業界再編により「互換機路線」を指示

独自アーキテクチャ、独自 OS の道を断つ だから役人って奴は……

Page 24: What's Operating System?

国産 OS ってどうよ② TRON (The Real­time Operating system Nucleus)

東京大学、坂本健助教授 ( 当時 ) 提案 いろいろ派生はあるけどここでは B­TRON の話

B­TRON 仮身・実身モデルを中心としたユニークな OS 通商産業省の外郭団体 CEC によって全小学校へ

の標準環境としての導入が決まりかける が、アメリカから非関税障壁とのクレーム

え?国際規格だから誰でも実装できるんだけど? 結局ビビってお流れ だから役人って奴は……

Page 25: What's Operating System?

Minix Operating System

独禁法の縛りが解けて UNIX のソースコードは手軽に手に入れられるものではなくなった

機能が増えた代償に OS の勉強として手軽に読んでいじるものではなくなってしまった

アムステルダム自由大学の A.S.Tanenbaum教授が自著の付録として 16bit PC で動く軽量な学習用 Unix like OS 「 Minix 」を開発

だれもがいじれ、全容が把握できる OS 書籍としての copyright だったため自由に改変で

きない不満が募る (32bit 化、仮想記憶… )

Page 26: What's Operating System?

まずは歴史から~ Linux 誕生~

ヘルシンキ大学の院生 Linus Torvalds もこの状況にイライラしていた

いっそのことフルスクラッチで作っちゃえ! できたよー、と Minix  コミュニティに投下 一気に大ブレイク!

これは別に Linus が天才だったわけでもなければ Minix がへぼかったわけでもない。たまたまインターネットによるコラボレーションという時代の波にうまく乗ったこと、 Minix が最初に書かれたころに比べると

高性能の PC が入手しやすい時代になっていたということ。要はタイミングが全て。

Page 27: What's Operating System?

AST 先生 vs Linus 論争

詳しくはネットで見ろことで一点だけ、 AST 「今更モノリシックカーネル開発するとか

何?  Linux は i386 しか考えてないやん?」 Linus 「じゃ成功したマイクロカーネルって?先生の例は商業的に成功してないよね」

さて 2010 年になってみると 今純粋な形で商業的に成功しているマイクロ

カーネルは Machぐらいだが、これは偶然 Linux は 10 を越えるプラットフォームに対応

Page 28: What's Operating System?

まずは歴史から~まとめ①~

非常に大雑把にいってしまうと組み込み系を除く OS は次の三つに集約されてしまった

汎用機用 OS/360  系列 POSIX 互換 OS (いわゆる Unix Like OS) Windows NT 系

Mac  は? OS をどこまで OS として定義するかだけど、

Mach + BSD  にガワをかぶせただけというオレ解釈(異論大歓迎)

Page 29: What's Operating System?

まずは歴史から~まとめ②~

研究レベルはともかくとして、完全に新しい概念の OS というのは長いこと現れていない

しかし、別の潮流が 趣味としての OS 自分が作りたいから OS を作る 今ある概念を一度捨ててみたり プロジェクトとして成立したものはなさそうだ

が、多分作っている人たちが望んでいない OS 作りを個人のホビーとする動き

Page 30: What's Operating System?

Agenda

まずは歴史から OS の「本分」って何だろう? ネタになりそうなキーワード列挙

Page 31: What's Operating System?

歴史を見てきましたが出来事 概念OS の誕生 簡易的なジョブ管理

TSS マルチプロセスの実現( CPU の仮想化)プロセス管理特権レベルの導入3A ( 認証・権限・課金 ) の概念の導入

MULTICS 高水準言語 (PL/I) による実装(移植性)仮想記憶共有ライブラリ

UNIX システム記述専用言語 (C) による実装 (移植性 )

マイクロカーネル

ハードウェアに近い層とそれ以外の層の分離

恣意的なまとめ: OS とは「資源を管理」するように進化してきた

Page 32: What's Operating System?

OS = 「資源」の管理

「資源」=「物理的資源」+「論理的資源」 「物理的資源」=ハードウェア、もあれば

物理メモリ 記憶装置 I/O…

実体がない「論理的資源」もある タスク プロセス メモリ ファイル…

Page 33: What's Operating System?

OS = 資源の「管理」

「管理」といって具体的に何を指すのか 新しい資源を作ったり、消したり、順序を入れ替えたりすること

プロセス管理・ファイル管理・メモリ管理 有限の資源を無限に見せかけること

仮想記憶・タイムスライスによる擬似並列処理 プログラマにいろいろな物理資源を抽象化して共通に見せること

ファイルシステム・ Hardware Abstruction Layer

移植性: H/W をアプリから隠す

Page 34: What's Operating System?

UI は?  UI は OS じゃないの?

一般的な定義では、 OS には含まない UI と OS は切り離して存在しうるため OS の上に「殻となって」機能するから「シェ

ル」と呼ばれる でも GUI がない Windows や Mac OS X って?

技術的には切り離し可能(のはず) しかし現実問題、シェルが提供している機能を

アプリケーションが使いまくりなので不可分 これは技術じゃなくて商品性の話

Page 35: What's Operating System?

Agenda

まずは歴史から OS の「本分」って何だろう? ネタになりそうなキーワード列挙

Page 36: What's Operating System?

お詫び

ちゃんとした内容で書こうと思ったんですが知識と時間がなくて余裕で間に合いませんでした。

ということで思いつくキーワードをでたらめに列挙します

体系的な話をどうするかは検討しましょう

Page 37: What's Operating System?

プロセスとスレッド

プロセス=多くの OS における最小の実行単位 独立したメモリ空間を持つ

スレッドはプロセスと似ているがメモリ空間を共有するのが違い

一個のプロセスの中で複数のスレッドが走る コンテキスト(実行環境)スイッチング CPU の時分割処理とマルチ CPU の割り当て 擬似マルチタスクと真のマルチタスク

Page 38: What's Operating System?

メモリ管理

ハードウェアのアドレスマップと実メモリと仮想記憶の関係

ページ IN・ページ OUT の考え メモリ管理ユニット (MMU) の仕事 メモリブロックの割り当て戦略

Page 39: What's Operating System?

ファイルシステム

そもそも OS においてファイルは必須の概念? 例えば Palm OS  にはファイルはなかった

ファイルシステムの基礎概念 コンテンツと管理ブロック ジャーナリングファイルシステム

Linux の次世代 FS (Raiser FS, Btrfs) のソースとか読むのも面白いかも

Page 40: What's Operating System?

ハードウェアの抽象化

UNIX における抽象化の例 デバイスをファイルに見せる create / read / write / close ついでに Plan9  とか

デバイスドライバ OS の提供する I/F にしたがうことで「 OS  (を経由してユーザー)から見てすべてのデバイスを共通に扱える」ためのモジュール

各 OS における H/W の自動認識

Page 41: What's Operating System?

ユーザインタフェース

一例として X の基礎 ウィンドウの管理 HID H/W イベントの振り分け

キーボード割り込みを受けてから特定のアプリケーションがそのイベントを受けるまで

シェルサービス OS ではない、シェルが提供しているサービス Windows のショートカットなど

Page 42: What's Operating System?

特権概念

ユーザーモードとカーネルモードの概念 x86 を例にして特権モードへの遷移を見たり 特権モードでできること、できないこと

Page 43: What's Operating System?

勝手に書き散らして来ましたが

私個人としては OS そのものを作ることにはあんまり興味がないです(だから「 OS 自作入門」の輪読とかはちょっと違う)。

もっと一般的な話を、微妙にハードウェアにはみ出したり、アプリ側にはみ出したり、って感じでやっていけたらいいな。

こんな変な OS があるよ、という話もしたい。 とはいえランダムな雑談はちとしんどい

体系的なテキストが欲しいよね。

Page 44: What's Operating System?

そこで提案。

天下の MIT のテキストを拝借しませんか? http://ocw.mit.edu/OcwWeb/Electrical­

Engineering­and­Computer­Science/6­828Fall­2006/CourseHome/

Lecture Notesも一通り揃ってるし ボリュームがありすぎるというなら興味がある

ところだけつまみ食いしてもいいと思う いかがでしょうか?

Page 45: What's Operating System?

おしまい。デタラメな資料でごめんなさい。