4/15

オペレーティングシステム
OS:UNIX, Linux,Windows,MacOS など,
他にも,ITRONなどの専用OSがある
◆ 授業の目的:OSの基本概念を理解すること
◆ 授業の前提:
コンピュータの基本原理(コンピュータアーキテクチャ)を
理解していること
アセンブラ言語およびC言語の理解があること
UNIXとWindowsの利用経験があること
◆ 講義補助教材:Webラーニングプラザ
http://weblearningplaza.jst.go.jp/
「情報通信」 → 「オペレーティングシステムコース」
オペレーティングシステム(OS:Operating System) とは ?
→ 「基本ソフト」 : (単なる言葉の言換え)
『コンピュータ資源』を『仮想化』することにより,ハードウェアとして
のコンピュータを,ユーザ/プログラムにとって,より容易に,より効
率的に利用可能とするための一群のソフトウェア
コンピュータ資源
z ハードウェア資源(CPU,主記憶,補助記憶装置,入出力装置など)
z ソフトウェア資源(プログラム,ライブラリ,データなど)
仮想化
z 抽象化と多重化(時間的多重化と空間的多重化)
1
OSの目的
(1) ハードウェア資源の有効利用
① スループット(単位時間当たりの処理件数)の向上
② ターンアラウンドタイム(すべての処理結果が得られるまでの時間)や
レスポンスタイム(最初の応答が得られるまでの時間)の短縮
(2) コンピュータ操作と運用の支援
① 連続処理の実現
② オペレータへのメッセージ表示
③ 運用データの記録
(3) プログラム作成の容易化
① 仮想記憶の実現
② 入出力処理の支援
(4) コンピュータシステムの信頼性と安全性の確保
OSの二つの側面
ハードウェア ユーザ側を
を向いた顔
向いた顔
z ユーザインタフェース
z ハードウェア資源の有効利用
− CPU,メモリの管理
− 入出力装置の制御
− 新しいデバイス(資源)の
追加や削除
コンピュータに対してどのような
形式で命令を与えるかを規定する
z プログラムインタフェース
入出力など,プログラム中でOSの
機能を利用する手段を提供する
仮想化技術
2
「仮想化」 の意味
(1) ユーザ/ プログラムインターフェースの立場:
機能の抽象化 : ハードウェアの物理実体を隠蔽し,
論理的な形態でユーザに機能を提供する
ハードウェアとしてのコンピュータを使い易くする
例 : API(Application Programming Interface)
プログラム
OS
OSの機能 X
を呼び出す
対応する処理プログラム
API関数の呼出し
例えば,キーボード
から1文字読み込
むなど...
API関数は,あくまでOSとのイ
ンターフェースで,自分自身が
機能をもつわけではなく,OS
の機能を呼び出す機能をもつ
キーボードから
1文字読み込む
SVC(SuperVisor Call),System Call ともいう
基本情報技術者試験問題(平成18年春期)
OSにおけるAPI(Application Program Interface)の説明として,適切なもの
はどれか。
ア アプリケーションがハードウェアを直接操作して,各種機能を実現するた
めの仕組みである。
イ アプリケーションから,OSが用意する各種機能を利用する仕組みである。
ウ 複数のアプリケーション間でネットワークを介して通信する仕組みである。
エ 利用者の利便性を図るために,各種アプリケーションのメニュー項目を
統一する仕組みである。
3
「仮想化」の意味
(2) ハードウェア資源の立場 :
複数のプログラム,複数のユーザ間で,プロセッサ,
主記憶,入出力装置などを効率よく使う
◆時間的多重化(時間を分割して資源を利用する)
複数のプログラムを並行して実行する
→ マルチプログラミング゙,マルチタスク,時分割処理
◆空間的多重化(領域を分割して資源を利用する)
複数のプログラムを同時に主記憶に割り当てる
→ 仮想記憶
時間的多重化によるCPU資源の仮想化
ユーザ1の資源確保
切替え処理
切替え処理
切替え処理
切替え処理
ユーザ1
時間的に
分割可能な資源
(CPU,主記憶など)
ユーザ2の資源確保
ユーザ2
時間
4
空間的多重化によるメモリ資源の仮想化
メモリ(主記憶)
ユーザ1の
使用領域
ユーザ1
空間的に分割可能な資源
(主記憶,ディスクなど)
ユーザ2の
使用領域
ユーザ2
OSの役割り
抽象化により,ユーザ/プログラムにコンピュータ資源を使いやす
くすること。
多重化により,コンピュータシステムが有する有限な資源を,
ユーザ/プログラムごとに提供すること。
仮想化された
コンピュータ資源
コンピュータ資源
の実体
ユーザ1
O
S
仮想化された
コンピュータ資源
ユーザ2
5
OSの構成
ジョブ管理
制御プログラム
(狭義のOS)
プロセス管理
ハードウェアやソフトウェ
アの動作を制御するプ
ログラムの総称
主記憶管理
ファイル管理
入出力管理
オペレーティング
システム
(広義のOS)
言語プロセッサ
コンパイラ(gccなど)
あるプログラミング言語
で書かれたプログラムを
機械語に変換するプロ
グラムの総称
アセンブラ
インタプリタ
サービスプログラム
エディタ(emacsなど)
OSやアプリケーションの
機能や操作性を改善する
ためのソフトウェアの総称
(ソフトウェアツール)
リンカ
OSの構成要素
ユーザインターフェース
ジョブ
管理
プロセス
管理
主記憶
管理
ファイル
管理
ハードウェアの抽象化
コンピュータ資源
6
入出力
管理
・・・
ジョブとプロセス
◆ ジョブ(job)
ユーザ側から見た処理の単位
◆プロセス(process) :タスク(task)ともいう
OS側から見た処理の単位(資源の割当て対象となる単位)
例 % rusers | grep 09j5 | sort
← ユーザから見れば
一つのジョブ
• OSから見れば三つの独立したプロセスとみなされる。
• OSはプロセスを資源割当ての単位とする。
OSの構成要素と機能
(1) ジョブ管理
: ユーザの処理(ジョブ)を連続実行させて,効率的なコンピュータの
利用を図る
(2) プロセス(タスク)管理
: 複数のプログラムを見かけ上,同時に実行させる
: 複数のユーザがあたかも一つのコンピュータを独占しているかの
ように使えるようにする
(3) 主記憶管理(メモリ管理)
: プロセス(OSから見た処理単位)に主記憶を割り当てる
: 仮想記憶(実装されているメモリ容量を超えるサイズのプログラム
やデータを利用できるようにする)
(4) ファイル管理
: プログラムやデータを保存したり,呼び出したりする
(5) 入出力管理
: 入出力装置の利用を提供する
(6) ユーザインタフェース
: ユーザに対するコンピュータ操作の各種ツールの提供
7
コンピュータの処理形態とOS
◆ OS以前
– 機械語(アセンブラ言語)によるプログラム作成
– 単一プログラムの実行
ユーザ
← 人間のマニュアル操作による
(ユーザ=オペレータ)
コンピュータ
コンピュータは高価なもの,いかに無駄なく使うか
◆ 一括処理(バッチ処理 batch processing)
– ユーザから依頼されたジョブを順番に処理する
– コンピュータの利用効率の向上
– ターンアラウンドタイム(Turn Around Time:TAT)が長い(欠点)
: ジョブが受け付けられてから,すべての処理結果が得られるまで
の時間
オペレータ
受付
コンピュータ
コンピュータ
センター
返却
ユーザ
ユーザにとって,使いやすいコンピュータ
◆ 対話処理(interactive processing)
– コンピュータが短い時間間隔(クオンタム;数10ミリ秒)でユーザを切り替え
て対話的なサービスを行う(時分割処理:time sharing system)
– 応答時間(レスポンスタイム:response time)が重要
: 処理の要求を出してから,最初の処理結果が帰ってくるまでの時間
コンピュータ
コンピュータ
一定時間(クオンタム,quantum)ごと
にユーザを切り替える
コンピュータ
→ ユーザからはコンピュータを独占
して利用しているように見える
コンピュータ
ユーザ
コンピュータ
8
コンピュータの処理形態とOS
◆ リアルタイム処理(real time processing)
- 要求の発生と同時に処理をする方式(人間が介在しない)
¾ 組込みシステム(家電品,自動車など),プロセス制御など
- 応答時間(response time)の制約が厳密
◆ オンライン処理(on-line processing)
- 要求の発生と同時に処理をする方式(人間が介在する)
¾ 座席予約システム,銀行ATMなど
- スループット(throughput)を大きくすることが重要
:単位時間当たりの処理件数
端末
端末
コンピュータ
端末
ユーザ
端末
通信回線
コンピュータの処理形態とOS
◆ 分散処理(distributed processing)
– ネットワークにより結合された複数のコンピュータで一つの処理を行う方式
– 保守性・安全性の確保が容易(長所),全体の運用管理が複雑(欠点)
– クライアント-サーバ( cliant-server)モデル
• client : サービスを受ける側
• server: : サービスを提供する側
ゲートウェイ
LAN
WAN
LAN
LAN
分散システムの構成例
9
OSの発展経緯
z 第0世代(1945~)
– 機械語(アセンブリ言語)によるプログラミング
– 単一プログラムの実行
• 初期入力ルーチン,アセンブラ,リンカ,ローダ
z 第1世代(1950年代~)
– スプーリング(プロセッサと独立した入出力動作)
– 複数プログラムの連続実行
– 一括処理(バッチ処理: batch processing)
z 第2世代(1950後~1960年代)
– マルチプログラミング(multi-programming)
• 複数のプログラムを同時にメモリに配置し,切替ながら実行
– 時分割システム (TSS:Time Sharing System)
• 複数のユーザが端末を介してコンピュータと対話形式で処理を行う
– 仮想記憶(virtual memory)
• 実装されているメモリよりも大きなメモリ空間をユーザに提供
OSの発展経緯
z 第3世代(1965年代)
OS/360 (IBM社 System 360)
• バッチ処理,マルチプログラミング,時分割システムの同時提供
z 第4世代(1970~1990年代)
– 大型汎用OS,ワークステーション(UNIX),パソコン
z 第5世代(1990年代~)
– ネットワーク,分散処理,マルチメディア,マルチプロセッサ対応
– ユーザインタフェース(user interface)に重点
10