オペレーティングシステム

コンピュータサイエンス教科書シリーズ 7

オペレーティングシステム

本書は,オペレーティングシステム(OS)を基本的な機能を提供する仮想計算機と,より高度なサービスを提供するサブシステムに分類し,その分類に基づいて基本的な概念と機構およびそれらの関係が理解できるよう解説した。

ジャンル
発行年月日
2008/03/21
判型
A5
ページ数
240ページ
ISBN
978-4-339-02707-5
オペレーティングシステム
在庫あり

定価

3,190(本体2,900円+税)

カートに入れる

電子版を購入

購入案内

  • 内容紹介
  • まえがき
  • 目次
  • 著者紹介

本書は,オペレーティングシステム(OS)を基本的な機能を提供する仮想計算機と,より高度なサービスを提供するサブシステムに分類し,その分類に基づいて基本的な概念と機構およびそれらの関係が理解できるよう解説した。

オペレーティングシステムは,アプリケーション・プログラムや利用者に対して共通的な機能を提供すると共に,ハードウェアを効率良く利用するための基盤ソフトウェアである。本書では,オペレーティングシステムを基本的な機能を提供する仮想計算機と,より高度なサービスを提供するサブシステムに分類し,その分類に基づいてオペレーティングシステムの基本的な概念と機構およびそれらの関係が理解できるよう解説している。

まず,基本的な仮想計算機の機能をプロセッサ,デバイス,メモリに分け,それぞれを解説している。高度なサービスを提供するサブシステムには多様なものがあるが,多くのオペレーティングシステムで実現されており,重要性の高いファイルシステム,ネットワーク,並列分散処理,ユーザインタフェース,保護とセキュリティを本書では取り上げた。

また,オペレーティングシステムは複雑なソフトウェアであり,複雑さを克服するために抽象化,構造化,仮想化が行われている。オペレーティングシステムは実用的なシステムであるので,厳密解を求めるのではなく,現実的な効果が得られるようトレードオフが考慮されている。これらの考え方がオペレーティングシステムにどのように繰返し適用されているかがわかるように,注意を払った。

現在のオペレーティングシステムにおいて重要な概念と機構を理解することに重点を置き,歴史的経緯にはこだわらなかった。このため,項目の選択や項目の解説順序が他の類書と異なっている点がある。重要な項目については従来のテキスト同様に解説している。また,特定のオペレーティングシステムに依存した理解を防ぐために,具体的なオペレーティングシステムについては必要最小限しか触れなかった。オペレーティングシステムの発展や具体的なオペレーティングシステムの詳細については参考文献をあたられたい。

紙幅の関係から省いた内容や詳しい参考文献,演習問題で利用するプログラム等の補足情報をWebで公開している。検索エンジンで「OS コロナ社 大澤」の3語で検索して,サイトを見つけ,そのサイトの内容を参照していただきたい。

本書を執筆する機会を与えていただき,原稿に対する貴重なコメントをいただいた電気通信大学大学院の曽和将容先生に深く感謝いたします。また,原稿を読んでいただき,数多くの有益なご指摘をいただいた豊橋技術科学大学の市川周一先生,独立行政法人メディア教育開発センターの浅井紀久夫先生,そして,筆者の遅筆を辛抱強く待っていただき,ひとかたならぬお世話をいただいたコロナ社の皆様に心よりお礼申し上げます。

2008年1月
大澤範高

1 オペレーティングシステムとは
1.1 重要な概念
1.2 コンピュータの構造
1.3 オペレーティングシステム構造
1.4 仮想計算機としてのオペレーティングシステム
 1.4.1 仮想プロセッサ
 1.4.2 仮想デバイス
 1.4.3 仮想メモリ
1.5 サービス提供システムとしてのオペレーティングシステム
1.6 オペレーティングシステムの構造,機能,運用法
演習問題
2 実行管理
2.1 実行主体
2.2 入出力処理とアイドル状態
2.3 マルチタスキング
2.4 実行状態
2.5 実行モード
2.6 割込み
 2.6.1 ベクタ割込みとポーリング
 2.6.2 割込み処理の流れ
 2.6.3 割込みレベル
 2.6.4 タイマ割込み
2.7 ディスパッチャ
2.8 実行スケジューリング
 2.8.1 タイミング
 2.8.2 優先度付与基準
2.9 実行スケジューリング・アルゴリズム
 2.9.1 先着順
 2.9.2 時間順
 2.9.3 ラウンドロビン
 2.9.4 実時間スケジューリング
 2.9.5 締切順
 2.9.6 レート・モノトニック
演習問題
3 同期・通信
3.1 同期・排他制御
 3.1.1 相互排除の条件
 3.1.2 割込み禁止
 3.1.3 フラグ
 3.1.4 不可分命令
 3.1.5 ビジーウェイト
3.2 セマフォ
3.3 モニタ
3.4 優先度逆転
 3.4.1 優先度継承アルゴリズム
 3.4.2 優先度上限アルゴリズム
3.5 デッドロック
3.6 デッドロック解決法
 3.6.1 防止
 3.6.2 回避
 3.6.3 回復
 3.6.4 楽観的同期
3.7 情報交換
 3.7.1 メッセージ通信
 3.7.2 同期式・非同期式通信
 3.7.3 メモリ上の情報交換方式
演習問題
4 デバイス管理
4.1 デバイス
 4.1.1 デバイスコントローラ
 4.1.2 デバイスの入出力
 4.1.3 ダイレクトメモリアクセス
 4.1.4 バス
 4.1.5 状態変化の検出
4.2 デバイスの分類
4.3 デバイスドライバ
4.4 バッファリング
 4.4.1 ダブルバッファ
 4.4.2 バッファプール
 4.4.3 リングバッファ
