ソフトウェアアーキテクチャ - No.1 オペレーティング・システム

ソフトウェアアーキテクチャ
No.1 オペレーティング・システム
萩野 達也
慶應義塾大学 環境情報学部
2015/4/13
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
1 / 20
主題と目標
コンピュータの基本ソフトウェアであるオペレーティングシステム
(OS) およびその上のミドルウェアとして重要なソフトウェアシステ
ムについて,その仕組みについて学習する.
取り扱うソフトウェアシステム
電子メールシステム
World Wide Web
文書清書システム
プログラミング言語 (C, LISP)
Java Virtual Machine
データベース管理システム
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
2 / 20
授業予定
1
オペレーティングシステム
8
ネットワークシステム
2
ファイルシステム
9
電子メールシステム
3
シェルの働き
10
分散ファイルシステム
4
文書清書システム
11
World Wide Web
5
C 言語コンパイラ
12
ウインドウシステム
6
LISP 処理系
13
データベース管理システム
7
Java 仮想機械
14
まとめ
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
3 / 20
オペレーティングシステム
OS = Operating System
基本ソフトウェア
ほとんどすべてのコンピュータに入っている
PC で利用されている OS
Windows: 95, 98, Me, XP, Vista, 7, 8
Mac OS: 9, X
UNIX: Linux, FreeBSD, NetBSD, OpenBSD, Solaris
その他の OS
携帯電話の OS: iOS, Android
車に搭載する OS: iTron
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
4 / 20
質問
自分の PC に入っている OS はなんですか?
OS はコンピュータにとって空気あるいは水のどちらと言えますか?
OS を利用している実感はありますか?
OS に必要なこと (要求されること) は何でしょう?
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
5 / 20
ソフトウェアの階層
アプリケーション
ライブラリ
シェル
ミドルウェア
オペレーティングシステム
デバイスドライバ
ハードウェア
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
6 / 20
オペレーティングシステム
コンピュータ上で動作しているすべてのプログラムを制御
プログラムに対してさまざまなサービスを提供
ハードウェアに命令を追加した仮想機械の提供
コンピュータ上の資源の管理
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
7 / 20
ミドルウェア
アプリケーションとオペレーティングシステムの間に位置
OS では提供されていないさまざまなサービスを提供
アプリケーションが利用するソフトウェア群
ウィンドウシステム
データベース管理システム
シェル (通常はミドルウェアとはいわれない)
Web サーバ (ミドルウェア的な役割)
センサーミドルウェア
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
8 / 20
ライブラリ
便利な関数の集まり
別のソフトウェアに組み込まれて利用されるソフトウェア
ファイル操作ライブラリ
数値計算ライブラリ
統計処理ライブラリ
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
9 / 20
アプリケーション
実際にユーザが用いるプログラム
アプリケーション = 応用
種類
言語処理系
テキスト編集,画像編集,動画編集
システムアプリケーション (バックアップ,クリーンアップなど)
メールや Web ブラウザなどのネットワークアプリケーション
シュミレーションや数値解析などの科学計算アプリケーション
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
10 / 20
オペレーティングシステムの役割
ハードウェアの制御調停
プログラムの分離
マルチプログラミング
メモリ管理
ファイルシステムの提供
ネットワークシステムの提供
プログラム間の通信の提供
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
11 / 20
ハードウェアの制御調停
2 つのアプリケーションが 1 つのハードウェアを直接制御すると衝
突が発生する.
OS が調停
アプリケーションに直接ハードウェアを制御させない
すべて OS 経由でハードウェアを制御
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
12 / 20
プログラムの分離
複数のプログラムの動作を分離
プログラム毎にメモリ空間を提供
メモリ空間を保護
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
13 / 20
マルチプログラミング
1 つの CPU で同時に複数のプログラムを仮想的に動作させる
走らせるプログラムの数は CPU コア数に制限されるわけではない
CPU 時間をプログラムに割り当てる
スケジューリング
優先制御
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
14 / 20
メモリ管理
プログラムが必要とするメモリを管理
不要なメモリを回収し必要とするプログラムに割り当てる
仮想記憶の提供
利用頻度の少ないメモリは外部記憶に追い出す
必要な時に外部記憶から読み込む
プログラムは気にしなくて良い (比較: プログラムオーバーレイ)
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
15 / 20
ファイルシステムの提供
ディスクなどを複数のアプリケーションで共有
ディスク上にファイルシステムを構成
効率が良いようにバッファリング
ファイルシステムの種類
FAT (Fast Allocation Table)
NTFS (NT File System)
HFS (Hierarchical File System)
UFS (UNIX File System)
LFS (Log File System)
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
16 / 20
ネットワークシステムの提供
ネットワークパケットの処理
プログラムからネットワークに送る
ネットワークから受け取りプログラムに渡す
TCP/IP 制御
フラグメンテーション
再送
順序に並び替え
ウインドウ制御
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
17 / 20
プログラム間の通信の提供
プログラム間のデータの受け渡しの仲介
パイプ
共有メモリ
セマフォ
ロック
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
18 / 20
オペレーティングシステムの構造
ブートストラップ
デバイスドライバ
スケジューリング
メモリ管理
ファイル管理
プロセス管理
ネットワーク管理
システムコール処理
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
19 / 20
まとめ
オペレーティングシステム
ハードウェアの制御調停
プログラムの分離
マルチプログラミング
メモリ管理
ファイルシステムの提供
ネットワークシステムの提供
プログラム間の通信の提供
萩野 達也 (慶應義塾大学 環境情報学部)
ソフトウェアアーキテクチャ
2015/4/13
20 / 20