計算機システム概論・2回目
DESCRIPTION
計算機システム概論・2回目. 本日のトピック:プロセスについて プロセス とは プロセスの スケジューリング について 多重プロセス の問題 排他制御 プロセス間通信. 遂次処理. 時分割処理. 時間経過. 時間経過. 実際の 計算機. 仮想計算機. 前回の復習:時分割処理. 時分割処理(タイムシェアリング) プロセッサが, 複数のプログラムを少しずつ実行 する 短い時間(タイムスライス)で,プログラムを 切替える. 考え方次第で は ... ユーザに 仮想計算機 を 割り当て, 仮想計算機の動作を,少しずつ シミュレート して進めていく. V. - PowerPoint PPT PresentationTRANSCRIPT
計算機システム概論・2回目
本日のトピック:プロセスについてプロセスとはプロセスのスケジューリングについて多重プロセスの問題
排他制御プロセス間通信
1
前回の復習:時分割処理
時分割処理(タイムシェアリング)プロセッサが,複数のプログラムを少しずつ実行する短い時間(タイムスライス)で,プログラムを切替える
2
考え方次第では ...ユーザに仮想計算機を割り当て,仮想計算機の動作を,少しずつ
シミュレートして進めていく
時間経過 時間経過
遂次処理 時分割処理
仮想計算機
実際の計算機
シミュレートとは
シミュレート = 模擬,真似仮想計算機をシミュレートするとは ...
計算機の中に別の仮想計算機(V)があると想定するVは独自のプログラムを持っているVがどのような振る舞いをするか,Vのプログラムに
従って(外部の計算機)が計算する
(必要であれば)ユーザとVとの間で,入出力の中継を行う
3
V
仮想計算機とプロセス
仮想計算機が保持すべきもの独自のプログラム独自のメモリ状態独自のレジスタ状態独自の入出力管理状態その仮想計算機の状態その仮想計算機のユーザ名他の仮想計算機との関係
:プロセス=仮想計算機(他の意味づけも可能)
4
仮想計算機
実際の計算機
プロセス
プロセスを「見る」
身近なOSで,実際にプロセスを見てみるWindows : タスクマネージャを起動UNIX 系 OS: ps コマンドを利用
確認できること多くのプロセスが同時並行的に実行されているユーザのプロセス以外に,システムのプロセスが存在システムプロセスは,OSの機能をサポートするもの
5
プロセスの一生
プロセスは,動的に生成されたり消滅したりする
プロセスの典型的な一生:1. ユーザまたはOSにより生成(起動)される
( 正確には,ユーザやOSのプロセスにより生成 ... 後述)
2.必要な処理や計算を行う [ 活動中 ]
3.自主的に終了する,または外部から強制的に終了させられる
6
プロセスの状態
活動中のプロセスが取りうる状態は3種類ある:実行中状態
プロセッサの時分割処理の順番がまわってきて,
処理が実際に進んでいる状態実行待ち状態
プロセッサがまわってくるのを待っている状態入出力待ち状態
入出力処理が終わるのを待っている状態
プロセスの状態は,OSによって変更される
7
プロセスの状態遷移
8
プロセス生成
入出力待ち状態
実行待ち状態
実行中状態 プロセス終了
順番がまわってくるタイムスライス終了
入出力処理開始入出力処理完了
強制終了
強制終了
プロセススケジューラ
システムには,一般に複数のプロセスが存在するプロセスの交通整理が必要
プロセススケジューラ:プロセスの状態を制御するための,OSの「部品」どのプロセスを,どの状態にするか管理する別のプロセスに切り替えるときに,プロセスを
実行する環境のセットアップを行う現在実行中プロセスの状態を退避新しく実行されるプロセスの状態を復帰
9
プロセススケジューラの動作概念図
スケジューラにより,プロセス状態が同期的に変更される実行中状態にあるプロセスは一個だけ
(プロセッサが複数あるシステムは除く)
10
P1P2P3P4P5
実行中 実行待ち 入出力待ち
時間経過
入出力処理中
入出力処理中
スケジューラの動作
プロセススケジューラの仕組み
交通整理のために,スケジューラはプロセスを分類管理
11
プロセススケジューラの行う操作:a. 実行中プロセスを入出力待ちプロセスに (sleep)b. 入出力待ちプロセスを実行待ちプロセスに (wakeup)c. 実行中プロセスを切り替え (switch)
実行中プロセス
実行待ちプロセス
入出力待ちプロセス P4 P5 P6
P2 P3 P7
P1
P8
a
b
c
プロセススケジューラの動作イメージ
プロセススケジューラは ...常にプロセスを監視しているわけではない普段は眠っていて,何かのキッカケで起きて来て操作を行う
12
プロセス
プロセススケジューラ
タイマー
外部装置
キッカケ = 割り込み
割り込みも何種類かある
割り込み1:API呼び出し
入出力処理依頼プロセスは,入出力装置に直接アクセスできないAPI ( Application Program Interface )を介し, OS に処理を依頼
⇒ 仕事を依頼したら,自分は「スリープ」状態に入る
... 正確には,プロセススケジューラが,プロセスを「眠らせる」
13
OS の入出力処理部プロセス A
入出力開始
呼出元 sleep
switchAPI
プロセス B
実行中
実行待ち
入出力待ち
割り込み2:入出力完了
入出力完了「 A さんに頼まれた仕事,終わったよ」
⇒ プロセス A を「起こし」,順番待ち行列に並ばせる
14
OS の割込み処理部プロセス A
制御横取り
wakeup
プロセス B
割込
入出力完了
制御返却
実行中
実行待ち
入出力待ち
12
3
4
割り込み3:タイマー
タイマ割込み処理からの呼び出しタイマ ... タイムスライスの終了を知らせる
15
OS の割込み処理部プロセス A
制御横取り
switch
プロセス B
割込
タイマ
実行中
実行待ち
12
3
プロセススケジュールの戦略
プロセススケジューラの仕事:プロセスや入出力の進行にあわせ,交通整理をすること
プロセスの切り替え (switch) を行うとき,どの実行待ちプロセスを処理するか決定すること
... いくつかの戦略が知られている
スケジュール戦略を変えると,システムの振舞いが変わる
16
スケジューリングの性能指標(1)
スケジュール戦略を考えるときに考慮すべき要素:CPU 利用率スループット:単位時間あたりの仕事量ターンアラウンド時間:
プロセスを起動してから完了するまでの時間
17
時間プロセス起動 プロセス終了
ターンアラウンド時間
スケジューリングの性能指標(2)
スケジュール戦略を考えるときに考慮すべき要素:待ち時間:
プロセスが,実行待ち状態で過ごす時間の合計応答時間:
最初の処理が行われるまでの時間
18
平均値,最大値,最小値のどれに着目するかも重要
時間プロセス起動 プロセス終了
待待 待待待 待待 待待待
待ち時間応答時間
スケジュール戦略:単純な方式
横取りのない戦略( non-preemptive, 時分割処理は不要)先着順大きなプロセスの後ろは,長時間待たされる
早く終わりそうなものを先に済ます実行時間をあらかじめ見積もるのは難しい
優先度順優先度の決め方が問題優先度の低いプロセスが,なかなか終わらない
⇒エージングによる優先度の調整:長時間待っているプロセスの優先度を
上げる
19
スケジュール戦略:やや複雑な方式
横取りのある戦略( preemptive, 時分割処理が必要)「タイムスライスをどのように割り当てるか」
ラウンドロビン実行待ちプロセスに公平に割り当てる
20
優先度順+ラウンドロビン優先度の高いプロセスは,割当の頻度を上げる
A B C A B C A B C A B C
A B CA B CA BA CA A...プロセス A の優先度が高い場合
スケジュール戦略:さらに複雑な方式
横取りのある戦略( preemptive, 時分割処理が必要)多段フィードバック方式
プロセスを優先度ごとにまとめる同じ優先度の中ではラウンドロビン一定時間内に実行が終わらなければ,
プロセスの優先度が下げられる
21
B CA
E FD
BA
E FDC
優先度高
低
多重プロセスの問題
ここまでの話:個々のプロセスは,互いに独立している ... という立場
ここからの話:複数のプロセスが存在する場合特有の問題
(多重プロセスの問題)プロセスの生成についてプロセスが互いに邪魔をしないための仕組みプロセスが互いに協力するための仕組み
22
プロセスの生成
プロセスは誰が作るのか ...基本的には,プロセスが新しいプロセスを作る
23
プロセス1
プロセス2 プロセス3
プロセス4 プロセス5 プロセス6
...プロセス3の親プロセス
...プロセス1の子プロセス
プロセスの構成例
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
UNIX におけるプロセスの生成
fork システムコールによるプロセス複製exec システムコールによるプログラム切り替え
25
:child = fork();if (child == 0) exec(子プロセス );親プロセスの処理
:
fork
子親
fork
子親
複製
親プロセス 子プロセス
fork
排他制御
複数のプロセスに共用される資源:複数プロセスにより同時に参照される可能性がある
例:「整数値が書かれたファイルを参照し,値を1増やす」
26
3P1
4P2
5
3P1
4P2
4
期待する動作 少しタイミングがずれた場合
読んでから書くまで,他のプロセスにファイルを参照させないようにプロセスを制御する必要がある ... 排他制御
クリティカルセクション
クリティカルセクション( CS ):他のプロセスとは,排他的に実行しなければならない部分
排他制御を適切に実行するためには ...CS の最初と最後で,他プロセスに “ stop”, “go” をかけるCS に入るときは,“ go” が出るまで待機する
27
CS
CS
待機
プロセス1 プロセス2
排他制御を実現する仕組み
排他制御のため, stop, go をかける必要があるstop, go をかける操作も,排他的に実行の必要あり
OS が stop, go の操作を提供することで,ジレンマを解決
stop, go 操作の実現方法:何通りか知られているlock, unlockセマフォモニタ
28
デッドロック
同時に複数の stop, go が必要になる場合も
29
ファイルAをオープン
プロセス1
ファイルBをオープン
ファイルAをクローズ
ファイルBをクローズ
ファイルBをオープン
プロセス2
ファイルAをオープン
ファイルBをクローズ
ファイルAをクローズ
A B
× ×
どちらのプロセスも永久に進めない ⇒ デッドロック状態
stop のかけ方に順番を定める等,運用で回避する必要アリ
プロセス間の協調機構
排他制御と同じ仕組みを利用する方式:排他制御: CS か否かの1ビットを他プロセスに伝える基本的に同じ仕組みで,より大きな情報を伝達可能
ソケット:プロセスとプロセスをつなぐ「仮想通信路」
パイプ:ソケットの特殊な用法UNIX で頻繁に利用される
30
本日のまとめ
プロセスとはOSにおけるプロセスの取り扱いプロセススケジューラについて排他制御と協調機構
次回の講義 ... 入出力機構について
課題(結果の提出不要):自分が普段使っているコンピュータで,どのような
プロセスが走っているか確認せよ
31