# オペレーティングシステム — シラバス
**担当教員:** 田浦 健次朗
**授業形態:** 講義+演習
**到達目標:**
オペレーティングシステムの基本概念(プロセス、スレッド、スケジューリング、メモリ管理、ファイルシステム、システムコールなど)を理解し、抽象化がどのように実現され、利用されているかを実践的に学ぶ。
---
## 導入
- **内容:**
- OSとは何か
- 抽象化・効率化・資源保護の役割
- OSがない場合に起こる問題
- システムコールと特権命令
- **目標:**
- OSが必要とされる理由を説明できる
- OSの機能とアプリケーション/ハードウェアを区別できる
---
## プロセス
- **内容:**
- プログラムとプロセスの違い
- CPU・メモリに対する抽象化
- プロセスの観察ツール (`ps`, `top`, `pstree` など)
- プロセスIDとシステムコール (`fork`, `exec`, `exit`, `waitpid`)
- **目標:**
- プロセスの生成と管理を理解する
- Unixツールでプロセスを観察・制御できる
---
## スレッド
- **内容:**
- スレッドとは何か、プロセスとの違い
- 1プロセス内に複数スレッド
- CPU・物理コア・仮想コア(SMT, ハイパースレッディング)との関係
- POSIXスレッドの基礎
- **目標:**
- スレッドが必要とされる理由を説明できる
- ハードウェアと並行性の関係を理解する
---
## スケジューリング
- **内容:**
- CPUスケジューリングの基本(ラウンドロビンなど)
- スレッドの状態: 実行中/実行可能/中断中
- プリエンプションとコンテキストスイッチ
- 負荷平均(load average)の理解
- **目標:**
- OSがスレッドをどのように切り替えるかを理解する
- システム負荷を読み解ける
---
## 並行処理と同期
- **内容:**
- 共有メモリと競合状態
- 同期機構:
- 排他制御(mutex, spinlock)
- バリア同期
- 条件変数
- 不可分操作とアトミック性
- スリープ待機 vs. ビジーウェイト
- 同期の実装と futex
- デッドロック
- **目標:**
- 競合状態を見つけ、同期による解決法を理解する
- デッドロックの原因と対策を説明できる
---
## メモリ管理(仮想記憶)
- **内容:**
- 論理アドレスと物理アドレス
- MMUとアドレス変換
- ページングとページテーブル
- ページ置換アルゴリズム
- OSのメモリ割り当てAPI
- 資源制御 (`cgroups`)
- **目標:**
- 仮想記憶の仕組みを説明できる
- ページ置換やメモリ管理の基本を理解する
---
## ファイルシステム
- **内容:**
- 2次記憶に対する抽象化
- ファイル・ディレクトリ・名前空間
- 基本API (`open`, `read`, `write`, `lseek` など)
- キャッシュ・先読み
- `mmap` によるメモリとストレージの統合
- **目標:**
- ファイルシステムAPIを使いこなす
- OSによるI/O高速化の仕組みを理解する
---
## 「すべてがファイル」というUnix的発想
- **内容:**
- ファイルディスクリプタ
- リダイレクトとパイプ
- 擬似ファイル(`/proc`, `/dev`)
- ファイルAPIによるI/Oの一般化
- **目標:**
- Unixの「すべてがファイル」概念を説明できる
- リダイレクトやパイプを実際に利用できる
---
## シグナル
- **内容:**
- シグナルとは(イベント通知機構)
- 代表的なシグナル(SIGINT, SIGKILL, SIGSEGV など)
- `sigaction`によるシグナル処理
- シグナルのデフォルト動作と安全性
- **目標:**
- シグナルの仕組みを理解する
- 独自のシグナルハンドラを実装できる
---
## ユーザレベル仮想記憶APIの応用
- **内容:**
- `mmap`, `mprotect` などのユーザレベルAPI
- ページフォルトを活用した応用
- 事例:
- チェックポイント
- ネットワークページング
- 分散共有メモリ
- インクリメンタルGC
- **目標:**
- 仮想記憶APIを応用できる
- 研究レベルの応用例を理解する
---
# 評価方法
- **課題:** プロセス生成、スレッド同期、メモリ管理、ファイルI/Oなどを扱うプログラミング課題
- **試験:** 中間試験(前半内容)、期末試験(後半内容)
- **参加:** 講義中の演習・議論への積極的な参加