モダンオペレーティングシステム
第1章
オペレーティングシステムの概要
arch B3
pasora
1
最近のコンピュータシステム
全体として複雑
• 1個以上のプロセッサ
• メインメモリ
• ディスク
• キーボード
• ネットワークインタフェース
• 入出力デバイス
全ての構成要素に注意しながらのプログラミングは大変困難
2
オペレーティングシステム
• 全デバイスを管理し、ユーザプログラムに
ハードウェアへの単純なインタフェースを提供
3
下層の複雑さを隠蔽
オペレーティングシステム
• カーネルモードまたはスーパーバイザモードで
実行されるソフトウェア
– ハードウェア保護機構によって
ユーザの改ざんから保護されている
• ユーザモードで実行されるプログラムも
OS に含まれるかどうかは議論の余地がある
4
拡張マシンとしての
オペレーティングシステム
• ハードウェアの詳細を単純で適切な
概念として提供するプログラム
– フロッピーディスクが修正周波数変調で記録
されているかどうかは知ったこっちゃない
• OS はハードウェアを扱いやすい
拡張マシン(仮想マシン)の役割になる
5
リソースマネージャとしての
オペレーティングシステム
• 複雑なシステムの各構成要素全てを管理
– プロセッサ、メモリ、I/Oデバイスを競合使用する
多くのプログラムに整然と割り当てる
– 複数ユーザで利用するリソースを管理・保護する
• 時分割方式
– (シングルコア・シングルスレッド)CPU、プリンタ
• 空間分割方式
– メモリ、ハードディスク等
6
オペレーティングシステムの歴史
• 世界初のデジタルコンピュータ
– Charles Babbage(1792-1871) 「解析エンジン」
– OS なし
– 当時の技術では完成しなかった
– お金がなかった
7
オペレーティングシステムの歴史
第一世代: 真空管と配線盤
• ENIAC
– サイクル時間が秒単位
– 巨大(何万もの真空管)
• OS なし
• 配線板を組み直してプログラムする
– パンチカードの導入
8
オペレーティングシステムの歴史
第二世代: トランジスタとバッチシステム
• 「メインフレーム」
1. プログラムを(紙に)書く
2. カードにパンチする
3. 持っていく
4. コーヒーを飲む
• バッチシステムの採用
9
IBM
1401
IBM
7094
プログラマ
カード
プリント
入力テープ
出力テープ
By ArnoldReinhold (Own work) [CC BY-SA 3.0
(http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
オペレーティングシステムの歴史
第三世代: IC とマルチプログラミング
• System/360
– 1401と7094のように
異なっていた製造ラインを統一
– アーキテクチャと命令セットは同じ
– あるマシンで書かれたプログラムは
ファミリの全マシンで実行可能
→全マシンで実行可能でなければならない
– 科学計算も商用分野の計算もできる
10
Bundesarchiv, B 145 Bild-F038812-0014 / Schaack, Lothar / CC-BY-SA 3.0 [CC BY-SA 3.0 de
(http://creativecommons.org/licenses/by-sa/3.0/de/deed.en)], via Wikimedia Commons
オペレーティングシステムの歴史
第三世代: IC とマルチプログラミング
• マルチプログラミング
– 入出力中に他のジョブが CPU を使用できる
– OS/360 はメモリ中に共存する複数ジョブを
独立して安全に管理保護するハードウェアを持つ
• バッチ処理主体
– 「応答時間を速くしたい」
→時分割方式へ
11
オペレーティングシステムの歴史
第三世代: IC とマルチプログラミング
• CTSS: Compatible Time Sharing System
– 時分割システムの最初の重要なシステム
– MIT
– 7094 を改良
– 普及せず
• MULTICS: MULTiplexed Information and Computing Service
– 成功したが普及せず
– MIT、ベル研究所、GE
– Intel 386 より若干高性能
12
オペレーティングシステムの歴史
第三世代: IC とマルチプログラミング
• DEC PDP-1
– ミニコンピュータ
– 18 bit/word
– 12万ドル(安い)
– PDP-11 で頂点を迎える
13
By Stefan_Kögl (Own work) [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC-BY-SA-3.0
(http://creativecommons.org/licenses/by-sa/3.0/)], via Wikimedia Commons
PDP-11/40
By Matthew Hutchinson (http://www.flickr.com/photos/hiddenloop/307119987/)
[CC BY 2.0 (http://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons
PDP-1
オペレーティングシステムの歴史
第四世代: パソコン
IBM「OS くれよ」
Bill Gates「CP/M を持ってる Digital Research に聞いてみ」
IBM「CP/M(Control Program for Microcomputer) くれよ」
Digital Research「無理」
(Bill Gates「5万ドルで DOS くれよ」)
(Seattle Computer Products「ええで」)
IBM「OS くれよ」
Bill Gates「DOS やるよ」
IBM「DOS 改善してよ」
Bill Gates「MS-DOS 開発するぞ」
14
オペレーティングシステムの歴史
第四世代: パソコン
• MS-DOS
– 80386, 80486上で流行る
– 先進的な機能の多くは UNIX を引き継ぐ
(Microsoft は設立当時 UNIX を売っていた)
• Macintosh
– Steve Jobs
– GUI
15
オペレーティングシステムの歴史
第四世代: パソコン
• Windows
– Macintosh に影響を受ける
– MS-DOS 上のグラフィカルな環境
• Windows 95, Windows 98
– MS-DOS はブート時と互換性を保つために使用
– 16bit のアセンブリ言語を含む
16
オペレーティングシステムの歴史
第四世代: パソコン
• Windows NT (New Technology)
– 完全な 32bit システム
– Windows 2000 は NT 5.0
– Windows 10 は NT 10.0
• UNIX
– X Window System をサポート
17
オペレーティングシステムの世界
メインフレーム用オペレーティングシステム
• 大きなジョブを一度に処理
– バッチ処理
• 保険会社、営業報告
– トランザクション
• 銀行、座席予約
– タイムシェアリング
• 遠隔ユーザによるデータベース問い合わせ
• 例: OS/390
18
オペレーティングシステムの世界
サーバ用オペレーティングシステム
• ネットワークを介して複数ユーザに
サービスを行う
– ハードウェアリソース、ソフトウェアリソースの共有
– 印刷サービス
– ファイルサービス
– Web サービス
• 例: UNIX, Windows 2000, Linux
19
オペレーティングシステムの世界
マルチプロセッサ用オペレーティングシステム
20
オペレーティングシステムの世界
パソコン用オペレーティングシステム
• ワープロ
• スプレッドシート
• インターネットアクセス
• 例: Windows 98, Windows 2000,
Macintosh OS, Linux
21
オペレーティングシステムの世界
リアルタイム用オペレーティングシステム
• 時間が重要となるシステム
– 例:車が組み立て段階に移ったら◯◯する
• ハードリアルタイムシステム
– 決められた時点で動作が必ず生じる必要がある
• ソフトリアルタイムシステム
– デッドラインを超えることが許容できるシステム
• 例: VxWorks (航空・宇宙・防衛用途),
QNX (BlackBerry のベース)
22
オペレーティングシステムの世界
組み込み用オペレーティングシステム
• PDA
• 例: PalmOS, Windows CE
23
オペレーティングシステムの世界
スマートカード用オペレーティングシステム
• CPU を搭載したクレジットカードサイズの
スマートカード上のもの
24
コンピュータハードウェアの概要
25
CPU メモリ
ビデオ
コントローラ
キーボード
コントローラ
ハード
ディスク
コントローラ
バス
キーボード
ハード
ディスク
ディスプレイ
コンピュータハードウェアの概要
プロセッサ
• コンピュータの「頭脳」
1. 命令をメモリからフェッチ
2. デコード
3. 実行
4. 後続命令をフェッチ
26
コンピュータハードウェアの概要
プロセッサ
• 変数と一時的な結果を格納するレジスタを持つ
– 1ワードをメモリからレジスタに格納する命令
– 1ワードをレジスタからメモリに格納する命令
• プログラムカウンタ
– 次にフェッチするべき命令が格納されている
メモリアドレスを格納している
• スタックポインタ
– 現在使用しているスタックの先頭を指している
27
コンピュータハードウェアの概要
プロセッサ
• プログラム状態語
– 比較命令実行後に設定される条件コードビット
– CPU の優先度
– 実行モード(ユーザモードかカーネルモード)
28
コンピュータハードウェアの概要
プロセッサ
• パイプライン方式
– フェッチ、デコード、実行の各ステージの処理を
異なったユニットで行う
29
フェッチ デコード 実行
フェッチ デコード 実行
フェッチ デコード 実行
命令1
命令2
命令3
コンピュータハードウェアの概要
プロセッサ
• スーパースカラ
– 実行ユニットが複数
• 整数演算用、浮動小数点演算用、論理演算用など
– 1度に複数命令がフェッチされ保持バッファへ
– 各実行ユニットは保持バッファに実行可能な
命令が無いか調べ、あれば実行
– プログラムは順序を乱して実行されることも
ある
30
コンピュータハードウェアの概要
プロセッサ
• システムコール
– ユーザプログラムが OS からのサービスを受ける
ために必要
– カーネルへのトラップ
31
コンピュータハードウェアの概要
メモリシステム
• 速ければ速いほどいい
レジスタ
キャッシュ
メインメモリ
ハードディスク
磁気テープ
32
コンピュータハードウェアの概要
メモリシステム
• レジスタ
– CPU と同じ材質で作られている
– CPU と同程度に速い
– 一般的には
32bit CPU では 32bit レジスタが32本
64bit CPU では 64bit レジスタが64本
33
• キャッシュ
– プログラムがメモリワードを
読むとき、キャッシュハードウェアは
そのワードがキャッシュにあるかどうかを調べる
→キャッシュヒット
34
コンピュータハードウェアの概要
メモリシステム
コンピュータハードウェアの概要
メモリシステム
• メインメモリ
– RAM (Random Access Memory) とも呼ばれる
– 『現在、主メモリの大きさは、数十〜数百MB』
35
• ハードディスク
– 複数の金属円盤で構成され、
5400, 7200, 10800 rpm で回転する
36
コンピュータハードウェアの概要
メモリシステム
コンピュータハードウェアの概要
メモリシステム
• 磁気テープ
– 安い
– 遅い
37
コンピュータハードウェアの概要
メモリシステム
• ROM (Read Only Memory)
– 不揮発性
• EEPROM (Electrically Erasable ROM)
– 不揮発性
– R/W
• CMOS (Complementary MOS)
– 金属酸化膜半導体電界効果トランジスタ
– 揮発性、省電力
– 時計、起動回数
38
コンピュータハードウェアの概要
メモリシステム
• 複数プログラムを一度にメモリに格納することは
CPU の使用効率から望ましい
1. プログラム同士、あるいはプログラムからカーネル
をどのように保護するか
2. どのように再割り当てを行うか
• プログラムがコンパイル、リンクされる時点ではロード時の
メモリ内の位置を知らない
→全アドレスを調べ、ロード時にプログラムを再割当てする
→実行中に再割当てする
39
コンピュータハードウェアの概要
入出力デバイス
• コントローラとデバイス自身で構成される
• コントローラはデバイス制御の
複雑さを OS に対して隠蔽する
• コントローラに対応する
デバイスドライバが必要
– OS ごとに異なる
40
コンピュータハードウェアの概要
入出力デバイス
• ドライバはカーネルモードで動く
• 新ドライバの実装方法
1. 新ドライバをカーネルと再リンクし立ち上げる
2. OS ファイル内にデバイス用のエントリを作り
リブートする
3. リブートせず新たなドライバを受け付け
インストールする
41
コンピュータハードウェアの概要
入出力デバイス
• ビジーウェイト
1. プログラムがシステムコールを発行
2. OS が適切なドライバを呼び出す
3. ドライバは入出力を開始
4. デバイスが入出力を完了したかポーリングして待つ
– デバイス処理完了まで CPU を浪費してしまう欠点
42
コンピュータハードウェアの概要
入出力デバイス
• 割り込み
1. ドライバはコントローラにやるべき処理を書き込み、
コントローラはデバイスを起動する
2. 入出力を終了すると割り込みコントローラに
バスの専用ラインを用いて通知する
3. 割り込みコントローラの割り込み受け付けが可能な場合、
CPU 上のあるピンに信号を送り通知する
4. 割り込みコントローラはデバイス番号をバス上に流す
– CPU はデバイス番号から完了したデバイスを知ることができる
43
コンピュータハードウェアの概要
入出力デバイス
• 割り込み
– CPU が割り込みを受け付けると
プログラムカウンタと
プログラム状態語は
カレントスタックに積まれ、
CPU がカーネルモードに切り替わる
– 処理が終了したら中断した命令から再開
44
コンピュータハードウェアの概要
バス
• ISA (Industrial Standard Architecture)
– IBM PC/AT のバス
– 動作速度 8.33MHz、2バイト同時転送
– 最高速度は16.67 MB/s
• PCI (Peripheral Component Interconnect)
– ISA の後継
– Intel が開発
– 動作速度 66MHz、8バイト同時転送
– 転送速度は528 MB/s
45
• IDE
– ディスク、CD-ROM 向け
• USB (Universal Serial Bus)
– キーボードやマウスなどの低速の入出力デバイス向け
– 4本の配線コネクタのうち2本は電源供給
– 全 USB デバイスは1つの USB デバイスドライバを共有
→ 新たな USB デバイスを追加する際に
新たなドライバを実装する必要が無い
46
コンピュータハードウェアの概要
バス
コンピュータハードウェアの概要
バス
• SCSI (Small Computer System Interface)
– かなりのバンド幅を必要とするデバイス向け
– 160 MB/s
• IEEE 1394
– 50 MB/s
47
コンピュータハードウェアの概要
バス
• プラグ・アンド・プレイ (plug and play)
– システムが自動的に入出力デバイスの情報収集
を行い、割り込みレベルと入出力アドレスを決定
plug and pray 🙏
48

Modern Operating System 1_1