SkillStack
テクノロジ系6 / 25問

エンベデッドシステムスペシャリスト試験 令和7年度 秋期 午前II 問6

優先度に基づくプリエンプティブスケジューリングのリアルタイム OS を使用した組込みシステムにおいて、入力装置及び出力装置にアクセスする二つのタスク X、Y がある。X は Y より優先度が低く、X が資源待ち状態でない場合に Y が資源待ち状態に遷移すると X が実行状態に遷移する。入力装置及び出力装置へのアクセスを排他制御するために、入力装置及び出力装置にそれぞれバイナリセマフォ i 及び o を用意し、X、Y を図のように実装した。このとき、デッドロックが発生するのは X の処理 A、B、C、D のうち、どの処理中にプリエンプションが発生して Y が実行されたときか。ここで、Y の実行はαから行うものとし、X の処理 A、B、C、D では、入力装置及び出力装置へのアクセス並びにバイナリセマフォの操作は行わないものとする。

エンベデッドシステムスペシャリスト試験 令和7年度 秋期 午前II 問6の図表

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】イ

図では、タスクXはセマフォiを取得してから処理Bを行い、その後にセマフォoを取得します。一方、タスクYは逆に、セマフォoを取得してからセマフォiを取得します。処理B中のXはiを保持し、まだoを保持していません。ここで優先度の高いYがプリエンプトすると、Yはoを取得できますが、続くiはXが保持しているため待ち状態になります。するとXが再開しますが、Xは次にoを取得しようとして、Yが保持中なので待ち状態になります。XはYのoを、YはXのiを互いに待ち、どちらも解放処理へ進めない循環待ちとなるので、デッドロックが発生します。

アの処理A中はXがまだiを取得していないため、Yはoとiを順に取得し、アクセス後に両方を解放できます。 ウの処理C中はXがiとoの両方を保持しています。Yは最初のo取得で待ち、再開したXが処理C、アクセス、処理Dを終えてoを解放できるため、循環待ちにはなりません。 エの処理D中もXが両方を保持していますが、Yはoで待つだけであり、Xはo、iを順に解放できるので誤りです。

【ポイント】 デッドロックの代表的な原因は、複数資源を異なる順序で取得することです。全タスクで取得順序を統一すると、循環待ちを防げます。

出典:令和7年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問6
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の25問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める