戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2023年 秋期 午前217


問題文

プリエンプティブな優先度ベースのスケジューリングで実行する二つの周期タスクA及びBがある。タスクBが周期内に処理を完了できるタスクA及びBの最大実行時間及び周期の組合せはどれか。ここで、タスク Aの方がタスクBより優先度が高く、かつ、タスク AとBの共有資源はなく、タスク切替え時間は考慮しないものとする。また、時間及び周期の単位はミリ秒とする。
応用情報技術者 2023年 秋期 午前2 問17の選択肢の画像

選択肢

(正解)

🔒 解説は解答すると表示されます

応答時間解析【午前2解説】

正解の理由

タスクBが周期内(=デッドライン=周期)に完了するかは、単にCPU利用率の合計が1以下かでは判断できません。固定優先度プリエンプティブでは高優先度タスクAによる離散的な干渉回数を切り上げで評価する応答時間解析(RTA)が必要です。選択肢では、応答時間反復計算 を繰り返すと収束値が となり、タスクBの周期 を超えないため、Bは周期内に完了します。したがって選択肢が成立します。

解法ステップ

  1. 各選択肢についてパラメータを定義する()。
  2. 初期値 として反復を開始する。
  3. 更新式を用いて (本問題は高優先度はAのみなので項は1つ)
  4. 収束()するか、あるいは途中で となれば不成立と判定する。
  5. 収束値が 以下ならタスクBは周期内に完了すると判断する。
計算手順の実例(選択肢):
  • (収束)
  • 収束値 → 可 schedulable

選択肢別の誤答解説

  • ア(正当化)
    • 利用率合計は で1未満だが、正しい判定はRTAで行った結果 のため可です。ここでのポイントは「必要条件(利用率合計≦1)」を満たすだけでなく、応答時間が周期内に収束することを確かめた点です。
    • パラメータ:
    • 反復: → 収束 。よってBは期限内に終わらない。利用率合計は約0.944で1以下だが、切り上げ干渉で期限超過する典型例です。
    • パラメータ:
    • 反復:(収束14)で のため不可。利用率合計は約0.985で1未満でも失敗します。
    • パラメータ:
    • 反復:(収束17)で のため不可。利用率合計は1.0ちょうどでもRTAで不可となることに注意。

よくある誤解

  • 利用率合計 ≦ 1 が十分条件だと誤解する
    • 利用率合計が1以下は必要条件に過ぎません。高優先度タスクの発生が周期境界で重なると、切り上げにより瞬間的な干渉が増え、応答時間が期限を超えます。必ずRTAでチェックしてください。
  • 干渉回数を小数で扱う(切り上げを忘れる)
    • 干渉回数は実際の発生回数なので の切り上げを使う必要があります。小数のまま積算すると過小評価になります。
  • 反復の初期化や終了判定を適切に行わない
    • 初期は 、収束判定は繰返しで等しくなるか、途中で が出たら即座に不可と判断します。

補足コラム

  • ブロッキング(共有資源がある場合):もし高優先度/低優先度間で共有資源が存在するなら、プロトコル(例えば優先度継承法や優先度上限プロトコル)による最大ブロッキング時間 を応答時間式に加えます。
  • タスクが複数の高優先度タスクを持つ場合:干渉項はそれらすべての和になります(本問は高優先度がAのみのため1項)。
  • 簡易判定:利用率チェックは速いスクリーニングになりますが、本問のように厳密判定が必要な場合は必ずRTAを実施してください。

FAQ

Q. 反復が収束しない場合はどう判断するべきですか?
A. 反復中に が出たら即時「不可」と判定できます。通常は有限ステップで収束または期限超過が判明します。
Q. デッドラインが周期より短い場合は?
A. 解析式は同様ですが、比較対象はデッドライン です。収束値が 以下かを確認します。
Q. 実務で手で計算するのが大変な場合は?
A. 小さな数のタスクなら手計算で十分ですが、複数タスクの系ではツールやスクリプト(簡単なRTAループ)を使うと安全です。以下は単純な実装例です:
import math

def rta(Ca, Ta, Cb, Tb):
    R = Cb
    while True:
        R_next = Cb + math.ceil(R / Ta) * Ca
        if R_next == R:
            return R_next
        if R_next > Tb:
            return None  # 未達成
        R = R_next

print(rta(2,4,3,8))  # 選択肢ア -> 7

関連キーワード: 固定優先度、応答時間解析、RTA、プリエンプティブ、干渉切り上げ、デッドライン解析、優先度干渉
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について