オペレーティングシステム...t7 = (3,10) 2019/5/27 第6回...
TRANSCRIPT
オペレーティングシステム
加藤 真平
東京大学 大学院情報理工学系研究科
2019/5/27 1第6回 オペレーティングシステム
PFLab(加藤研)のウェブサイトからダウンロードできます。⇒http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/
2019/5/27 2
講義概要
• 受講生に求める基礎知識– C言語の理解
– コンピュータアーキテクチャの基礎の理解• メモリ管理、割り込み、CPUモード
• 参考図書– Silberschatz, Galvin, and Gagne, Operating System Concepts 8th
Edition, Wiley
• 成績– 試験の点数で決定
– 試験は持ち込み不可
– 授業に出席していた人で試験の結果が悪い人は追試験あり• 出席をとるが出席点はなし
第6回 オペレーティングシステム
講義スケジュール(予定)
1. OSの概要(4/8)
2. プロセス管理(4/15)
3. プロセス間交信、スレッド(4/22)
4. プロセス同期(5/13)
5. CPUスケジューリング 1(5/20)
6. CPUスケジューリング 2 & トランザクション処理(5/27)
7. メモリ管理1(6/3)
8. 休講予定(6/10)
9. メモリ管理2&I/Oシステム(6/17)
10. I/Oシステム(6/24)
11. ファイルシステム(7/1)
12. プロテクション&セキュリティ (7/8)
13. バッチシステム&分散システム&まとめ(7/22)
14. 試験(7/29)
2019/5/27 第6回 オペレーティングシステム 3
2019/5/27 第6回 オペレーティングシステム 4
Real-Time Scheduling
• Hard real-time systems
– クリティカルなタスクを保証された時間内に完了することが必要
• Soft real-time systems
– クリティカルなタスクはそのほかのものよりもプライオリティが高いことが必要
• 実時間スケジューリングアルゴリズム
– 静的優先度方式
• Rate Monotonic Scheduling
– 動的優先度方式
• Earliest Deadline First Scheduling
リアルタイムシステムの応用分野マルチメディア
ドローン
自動運転システム
5
ロボット
ゲーム
VR
2019/5/27 第6回 オペレーティングシステム
リアルタイムプロセス
task() {
for (;;) {
job();
wait_for_next_period();
}
} 時間
周期 周期 周期
ジョブ ジョブ ジョブ
時間制約はアプリケーション依存
62019/5/27 第6回 オペレーティングシステム
2019/5/27 第6回 オペレーティングシステム 7
リアルタイムプロセス例
• 周期プロセス
– デッドラインは次の周期が始まるまで
• 周期プロセス例
Piの実行時間:Ti
周期:τi 周期:τi
Pの実行時間:Ti
Piの実行時間:Tj
周期:τj 周期:τj 周期:τj
Piの実行時間:Tj Piの実行時間:Tj
Process Period(τ) CPU time(T)
P1 5 2
P2 10 4
2019/5/27 第6回 オペレーティングシステム 8
リアルタイムスケジューリング例
• 周期プロセス例
• CPU利用率は
σTiτi
= 0.8 = 80%
• スケジューリングできるはずだが、
• 静的(固定)優先度スケジューリング
– P2の優先度を高くすると、、、
Process Period(τ) CPU time(T)
P1 5 2
P2 10 4
2019/5/27 第6回 オペレーティングシステム 9
Rate Monotonic Scheduling
• 周期プロセス– デッドラインは次の周期が始まるまで
• 固定優先順位
• 周期の短いプロセスが高い優先順位を与える
• Rate Monotonic Schedulingでは、スケジューリング可能性を静的に解析可能(Rate Monotonic Analysis)
Piの実行時間:Ti
周期:τi 周期:τi
Pの実行時間:Ti
Piの実行時間:Tj
周期:τj 周期:τj 周期:τj
Piの実行時間:Tj Piの実行時間:Tj
2019/5/27 第6回 オペレーティングシステム 10
Rate Monotonic Schedulingの例
T1=2
Process Period(τ) CPU time(T)
P1 5 2
P2 10 4
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
T1=2 T1=2 T1=2
T2: 3 T2: 1 T2: 3 T2: 1
2019/5/27 第6回 オペレーティングシステム 11
Rate Monotonic Analysis
• 仮定
– 全てのプロセスは単一CPU上で動作
– コンテキストスイッチ時間は無視
– プロセス間での依存関係無し
• スケジューラビリティ
– σTiτi
≤ 𝑙𝑛 2 = 69.3%
2019/5/27 第6回 オペレーティングシステム 12
RMA
• CPU利用率が100%以下でもスケジュールできない例
T1=2
Process Period(τ) CPU time(T) CPU 利用率
P1 5 2 40 %
P2 12 7 58.333 %
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
T1=2 T1=2 T1=2
T2: 3 T2: 1
デッドラインミス!
T2: 3
2019/5/27 第6回 オペレーティングシステム 13
Earliest Deadline First Scheduling
• 動的優先度スケジューリング
• デッドラインが近いプロセスを高い優先度
• スケジューラビリティ
–σTiτi
≤ 100%
• タイマ割り込み毎に
– デッドラインの計算
– デッドラインのもっとも近いプロセスを実行
• スケジューリングコスト有
2019/5/27 第6回 オペレーティングシステム 14
EDFの例
T1=2
Process Period(τ) CPU time(T) CPU 利用率
P1 5 2 40 %
P2 12 7 58.333 %
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
T1=2 T1=2 T1=2
T2: 3 T2: 1T2: 3
補足
2019/5/27 第6回 オペレーティングシステム 15
各タスクは周期的(Sporadic)にジョブを生成
すべてのジョブが次の周期(デッドライン)までに実行を完了できるようにスケジューリング
task() {
for (;;) {
job();
wait_for_next_period();
}
} 時間
周期 周期 周期
時間的正確さはスケジューリングアルゴリズムに依存
到着 到着 到着
補足
2019/5/27 第6回 オペレーティングシステム 16
Rate Monotonic (RM)
Earliest Deadline First (EDF)
⇒周期の短いタスクが高優先度(固定)
⇒デッドラインが早いタスクが高優先度(動的)
タスク1
タスク2
タスク1
タスク2
シングルプロセッサに対しては最適なアルゴリズム
マルチコア(m個のコア)でのリアルタイムスケジューリング
コア
タスクキュー
グローバルスケジューリングGlobal Scheduling
パーティションスケジューリングPartitioned Scheduling
C1
C2
Cm
コア
T2
C1
C2
Cm
T6
T5T4
タスクキュー
マルチコアではシステム使用率U(T) = ΣUi / m
T4T3T2T1
T3T1
T8T7T6T5
EDFEDF
EDF
EDF
T7
T8
2019/5/27 第6回 オペレーティングシステム 17
Global EDFの問題
• 例: T1 = T2 = T3 = (2e,x), T4 = (x,x+e)
– x >>> e
C1
C2
C3
0
1
3
4
T4がデッドラインミス
2e x x+e x+2e
T1,T2,T3,T4 T1,T2,T3 T4
2
時間
e≒0とするとU(T) = (U1+U2+U3+U4) / m = 1 / m
2019/5/27 第6回 オペレーティングシステム 18
T4
T4
T4
Partitioned EDFの問題
例: T1 = T2 = T3 = T4 = (x+e,2x)
– x >>> e
– U1 = U2 = U3 = U4 = 50 + α %
C1
C2
C3
100%
100%
100%
T1
T2
T3
50 + α%
50 + α%
50 + α%
100 + 2α%
100 + 2α%
100 + 2α%
α≒0とするとU(T) = 50%
2019/5/27 第6回 オペレーティングシステム 19
効率的なアルゴリズム
• EDF-USアルゴリズム– B.Andersson, IEEE RTSS, 2001
• EDF-BFアルゴリズム– B.Andersson, Real-Time Systems Journal, 2004
• EDZLアルゴリズム– M. Cirinei, Euromicro RTS, 2007
スケジュール可能なシステム使用率: 50~60%
2019/5/27 第6回 オペレーティングシステム 20
EDF-USアルゴリズム
• CPU使用率50%以上のタスクは最高優先度
– 例: T1 = T2 = T3 = (2e,x), T4 = (x,x+e)
– x >>> e
C1
C2
C3
0
1 3
4
T4はデッドラインミスを起こさない
x x+e
T1,T2,T3,T4 T1,T2,T3 T4
2
時間
2019/5/27 第6回 オペレーティングシステム 21
最適なアルゴリズム
• Pfairアルゴリズム– S. Baruah, ICPP, 1996
• EKGアルゴリズム– B. Andersson, IEEE RTCSA, 2006
• LLREFアルゴリズム– H. Cho, IEEE RTSS, 2006
スケジュール可能なシステム使用率100%
⇒計算が複雑化、プリエンプションが多発
2019/5/27 第6回 オペレーティングシステム 22
Pfairアルゴリズム
• 各タスクを最小時間に分割
– 例:T = {T1=(1,4), T2=(2,4), T3=(3,5), T4=(2,6),T5=(3,6), T6=(2,8), T7=(3,10)}
C1
C2
C3
3 3 2 3 2 3 3 4 3 1 3 7 3 3 2 3
2 4 5 6 5 1 2 7 2 6 2 2 4 5 7
5 7 1 4 7 5 5 4 5 5 1 6
2019/5/27 第6回 オペレーティングシステム 23
Tk
TkT’k
T’’k
• セミパーティショニング/Semi-partitioning
– パーティショニング+タスク分割
• スケジュール可能なシステム使用率の向上
• プリエンプションとマイグレーションの回数を抑制
Ti Tj
セミパーティションスケジューリング
Cx
Cy
100%
100%
パーティショニングセミパーティショニング
2019/5/27 第6回 オペレーティングシステム 24
分割されたタスク(Split Task)• タスクTkをT’k (Cx上)とT’’k (Cy上)に分割
– T’k=(E’k, Pk): Tkの第1部タスク
– T’’k=(E’’k, Pk): Tkの第2部タスク
• TkはT’kとT’’kとしてコアCxとCyで実行
– T’kとT’’kは任意の順に実行可能
– T’kとT’’kの並列実行は不可
Cx
Cy
T’k
T’’k
Tk
2019/5/27 第6回 オペレーティングシステム 25
T6 = (2,8)
T5 = (3,6)T’5= (1,6)
T’’5 = (2,6)
T4 = (2,6)T’’3 = (2,5)
T3=(3,5)T’3 = (1,5)T2 = (2,4)T1 = (1,4)
セミパーティションスケジューリングタスクの分割方法の例
1. タスクを順にコアに割当て
2. スケジュール可能なコア使用率の上限を計算
3. コア使用率が上限を超えたらタスクを分割
例: T = {T1=(1,4), T2=(2,4), T3=(3,5), T4=(2,6),T5=(3,6), T6=(2,8), T7=(3,10)}
C1
C2
C3
100%
100%
100%
25% 75%
T7 = (3,10)
2019/5/27 第6回 オペレーティングシステム 26
• 第2部タスクは常に最高優先度
– 第1部タスクと第2部タスクの実行が重なった場合のみ第2部タスクの実行を延期
– 例: コアC1: {T1=(1,4), T2=(2,4), T’3=(1,5)}コアC2: {T’’3=(2,5), T4=(2,6), T’5=(1,6)}
0
1 2 3 1 2 3 1 2 3 1 2 3 1 2
3 4 5 3 4 5 3 4 5 3 4
時間
C1
C2
5 10 15 20
EDF Scheduling
EDF Scheduling (T’’3は最高優先度)
セミパーティションスケジューリングスケジューリング方法の例
2019/5/27 第6回 オペレーティングシステム 27
• 第2部タスクは常に最高優先度
– 第1部タスクと第2部タスクの実行が重なった場合のみ第2部タスクの実行を延期
– 例:
0
1 2 3 1 2 3 1 2 3 1 2 3 1 2
3 4 5 3 4 5 4 5 3 4
時間
C1
C2
5 10 15 20
EDF Scheduling
EDF Scheduling (T’’3は最高優先度)
3 4 3
コアC1: {T1=(1,4), T2=(2,4), T’3=(1,5)}コアC2: {T’’3=(2,5), T4=(2,6), T’5=(1,6)}
セミパーティションスケジューリングスケジューリング方法の例
2019/5/27 第6回 オペレーティングシステム 28
スケジュール可能なコア使用率
• コアCx: S = {T’’i, Ti+1, Ti+2, …, Ti+n}
• スケジュール可能なCxの使用率の上限 Ub
−+
−−−+=
iEiEGPi
iEi)EG(Pi,
P
iEGPminiUUb
min
min
1Pi
iEPG min +
+=
1Pii}T / STk|min{PkPmin +==
この上限を用いてタスクをコアに割り当てる
2019/5/27 第6回 オペレーティングシステム 29
補足
2019/5/27 第6回 オペレーティングシステム 30
2つのプロセッサと3つのタスクの例
タスク1
タスク2
タスク3デッドラインミス
低負荷なタスクセットに対しても時間的な違反
ジョブの到着 デッドライン
安全システムの破綻 サービスの質の低下
マルチコア、マルチプロセッサでの問題
補足
2019/5/27 第6回 オペレーティングシステム 31
2つのプロセッサと3つのタスクの例
タスク1
タスク2
タスク3
EDFと同程度の計算量 最適なアルゴリズムに近い性能
ジョブの到着 デッドライン
EDCLの事例
補足
2019/5/27 第6回 オペレーティングシステム 32
タスク1
タスク2
タスク3
どのようにCPUを割り当ててもスケジュール不可能!
CPU1
CPU2
CPU2CPU1
Window Window
Migration
EDF-WMの適用
2つのプロセッサと3つのタスクの例 ジョブの到着 デッドライン
EDF-WMの事例
2019/5/27 第6回 オペレーティングシステム 33
Priority Inversion
• 高いプライオリティのプロセスが実行できず、結果として低いプライオリティのプロセスが実行されてしまう現象
• 共有資源
– 低いプロセスが共有資源を排他的に使用
– 高いプロセスが共有資源を必要としたときに、低いプロセスが使用しているために待ちが発生
2019/5/27 第6回 オペレーティングシステム 34
Priority Inversionの例
Process Period(τ) CPU time(T)
共有資源アクセス
P1 4 1 1unit間
P2 5 2 なし
P3 10 3 3unit間
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
デッドラインミス!
2019/5/27 第6回 オペレーティングシステム 35
Priority Inheritanceによる解決
Process Period(τ) CPU time(T)
共有資源アクセス
P1 4 1 1unit間
P2 5 2 なし
P3 10 3 3unit間
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2019/5/27 第6回 オペレーティングシステム 36
トランザクション• トランザクションとは?
– 論理的に一つの機能として実行される操作の集まり
– 一般には、データベースにおける更新、検索などの処理
• 例– 銀行口座における、1万円引き落とすトランザクション
• READ A
• A = A – 10,000
• WRITE A
• トランザクションのプリミティブ– BEGIN_TRANSACTION
– END_TRANSACTION (COMMIT)
– ABORT_TRANSACTION
– READ
– WRITE
2019/5/27 第6回 オペレーティングシステム 37
トランザクション
• トランザクションは以下の4つの特性:ACIDを満たさなければならない
– Atomic(原子性)
– Consist(一貫性)
– Isolated (Serializability)
– Durable (永続性)
2019/5/27 第6回 オペレーティングシステム 38
トランザクションのAtomicity(原子性)• 例
– 銀行口座における、1万円引き落とすトランザクションと1万円を預けるトランザクションが同時に行われる場合
• トランザクションの原子性(atomicity)– クリティカルセクションの排他制御と同様、外の世界に対して不可分
– トランザクションは、完全に実行されるか、まったく実行されないかのどちらかで、中途半端な実行なし
• マシンの故障を考えると、記憶デバイスの性質を考える必要あり– Volatile Storage
– Nonvolatile Storage
– Stable Storage
READ A
A = A – 10,000
WRITE A
READ A
A = A + 10,000
WRITE A
2019/5/27 第6回 オペレーティングシステム 39
トランザクションのConsistency
• 不変性(Invariant):システムに常時満たされなければならないある種の制約
• もしトランザクションの前にその不変性を満たしていれば、トランザクションの後でも満足
• 例
– 会社全体で扱っている金銭は、会社内の部所間での金銭の授受が行われても、会社全体で、金銭の総額は同じ
2019/5/27 第6回 オペレーティングシステム 40
トランザクションのSerializability
• IsolatedあるいはSerializability
• 複数トランザクションが実行されているとき、最終的な結果が、あたかも全てのトランザクションがある順序で逐次的に動作したようにみえること
T0 T1
Read(A)
Write(A)
Read(B)
Write(B)
Read(A)
Write(A)
Read(B)
Write(B)
T0 T1
Read(A)
Write(A)
Read(A)
Write(A)
Read(B)
Write(B)
Read(B)
Write(B)
2019/5/27 第6回 オペレーティングシステム 41
2相ロック (Two Phase Lock)
• 整列化が可能
• 2つの相
– Growing phase
• LockのみをしていくフェーズでUnlockなし
– Shrinking phase
• UnlockのみをしていくフェーズでLockなし
• 厳密2相ロック (Strict Two Phase Lock)
– 全てのリソースをロックするフェーズ
– データをアクセス
– コミット
– リソースを開放するフェーズ
2019/5/27 第6回 オペレーティングシステム 42
厳密2相ロックの利点• Cascaded Abortを防ぐことができる
– Cascaded Abort:例えば、トランザクションT1があるデータを修正し、その後、T1がコミットする前に、トランザクションT2がそのデータを読むあるいは修正
• T1がabortすると、T2もabortの必要性
T1 T2
Lock A
Read A
Change A
Write A
Unlock A
Lock A
Read A
Change A
Write A
Unlock A
Lock B
Read B
Find problem
ABORT!!
T1 T2
Lock A
Lock B
Read A
Change A
Write A
Read B
COMMIT
Unlock B
Unlock A
Lock A
Read A
Change A
Write A
Unlock A