学部後期課程
HOME 学部後期課程 オペレーティングシステム
学内のオンライン授業の情報漏洩防止のため,URLやアカウント、教室の記載は削除しております。
最終更新日:2026年10月16日

授業計画や教室は変更となる可能性があるため、必ずUTASで最新の情報を確認して下さい。
UTASにアクセスできない方は、担当教員または部局教務へお問い合わせ下さい。

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

オペレーティングシステム/ Operating Systems
コンピュータは、CPU・メモリ・ストレージ・入出力装置といった多様な資源を用いて動作している。これらの資源を効率的かつ公平に利用し、さらにユーザにとって扱いやすい抽象化を提供するのがオペレーティングシステム(OS)の役割である。本講義では、プロセスやスレッドといった計算資源の抽象化、スケジューリングによるCPU利用の調整、メモリ管理や仮想記憶による安全かつ柔軟なアドレス空間の提供、ファイルシステムによる永続的なデータ管理、シグナルやシステムコールを通じたアプリケーションとのインタフェースなど、OSの中核的な仕組みを学ぶ。単に概念を理解するだけでなく、実際のUNIX系システムでのコマンド操作やプログラミング課題を通じて、抽象化がどのように実現され、アプリケーション開発やシステム利用の基盤となっているかを体験的に習得することを重視する。また、同期や排他制御などの並行処理における問題や、ページ置換やキャッシュといった効率化の技術を取り上げることで、OSが単なる「基盤ソフトウェア」ではなく、性能・信頼性・安全性に直結する重要な技術体系であることを理解することを目的とする。
MIMA Search
時間割/共通科目コード
コース名
教員
学期
時限
FEN-EE3d16L1
FEN-EE3d16L1
オペレーティングシステム
田浦 健次朗
A1 A2
水曜1限
マイリストに追加
マイリストから削除
講義使用言語
日本語
単位
2
実務経験のある教員による授業科目
NO
他学部履修
可
開講所属
工学部
授業計画
# オペレーティングシステム — シラバス **担当教員:** 田浦 健次朗 **授業形態:** 講義+演習 **到達目標:** オペレーティングシステムの基本概念(プロセス、スレッド、スケジューリング、メモリ管理、ファイルシステム、システムコールなど)を理解し、抽象化がどのように実現され、利用されているかを実践的に学ぶ。 --- ## 導入 - **内容:** - 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などを扱うプログラミング課題 - **試験:** 中間試験(前半内容)、期末試験(後半内容) - **参加:** 講義中の演習・議論への積極的な参加
授業の方法
講義 プログラミング演習
成績評価方法
授業時間内に数回演習を行い, その続きを課題とする. 期末試験 試験の代わりに授業最終回で自分で発展的に学んだ内容について発表(希望者1〜2名)を行うことも可 演習への出席, 課題の提出, 試験の成績または最終回での発表を評価対象とする 詳しくは授業HPで説明する
履修上の注意
PCを持参のこと
その他
<前提となる知識・項目> コンピュータのハードウェアに関する基本的な知識 Basic knowledges about computer hardware 多少のコンピュータプログラミング, C言語の経験 Some experiences in computer programming and C language <応用先・項目> プログラミング言語 Programming languages コンピュータネットワーク Computer networks コンピュータセキュリティ Computer security 並列・分散処理 Parallel and distributed programming