計算機システム概論・2回目

31
計計計計計計計計計 計計 計計計計計計計 計計計計計計計計 計計計計計計 計計計計計計計計計計計計計計計計計 計計計計計計計計計 計計計計 計計計計計計計 1

Upload: brynn-osborne

Post on 02-Jan-2016

22 views

Category:

Documents


2 download

DESCRIPTION

計算機システム概論・2回目. 本日のトピック:プロセスについて プロセス とは プロセスの スケジューリング について 多重プロセス の問題 排他制御 プロセス間通信. 遂次処理. 時分割処理. 時間経過. 時間経過. 実際の 計算機. 仮想計算機. 前回の復習:時分割処理. 時分割処理(タイムシェアリング) プロセッサが, 複数のプログラムを少しずつ実行 する 短い時間(タイムスライス)で,プログラムを 切替える. 考え方次第で は ... ユーザに 仮想計算機 を 割り当て, 仮想計算機の動作を,少しずつ シミュレート して進めていく. V. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 計算機システム概論・2回目

計算機システム概論・2回目

本日のトピック:プロセスについてプロセスとはプロセスのスケジューリングについて多重プロセスの問題

排他制御プロセス間通信

1

Page 2: 計算機システム概論・2回目

前回の復習:時分割処理

時分割処理(タイムシェアリング)プロセッサが,複数のプログラムを少しずつ実行する短い時間(タイムスライス)で,プログラムを切替える

2

考え方次第では ...ユーザに仮想計算機を割り当て,仮想計算機の動作を,少しずつ

シミュレートして進めていく

時間経過 時間経過

遂次処理 時分割処理

仮想計算機

実際の計算機

Page 3: 計算機システム概論・2回目

シミュレートとは

シミュレート = 模擬,真似仮想計算機をシミュレートするとは ...

計算機の中に別の仮想計算機(V)があると想定するVは独自のプログラムを持っているVがどのような振る舞いをするか,Vのプログラムに

従って(外部の計算機)が計算する

(必要であれば)ユーザとVとの間で,入出力の中継を行う

3

Page 4: 計算機システム概論・2回目

仮想計算機とプロセス

仮想計算機が保持すべきもの独自のプログラム独自のメモリ状態独自のレジスタ状態独自の入出力管理状態その仮想計算機の状態その仮想計算機のユーザ名他の仮想計算機との関係

:プロセス=仮想計算機(他の意味づけも可能)

4

仮想計算機

実際の計算機

プロセス

Page 5: 計算機システム概論・2回目

プロセスを「見る」

身近なOSで,実際にプロセスを見てみるWindows : タスクマネージャを起動UNIX 系 OS: ps コマンドを利用

確認できること多くのプロセスが同時並行的に実行されているユーザのプロセス以外に,システムのプロセスが存在システムプロセスは,OSの機能をサポートするもの

5

Page 6: 計算機システム概論・2回目

プロセスの一生

プロセスは,動的に生成されたり消滅したりする

プロセスの典型的な一生:1. ユーザまたはOSにより生成(起動)される

( 正確には,ユーザやOSのプロセスにより生成 ... 後述)

2.必要な処理や計算を行う [ 活動中 ]

3.自主的に終了する,または外部から強制的に終了させられる

6

Page 7: 計算機システム概論・2回目

プロセスの状態

活動中のプロセスが取りうる状態は3種類ある:実行中状態

プロセッサの時分割処理の順番がまわってきて,

処理が実際に進んでいる状態実行待ち状態

プロセッサがまわってくるのを待っている状態入出力待ち状態

入出力処理が終わるのを待っている状態

プロセスの状態は,OSによって変更される

7

Page 8: 計算機システム概論・2回目

プロセスの状態遷移

8

プロセス生成

入出力待ち状態

実行待ち状態

実行中状態 プロセス終了

順番がまわってくるタイムスライス終了

入出力処理開始入出力処理完了

強制終了

強制終了

Page 9: 計算機システム概論・2回目

プロセススケジューラ

システムには,一般に複数のプロセスが存在するプロセスの交通整理が必要

プロセススケジューラ:プロセスの状態を制御するための,OSの「部品」どのプロセスを,どの状態にするか管理する別のプロセスに切り替えるときに,プロセスを

実行する環境のセットアップを行う現在実行中プロセスの状態を退避新しく実行されるプロセスの状態を復帰

9

Page 10: 計算機システム概論・2回目

プロセススケジューラの動作概念図

