テーマ:リアルタイムOSにおけるデッドラインスケジューリング
正解はこちら
解答:イ
[基礎知識・用語のまとめ]
デッドラインスケジューリング・・・デッドライン(締め切り時刻)が近いタスクから順に処理する方式です。リアルタイム処理では目標時間内に処理を完了させることが求められるので、デッドラインスケジューリング方式が適しています。
プリエンティブ方式・・・システム管理をOSが行うことで、マルチタスクを実現する方法のことです。「プリエンプティブ方式」の対義語は、「ノンプリエンプティブ方式」で、これは各プロセスが自主的にシステム資源の管理を行います。
オーバーヘッド・・・その処理の本質ではない演算に費やされる計算量を指します。
[解法]
問題の各パラメータは、
r(リリース時間)、C(タスク実行時間)、D(デッドライン)、T(周期)を表しています。
プリエンティブ方式であるので、優先度の高いタスクが実行可能であれば、優先度の低いタスクは待ち状態となります。
今回の場合、タスクXのほうが優先度が高いので、タスクXが起動されれば、Yは起動できないので、タスクXに関して、r=0とすると、
C =< D = T → 周期タスクの実行時間 <= デッドラインまでの時間 となればよい。となります。
最もデッドラインを守りづらい事象を考えると、Yが起動された後、Xが起動され、YからXに実行権が移った場合でもYのデッドラインを守れるかが焦点になります。
※Yのタスク起動→Xのタスク起動→Xのタスクに実行権を移す→Xのタスク終了→Yのタスクに実行権を移す→Yのタスク終了 (X、Yともにデッドラインが守られている)
Yのタスクの実行時間の空き時間(D-C)の間にXのD時間を処理する必要があります。
したがって <TのD> 4 - <YのC> 2 = <XのD> 2 となっている選択肢「イ」であれば、ギリギリタスクを完了させることができるため、正解となります。
[参考]
リアルタイムOSは組み込みシステムに実装される「組み込みOS」の一部であり、組み込み機器全体ではリアルタイム性のない組み込みOSの方が一般的であるが、リアルタイム性のある製品が増えてきた関係上、その境界線が曖昧になることがある、、、らしい。
利用させていただきました素材へのリンク
うさちゃこちゃんねる様 https://www.youtube.com/channel/UCQcDdg4W6r5OfcB1JTcpABw
コメント