1. OSの基本概念と概要 MOC
- OSの定義と役割
- OSの歴史と進化
- 初期のOS (存在しない時代、モニタープログラム)
- バッチ処理システム (Batch Processing System)
- 多重プログラミング
- 時分割システム
- リアルタイムオペレーティングシステム (RTOS - Real-Time Operating System)
- 分散オペレーティングシステム (Distributed Operating System)
- ネットワークオペレーティングシステム (Network Operating System)
- 組み込みオペレーティングシステム (Embedded Operating System)
- モバイルオペレーティングシステム (Mobile Operating System) (Android, iOSなど)
- クラウドOS (Cloud Operating System) (概念)
- OSの構造 (アーキテクチャ)
- システムコール (System Calls)
- OSのブートプロセス (Boot Process)
2. プロセス管理 (Process Management) MOC
- プロセスとは
- プロセススケジューリング (Process Scheduling)
- スケジューリングの目的 (CPU使用率向上、スループット向上、ターンアラウンドタイム短縮、待ち時間短縮、応答時間短縮)
- スケジューリングキュー (Scheduling Queues)
- スケジューラ (Scheduler)
- Job Scheduler)
- CPU Scheduler)
- Swapper) (スワッピング)
- ディスパッチャ (Dispatcher)
- スケジューリング基準 (Scheduling Criteria)
- CPUスケジューリングアルゴリズム MOC
- 非プリエンプティブスケジューリング (Non-preemptive Scheduling)
- プリエンプティブスケジューリング (Preemptive Scheduling)
- (オプション) リアルタイムスケジューリングアルゴリズム (Rate Monotonic, Earliest Deadline First)
- (オプション) マルチプロセッサスケジューリング (対称型/非対称型、プロセッサアフィニティ、負荷分散)
- プロセス生成と終了
- プロセス間通信 (IPC - Inter-Process Communication) MOC
- IPCの必要性 (情報共有、計算の高速化、モジュール性、利便性)
- 共有メモリシステム (Shared Memory Systems)
- メッセージパッシングシステム (Message Passing Systems)
- (オプション) パイプ (Pipes) (UNIX系)
- (オプション) ソケット (Sockets) (ネットワークIPC)
- (オプション) Remote Procedure Call (RPC)
- スレッド (Threads) MOC
- スレッドの定義 (プロセス内の実行単位、Lightweight Process - LWP)
- スレッドの利点 (応答性向上、リソース共有、経済性、スケーラビリティ)
- シングルスレッドプロセスとマルチスレッドプロセス
- ユーザースレッド (User Threads) とカーネルスレッド (Kernel Threads)
- マルチスレッディングモデル
- スレッドライブラリ (Pthreads, Java Threads, Windows Threads)
- スレッドプール (Thread Pool)
- Coroutines)
3. プロセス同期 (Process Synchronization) MOC
- 同期の必要性
- クリティカルセクション問題 (Critical Section Problem)
- ソフトウェアベースの解決策
- ハードウェアサポートによる解決策
- 同期ツール
- セマフォ (Semaphore)
- Mutual Exclusion Lock)
- モニター (Monitor) (高水準同期構成体)
- モニターの仕組み (相互排除、条件変数)
- 条件変数 (Condition Variables) (wait, signal, broadcast)
- (オプション) バリア (Barrier)
- (オプション) リーダーライターロック (Readers-Writer Lock)
- デッドロック (Deadlocks)
- デッドロックの定義 (複数のプロセスが互いに待ち状態)
- システムモデル (リソースの種類、要求・使用・解放)
- デッドロック発生の4条件 (Coffman conditions)
- リソースアロケーショングラフ (Resource-Allocation Graph)
- デッドロックの取り扱い方法
4. メモリ管理 (Memory Management) MOC
- 基本概念
- 単純なメモリ管理
- 単一連続割り当て (Single Contiguous Allocation) (ベアメタル、初期OS)
- 固定区画方式 (Fixed Partitioning)
- Dynamic Partitioning)
- 外部断片化 (External Fragmentation)
- Memory Compaction)
- 動的記憶域割り当て問題 (ホール配置アルゴリズム) (First-fit, Best-fit, Worst-fit)
- スワッピング (Swapping)
- ページング (Paging) MOC
- ページングの基本概念 (固定サイズのページとフレーム)
- ページ (Page) とページフレーム (Page Frame)
- ページテーブル (Page Table)
- ページテーブルエントリ (PTE) (フレーム番号、有効ビット、保護ビット、参照ビット、ダーティビットなど)
- ページテーブルの配置場所 (主記憶)
- ページテーブルベースレジスタ (PTBR)
- ページングにおけるアドレス変換の仕組み
- ページングにおける内部断片化 (最終ページ)
- ページテーブルの構造
- 連想メモリ (Associative Memory)
- 共有ページ (Shared Pages)
- コピーオンライト (Copy-on-Write - COW)
- セグメンテーション (Segmentation) MOC
- セグメンテーションとページングの組み合わせ MOC (例: Intel x86)
- 仮想記憶 (Virtual Memory) MOC
- 仮想記憶の概念と利点 (大容量アドレス空間、プロセス分離、効率的なプロセス生成)
- デマンドページング (Demand Paging)
- ページ置き換えアルゴリズム (Page Replacement Algorithms) (ページフォールト発生時)
- フレーム割り当て (Allocation of Frames)
- スラッシング (Thrashing)
- (オプション) メモリマップドファイル (Memory-Mapped Files)
- (オプション) カーネルメモリ割り当て (Kernel Memory Allocation) (Buddy System, Slab Allocation)
5. ファイルシステム (File System) MOC
- ファイルシステムの概要
- ファイル概念 (File Concept)
- ファイルとは (名前付きの関連情報の集まり)
- ファイル属性 (File Attributes) (名前、識別子、種類、場所、サイズ、保護、タイムスタンプなど)
- ファイル操作 (File Operations) (作成、書き込み、読み出し、シーク、削除、切り詰めなど)
- ファイルタイプ (File Types) (実行ファイル、テキストファイル、オブジェクトファイル、ソースファイルなど)
- ファイル構造 (File Structure) (バイトシーケンス、レコードシーケンス、木構造など)
- アクセス方法 (Access Methods)
- ディレクトリ構造 (Directory Structure)
- ファイルシステムマウント (File System Mounting)
- ファイル共有と保護 (File Sharing and Protection)
- ファイルシステムの実装
- ファイルシステム構造 (File System Structure) (ブート制御ブロック、ボリューム制御ブロック、ディレクトリ構造、ファイル制御ブロック - FCB / i-node)
- オンディスク構造とインメモリ構造
- 仮想ファイルシステム (VFS - Virtual File System)
- ディレクトリの実装
- ファイル割り当て方法 (File Allocation Methods)
- 空き領域管理 (Free-Space Management)
- 効率と性能
- ディスクキャッシュ (バッファキャッシュ)
- リカバリ (Recovery)
- 整合性チェッカ (fsck, chkdsk)
- ジャーナリングファイルシステム (Journaling File System) (例: ext3, ext4, NTFS, XFS)
- ログ構造ファイルシステム (LFS - Log-structured File System)
- (オプション) コピーオンライトファイルシステム (CoW File System) (例: ZFS, Btrfs)
- ディスク構造とスケジューリング
- ディスク構造 (Disk Structure) (プラッタ、サーフェス、トラック、セクタ、シリンダ)
- ディスクアクセス時間 (シークタイム、回転遅延、転送時間)
- ディスクスケジューリングアルゴリズム MOC
- ディスクフォーマット (Disk Formatting) (ローレベルフォーマット、パーティショニング、ハイレベルフォーマット)
- ブートブロック (Boot Block)
- 不良ブロック (Bad Blocks) の管理
- RAID構造 (Redundant Array of Independent Disks) MOC
- SMB)
- (オプション) 分散ファイルシステム (DFS, GFS, HDFS)
6. O) システム管理 MOC
- I/Oハードウェアの概要 (再掲・OS視点)
- アプリケーションI/Oインターフェース
- カーネルI/Oサブシステム
- O Scheduling) (ディスクスケジューリングなど)
- バッファリング (Buffering)
- キャッシング (Caching) (ディスクキャッシュ/バッファキャッシュ)
- スプーリング (Spooling) (例: プリンタスプーラ)
- エラー処理 (Error Handling)
- O Protection) (特権命令、メモリマップドI/O領域保護)
- I/O要求からハードウェア操作への変換
- 性能
7. セキュリティと保護 (Security and Protection) MOC
- 保護 (Protection) の目標と原則
- 保護のドメイン (Domain of Protection)
- アクセス制御マトリクス (Access Matrix)
- セキュリティ (Security) の問題
- セキュリティとは (不正アクセスや破壊からの保護)
- 脅威の種類 (Threats)
- マルウェア (Malware) (ウイルス、ワーム、トロイの木馬、ランサムウェア、スパイウェア)
- 不正アクセス (Unauthorized Access)
- 分散サービス妨害攻撃 (DDoS)
- 盗聴 (Eavesdropping)
- Spoofing)
- システムレベルのセキュリティ
- ユーザー認証 (User Authentication)
- プログラムの脅威 (Program Threats) (トロイの木馬、バックドア、論理爆弾)
- Network Threats) (ワーム、ポートスキャン、DoS)
- セキュリティ対策
- (オプション) Trusted Computing Base (TCB)
8. (概要) 分散システム (Distributed Systems) MOC (OSの視点から)
- 分散システムとは (複数の独立したコンピュータが協調動作)
- 分散システムの利点 (リソース共有、計算の高速化、信頼性向上、スケーラビリティ)
- 分散システムの課題 (複雑性、ネットワーク依存、セキュリティ)
- ネットワークOS (Network Operating System) vs 分散OS (Distributed Operating System)
- 通信
- (概要) 一貫性とレプリケーション (Consistency and Replication)
- (概要) フォールトトレランス (Fault Tolerance)
- (概要) 分散ファイルシステム (Distributed File System - DFS) (NFS, AFS, GFS, HDFSなど)
9. (概要) 仮想化 (Virtualization) MOC (OSの視点から)
- 仮想化とは (物理リソースの論理的表現)
- 仮想化の利点 (リソース効率向上、分離、移植性、サーバー統合)
- 仮想化の種類
- 仮想マシン (VM - Virtual Machine)
- Virtual Machine Monitor - VMM)
- タイプ1ハイパーバイザ (ベアメタル型) (VMware ESXi, Xen, Hyper-V)
- タイプ2ハイパーバイザ (ホスト型) (VMware Workstation, VirtualBox, Parallels)
- (概要) ハードウェア仮想化支援機能 (Intel VT-x, AMD-V)