スケジューラにより,プロセス状態が同期的に変更される実行中状態にあるプロセスは一個だけ

(プロセッサが複数あるシステムは除く)

10

P1P2P3P4P5

実行中 実行待ち 入出力待ち

時間経過

入出力処理中

入出力処理中

スケジューラの動作

Page 11: 計算機システム概論・2回目

プロセススケジューラの仕組み

交通整理のために,スケジューラはプロセスを分類管理

11

プロセススケジューラの行う操作:a. 実行中プロセスを入出力待ちプロセスに (sleep)b. 入出力待ちプロセスを実行待ちプロセスに (wakeup)c. 実行中プロセスを切り替え (switch)

実行中プロセス

実行待ちプロセス

入出力待ちプロセス P4 P5 P6

P2 P3 P7

P1

P8

a

b

c

Page 12: 計算機システム概論・2回目

プロセススケジューラの動作イメージ

プロセススケジューラは ...常にプロセスを監視しているわけではない普段は眠っていて,何かのキッカケで起きて来て操作を行う

12

プロセス

プロセススケジューラ

タイマー

外部装置

キッカケ = 割り込み

割り込みも何種類かある

Page 13: 計算機システム概論・2回目

割り込み1:API呼び出し

入出力処理依頼プロセスは,入出力装置に直接アクセスできないAPI ( Application Program Interface )を介し, OS に処理を依頼

⇒ 仕事を依頼したら,自分は「スリープ」状態に入る

... 正確には,プロセススケジューラが,プロセスを「眠らせる」

13

OS の入出力処理部プロセス A

入出力開始

呼出元 sleep

switchAPI

プロセス B

実行中

実行待ち

入出力待ち

Page 14: 計算機システム概論・2回目

割り込み2:入出力完了

入出力完了「 A さんに頼まれた仕事,終わったよ」

⇒ プロセス A を「起こし」,順番待ち行列に並ばせる

14

OS の割込み処理部プロセス A

制御横取り

wakeup

プロセス B

割込

入出力完了

制御返却

実行中

実行待ち

入出力待ち

12

3

4

Page 15: 計算機システム概論・2回目

割り込み3:タイマー

タイマ割込み処理からの呼び出しタイマ ... タイムスライスの終了を知らせる

15

OS の割込み処理部プロセス A

制御横取り

switch

プロセス B

割込

タイマ

実行中

実行待ち

12

3

Page 16: 計算機システム概論・2回目

プロセススケジュールの戦略

プロセススケジューラの仕事:プロセスや入出力の進行にあわせ,交通整理をすること

プロセスの切り替え (switch) を行うとき,どの実行待ちプロセスを処理するか決定すること

... いくつかの戦略が知られている

スケジュール戦略を変えると,システムの振舞いが変わる

16

Page 17: 計算機システム概論・2回目

スケジューリングの性能指標(1)

スケジュール戦略を考えるときに考慮すべき要素:CPU 利用率スループット:単位時間あたりの仕事量ターンアラウンド時間:

プロセスを起動してから完了するまでの時間

17

時間プロセス起動 プロセス終了

ターンアラウンド時間

Page 18: 計算機システム概論・2回目

スケジューリングの性能指標(2)

スケジュール戦略を考えるときに考慮すべき要素:待ち時間:

プロセスが,実行待ち状態で過ごす時間の合計応答時間:

最初の処理が行われるまでの時間

18

平均値,最大値,最小値のどれに着目するかも重要

時間プロセス起動 プロセス終了

待待 待待待 待待 待待待

待ち時間応答時間

Page 19: 計算機システム概論・2回目

スケジュール戦略:単純な方式

横取りのない戦略( non-preemptive, 時分割処理は不要)先着順大きなプロセスの後ろは,長時間待たされる

早く終わりそうなものを先に済ます実行時間をあらかじめ見積もるのは難しい

優先度順優先度の決め方が問題優先度の低いプロセスが,なかなか終わらない

⇒エージングによる優先度の調整:長時間待っているプロセスの優先度を

上げる

19

Page 20: 計算機システム概論・2回目

スケジュール戦略:やや複雑な方式

横取りのある戦略( preemptive, 時分割処理が必要)「タイムスライスをどのように割り当てるか」

ラウンドロビン実行待ちプロセスに公平に割り当てる

20

優先度順+ラウンドロビン優先度の高いプロセスは,割当の頻度を上げる

A B C A B C A B C A B C