4.5 ブロッキング
4.6 スプーリング
4.7 ディスク装置
 4.7.1 ボリューム
 4.7.2 固定ハードディスクの構造
 4.7.3 アクセス時間
4.8 ディスクアクセススケジューリング
 4.8.1 先着順
 4.8.2 最短シーク時間
 4.8.3 SCAN
 4.8.4 C-SCAN
 4.8.5 LOOKとC-LOOK
 4.8.6 ディスクアクセススケジューリング例
 4.8.7 ハードディスク装置の発展
4.9 予測に基づいたアクセス高速化技法
 4.9.1 プリフェッチ
 4.9.2 キャッシング
4.10 表示装置
4.11 プラグ・アンド・プレイ
演習問題
5 記憶領域管理
5.1 アドレス
5.2 記憶領域の基本管理手法
 5.2.1 可変長領域管理
 5.2.2 固定長領域管理
 5.2.3 ブロック管理方式
5.3 コンパクション
5.4 ガーベジコレクション
5.5 ページング
 5.5.1 ページテーブル
 5.5.2 多段ページテーブル
 5.5.3 逆ページテーブル
 5.5.4 アドレス変換キャッシュ
 5.5.5 ページ共有
 5.5.6 ページ保護
5.6 セグメンテーション
演習問題
6 仮想記憶
6.1 オーバーレイ
6.2 仮想記憶システム
6.3 プロセス・スワッピング
6.4 デマンドページング
 6.4.1 処理の流れ
 6.4.2 ページアウト・デーモン
6.5 参照の局所性
 6.5.1 ワーキングセットモデル
 6.5.2 ページフォールト率
6.6 置換えアルゴリズム
 6.6.1 FIFO
 6.6.2 OPT
 6.6.3 LRU
 6.6.4 クロック・アルゴリズム
6.7 スラッシング
演習問題
7 ファイルシステム
7.1 ファイル
7.2 ファイルシステムの機能
7.3 名前空間
 7.3.1 ディレクトリ
 7.3.2 階層ディレクトリ
 7.3.3 ハッシュ表
7.4 ファイルの属性
7.5 ファイルの内容領域管理
 7.5.1 FATファイルシステム
 7.5.2 UNIXファイルシステム
7.6 リンク
7.7 メモリ・マップト・ファイル
7.8 ログ構造ファイルシステム
7.9 耐故障性
 7.9.1 ジャーナリング・ファイルシステム
 7.9.2 耐故障性ディスク
演習問題
8 ネットワーク
8.1 データ交換モデル
 8.1.1 回線交換モデル
 8.1.2 パケット交換モデル
8.2 ネットワーク・トポロジ
 8.2.1 代表的トポロジ
 8.2.2 物理構造と論理構造
8.3 プロトコル
8.4 インターネットプロトコル
 8.4.1 アドレス
 8.4.2 カプセル化
 8.4.3 ヘッダ構造
8.5 グループ通信方式
8.6 URI
演習問題
9 並列分散処理
9.1 分散処理
9.2 クライアント・サーバ・モデル
9.3 遠隔手続き呼出し
 9.3.1 データ表現
 9.3.2 遠隔手続き呼出しセマンティクス
9.4 遠隔共有
 9.4.1 デバイス遠隔共有
 9.4.2 分散共有ファイル
 9.4.3 分散共有メモリ
9.5 分散キャッシュ
 9.5.1 キャッシュ・コヒーレンス
 9.5.2 メッセージ通信とメモリ共有の双対性
9.6 並列処理
演習問題
10 ユーザインタフェース
10.1 キャラクタユーザインタフェース
10.2 グラフィカルユーザインタフェース
10.3 ウィンドウシステム
10.4 国際化・地域化
 10.4.1 ロケール
 10.4.2 文字コード
 10.4.3 符号化方式
10.5 インプットメソッド
 10.5.1 フロントエンド方式とバックエンド方式
 10.5.2 変換エンジン
演習問題
11 保護とセキュリティ
11.1 保護
 11.1.1 アクセス制御行列
 11.1.2 ケーパビリティリスト
 11.1.3 アクセス制御リスト
 11.1.4 ロック・キー機構
11.2 束モデル
11.3 暗号
 11.3.1 共通鍵暗号
 11.3.2 公開鍵暗号
11.4 認証
 11.4.1 データ認証
 11.4.2 ユーザ認証
 11.4.3 公開鍵基盤
11.5 セキュリティ
11.6 悪意のあるソフトウェア
 11.6.1 トロイの木馬
 11.6.2 スパイウェア
 11.6.3 コンピュータウィルス
 11.6.4 ワーム
 11.6.5 ルートキット
11.7 攻撃
 11.7.1 ソーシャル・エンジニアリング
 11.7.2 サービス不能
 11.7.3 バッファオーバーラン
11.8 防御
 11.8.1 ワクチン
 11.8.2 ネットワーク・ファイアウォール
 11.8.3 サンドボックス
11.9 事後の検証
演習問題
12 構成法と事例
12.1 関心の分離
12.2 構成法
12.3 仮想計算機
 12.3.1 ハードウェア支援による仮想計算機
 12.3.2 ソフトウェアシミュレーションによる仮想計算機
12.4 運用と管理
 12.4.1 ブートストラップ
 12.4.2 オペレーティングシステムの初期化
 12.4.3 オペレーティングシステムの終了
12.5 オペレーティングシステム事例
 12.5.1 Linux
 12.5.2 Plan9
 12.5.3 Windows
 12.5.4 MacOS X
 12.5.5 ITRON
 12.5.6 特殊化されたOS
演習問題
13 歴史と展望
13.1 オペレーティングシステムの歴史
13.2 将来展望
引用・参考文献
演習問題解答
索引

大澤 範高(オオサワ ノリタカ)