オペレーティングシステム(前期2単位)

教授 須崎有康、客員教授 盛合敏

1.授業のねらい

OSは情報システムの基盤であるため、情報セキュリティを論ずる時にOSの知識は必須である。現在は、制御システムや携帯端末、組込みシステム等、様々な形態の情報システムが存在するが、この講義でははじめに、汎用OSを対象とする一般的な基礎理論について説明し、これを修得する。その後、Linuxを例に、特にセキュリティに関係するOSの役割と機能を整理し、その中で、CPUの持つセキュリティ機能との連携についても学ぶ。最後に、簡単なOSを実際に作成することで、具体的な知識の獲得を目指す。

2.到達目標

  • OSの基礎理論を理解する。
  • OSと情報セキュリティの関係について理解する。
  • OSの基本的な実装方法について理解する。

3.授業計画と開講形態

原則として、全回教室で開講する。授業計画は以下の通りである。

Ⅰ.OSの基礎理論
 第1回 OS外観とセキュリティの関係
     OSの役割、OSの歴史、ハードウェアの進化、組込みOS
 第2回 ハードウェアとOS
     特権命令、割込み、システムコール
 第3回 プロセスとスレッド
     プロセス、スレッド、タスクスイッチ、スケジューリング
 第4回 メモリ管理
     物理メモリ、仮想記憶、MMU、スワップ
 第5回 ファイルシステム
     ファイル、ディレクトリ、ファイルシステムの信頼性
 第6回 入出力
     I/O、デバイスドライバ、シリアルデバイス、ブロックデバイス
 第7回 デッドロック
     競合状態、哲学者の食事、セマフォ
Ⅱ.OSと情報セキュリティ
 第8回 認証・認可
     マルチユーザ管理、パスワード、アクセス権限
 第9回 仮想マシンとコンテナ
     ハイパーバイザー、Virtual Machine、コンテナ、CPUの仮想化対応
 第10回 セキュアOS
     リファレンスモニタ、ポリシー制御、セキュアブート、TPM
 第11回 隔離実行環境
     TEE: Trusted Execution Environment、Confidential Computing、CPUのTEE拡張
Ⅲ.OS作成演習
 第12回 OS開発環境のインストールと使い方
     エミュレータ、C/C++コンパイラ、Git、Make
 第13回 ブートローダとミニカーネルの作成
     BIOS、UEFI、カーネル、コンソール入出力
 第14回 メモリ管理の実装
     メモリマップ、セグメンテーション、ページング
 第14回 システムコールの実現
     アプリケーションの起動、OSの保護、syscall命令、ライブラリ関数

※順序および内容は、受講者の希望や進度によって変更することがある。

4.教科書

特に指定しない。

5.参考書

  • Operating Systems: Three Easy Pieces, Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
     PDFが公開されています。
     https://github.com/mthipparthi/operating-systems-three-easy-pieces
  • インテル® 64および IA-32 アーキテクチャーのソフトウェア開発者マニュアル
     https://www.intel.co.jp/content/www/jp/ja/support/articles/000006715/processors.html
  • モダンオペレーティングシステム第2版、アンドリュー.S.タネンバウム、ピアソン・エデュケーション・ジャパン (2004/12/7)
     日本語は第2版までしかないですが、英語はModern Operating Systems, 4th Editionがあります
  • はじめてのOSコードリーディング UNIX V6で学ぶカーネルのしくみ, ISBN: 4774154644.
  • ゼロからのOS自作入門,ISBN 978-4-8399-7586-9

6.関連科目

次の科目を履修済み、または同時に履修することが望ましい
セキュアプログラミングとセキュアOS、アルゴリズム基礎、プログラミング、情報システム構成論、ソフトウェア構成論

7.成績評価の方法

毎回の小テストを中心(70%程度)にレポート、実習の成果(30%程度)から総合的に評価する。

8.その他

PCは毎回持参のこと。小テストにはGoogle Classroomを用いる。また、演習は各自のPC(Windows、macOS、Ubuntuのいずれかが動作し、100GB以上のストレージ空き領域があること)を用いる。演習に必要となるOS開発環境の事前準備については、受講者に別途周知する。