A B CA B CA BA CA A...プロセス A の優先度が高い場合

Page 21: 計算機システム概論・2回目

スケジュール戦略:さらに複雑な方式

横取りのある戦略( preemptive, 時分割処理が必要)多段フィードバック方式

プロセスを優先度ごとにまとめる同じ優先度の中ではラウンドロビン一定時間内に実行が終わらなければ,

プロセスの優先度が下げられる

21

B CA

E FD

BA

E FDC

優先度高

Page 22: 計算機システム概論・2回目

多重プロセスの問題

ここまでの話:個々のプロセスは,互いに独立している ... という立場

ここからの話:複数のプロセスが存在する場合特有の問題

(多重プロセスの問題)プロセスの生成についてプロセスが互いに邪魔をしないための仕組みプロセスが互いに協力するための仕組み

22

Page 23: 計算機システム概論・2回目

プロセスの生成

プロセスは誰が作るのか ...基本的には,プロセスが新しいプロセスを作る

23

プロセス1

プロセス2 プロセス3

プロセス4 プロセス5 プロセス6

...プロセス3の親プロセス

...プロセス1の子プロセス

Page 24: 計算機システム概論・2回目

プロセスの構成例

RedHat Linux :ps – eo “%p %c %P” で表示された情報の一部を抜粋し

て図示

24

0: init

2: keventd3: ksoftirqd4: kswapd5: bdflush6: kupdated

722: syslogd747: portmap775: rpc.statd870: rpciod871: lockd1031: xinetd1086: lpd1320: smbd1325: nmbd7: jfsIO

1388: gdm 1396: gdm 1397: X18169: tcsh

32097: ps

ユーザのプロセス

30676: smbd

31840: in.telnetd

Page 25: 計算機システム概論・2回目

UNIX におけるプロセスの生成

fork システムコールによるプロセス複製exec システムコールによるプログラム切り替え

25

:child = fork();if (child == 0) exec(子プロセス );親プロセスの処理

:

fork

子親

fork

子親

複製

親プロセス 子プロセス

fork

Page 26: 計算機システム概論・2回目

排他制御

複数のプロセスに共用される資源:複数プロセスにより同時に参照される可能性がある

例:「整数値が書かれたファイルを参照し,値を1増やす」

26

3P1

4P2

5

3P1

4P2

4

期待する動作 少しタイミングがずれた場合

読んでから書くまで,他のプロセスにファイルを参照させないようにプロセスを制御する必要がある ... 排他制御

Page 27: 計算機システム概論・2回目

クリティカルセクション

クリティカルセクション( CS ):他のプロセスとは,排他的に実行しなければならない部分

排他制御を適切に実行するためには ...CS の最初と最後で,他プロセスに “ stop”, “go” をかけるCS に入るときは,“ go” が出るまで待機する

27

CS

CS

待機

プロセス1 プロセス2

Page 28: 計算機システム概論・2回目

排他制御を実現する仕組み

排他制御のため, stop, go をかける必要があるstop, go をかける操作も,排他的に実行の必要あり

OS が stop, go の操作を提供することで,ジレンマを解決

stop, go 操作の実現方法:何通りか知られているlock, unlockセマフォモニタ

28

Page 29: 計算機システム概論・2回目

デッドロック

同時に複数の stop, go が必要になる場合も

29

ファイルAをオープン

プロセス1

ファイルBをオープン

ファイルAをクローズ

ファイルBをクローズ

ファイルBをオープン

プロセス2

ファイルAをオープン

ファイルBをクローズ

ファイルAをクローズ

A B

× ×

どちらのプロセスも永久に進めない ⇒ デッドロック状態

stop のかけ方に順番を定める等,運用で回避する必要アリ

Page 30: 計算機システム概論・2回目

プロセス間の協調機構

排他制御と同じ仕組みを利用する方式:排他制御: CS か否かの1ビットを他プロセスに伝える基本的に同じ仕組みで,より大きな情報を伝達可能

ソケット:プロセスとプロセスをつなぐ「仮想通信路」

パイプ:ソケットの特殊な用法UNIX で頻繁に利用される

30

Page 31: 計算機システム概論・2回目

本日のまとめ

プロセスとはOSにおけるプロセスの取り扱いプロセススケジューラについて排他制御と協調機構

次回の講義 ... 入出力機構について

課題(結果の提出不要):自分が普段使っているコンピュータで,どのような

プロセスが走っているか確認せよ

31