Modern Operating System 輪講 第3回
Download
Report
Transcript Modern Operating System 輪講 第3回
Modern Operating System
輪講
che
2.5.3 Scheduling in Interactive
Systems
インタラクティブシステムのスケジューリングアル
ゴリズムの話
主にCPUをいつスイッチするかが論点
Round-Robin Scheduling
単純に一定時間(quantum)ごとにプロセスを切
り替えていくアルゴリズム
ブロックされたり終了したりしてもスイッチ
A
B
C
D
実行順
Round-Robin Scheduling
気にかけるべきなのはquantumの長さだけ
–
例えばプロセス移行(process switchまたはcontext
switch)に1msecかかるのに、quantumが4msecだと
実行時間の20%が無駄になる。逆に長すぎると並列
順番が全然回っ
てこない
処理に問題。20msecから50msecがよいとされる。
A
B
C
A
無駄
無駄
B
Priority Scheduling
優先度によるスケジューリング
–
優先度の最も高いプロセスが常に実行される
実行されると優先度が下がる
優先度
実行
A
1 23
B
2
C
5
Multiple Queues
昔々
–
–
メモリの中には一つのプロセスしか入れられなかった
プロセスをスイッチするたびにプロセスをディスクに退避させ新
しいプロセスを読み出す必要があった
–
効率をよくするためには個々のプロセスのquantumを長くしなけ
れば
–
ものすごい無駄
でも平行性が失われる
そこでクラス分けによるスケジューリングが考えられた
Multiple Queues
クラスごとに実行時間が決定される
–
–
–
一番上のクラスは1quantum実行される
その下のクラスは2quantum
その下のクラスは4quantum・・・・・・
ブロックされずに1quantumを使い切ったプロセ
スは下のクラスに移動
–
最初は処理が多いが、後になると処理が少なくなる
プロセスでは非効率になる可能性
Shortest Process Next
プロセスが多いとスイッチの手間がかかって非
効率
–
すぐに終わりそうな小さなプロセスを先に終わらせて
しまえば効率的
どのプロセスがすぐ終わるのかをどうやって見
つけるかが問題
Guaranteed Scheduling
最初に、ユーザやCPUの数に応じて一つにどれ
だけCPU時間を割り当てるか決めておく
スケジューラは、このあらかじめ決められた時間
通りにプロセスが実行されるように努力する
–
–
決められた時間以上に動いていたら優先度を下げる
決められた時間以下だったら優先度を上げる
Lottery Scheduling
Guaranteed Schedulingは良いアイデアだが、
実装が難しい
–
簡単な実装で実現できるのがlottery scheduling
コンピュータ資源を誰が使うのかをくじによって
決定してしまう
Lottery Scheduling
例えば
–
–
–
1秒に50回くじ引きを行う
くじに当たったプロセスは20msecCPUを使える
重要なプロセスはくじを多く持ち、CPU時間獲得の
チャンスが増える
長期的に見ると、他のアルゴリズムよりも平等
Lottery Scheduling
例えばその2
–
–
クライアントプログラムとサーバプログラムが動いているとする
クライアントからサーバにデータを送る
–
クライアントからサーバにくじを送る
–
サーバはくじが増えるので、CPU時間獲得のチャンスも上がる
サーバの処理が終わったらクライアントにくじを返す
クライアントはブロックされる
クライアントは再び動き出す
このような場合、サーバは最初はくじはいらない
–
非常に効率的!
Fair-Share Scheduling
こんな状況を考えてみる
–
–
ユーザ1が9個のプロセス、ユーザ2が1個のプロセス
を起動していたとする
ユーザ1はCPUを90%使えるが、ユーザ2は10%し
か使えない。
不公平!回避したい!
プロセスのスイッチをユーザごとに行えば、ユー
ザの格差がなくなる
2.5.4 Scheduling in Real-Time Systems
リアルタイムシステムでのスケジューリング
例えば
–
CDプレイヤー
–
飛行機
–
処理が遅いと音が飛ぶ
処理が遅いと墜落する
病院
処理が遅いと病人が大変なことに
hard real timeとsoft real time
hard real time
–
かかる時間の限度が絶対的に決まっているもの
soft real time
–
限度を超えることが望ましくないが、でもまぁ我慢でき
るもの
静的スケジューリングと動的スケジューリン
グ
静的
–
システムが動く前からスケジューリングを決定しておく
前もって実行時の情報が完全にわかっていないとだめ
動的
–
その場で決める