エンベデッドシステムスペシャリスト 2011年 午前2 問07
問題文
リアルタイムOSにおけるコンテキストの使用方法に関する記述のうち、適切なものはどれか。
選択肢
ア:アプリケーションタスクを、アプリケーションタスク共有のコンテキストで実行させる。
イ:アプリケーションタスクを、カーネルのコンテキストで実行させる。
ウ:カーネルを、アプリケーションタスクのコンテキストで実行させる。
エ:割込み処理を、割込み処理ごとのコンテキストで実行させる。(正解)
🔒 解説は解答すると表示されます
リアルタイムOSの実行コンテキスト【午前2解説】
正解の理由
適切なのはエです。
リアルタイムOSでは、アプリケーションタスクはそれぞれのタスクに対応するコンテキストで実行されます。一方、割込み処理はタスクの実行とは別の「割込みコンテキスト」で実行されます。
コンテキストとは、処理を再開するために必要なCPUの状態などを指します。タスクの切替えでは、実行中タスクのコンテキストを保存し、次に実行するタスクのコンテキストを復元します。割込み処理は、通常のタスク処理とは異なる実行状況として扱われるため、割込み処理用のコンテキストで実行されます。
解法ステップ
- まず、コンテキストは「処理の実行状態を保存・復元するための情報」と捉えます。
- アプリケーションタスクは、タスクごとに独立した実行状態を持つと考えます。
- 割込み処理は、実行中のタスクとは別の割込みコンテキストで扱われることを確認します。
- この説明に合致するエを選びます。
選択肢別の誤答解説
- ア:アプリケーションタスクを、複数のタスクで共有するコンテキストで実行するという説明です。タスクごとに実行状態を管理するため、適切ではありません。
- イ:アプリケーションタスクをカーネルのコンテキストで実行するという説明です。アプリケーションタスクは、自身のタスクコンテキストで実行されます。
- ウ:カーネル処理が、アプリケーションタスクのコンテキストで実行されるという説明です。システムコールなどで、呼出し元タスクのコンテキストにおいてカーネル処理が行われる場合はあります。しかし、カーネルの処理全般をアプリケーションタスクのコンテキストで実行するとする説明は適切ではありません。
- エ:割込み処理を割込みコンテキストで実行する説明です。タスクコンテキストと割込みコンテキストを区別しており、適切です。
よくある誤解
- コンテキストと実行モードを混同する
「ユーザモード」「カーネルモード」はCPUの特権状態を表します。コンテキストは、処理の実行状態を表すもので、別の概念です。 - カーネル処理は常に独立したカーネルコンテキストで動くと思う
システムコールなどのカーネル処理は、呼出し元タスクの実行状況に関連して行われる場合があります。 - 割込みごとに必ず完全に独立したコンテキストがあると思う
割込み処理は割込みコンテキストで扱われますが、割込みごとに独立したコンテキストをどのように用意するかは、OSやハードウェアの実装によって異なります。
補足コラム
割込みが発生すると、CPUは実行中の処理を中断して割込み処理を行います。その際、元の処理を後で再開できるように、必要な状態を保存します。割込み処理が終わると、その状態を復元して中断していたタスクなどに戻ります。
リアルタイムOSでは、割込みへの応答時間やタスク切替えの時間が重要です。そのため、割込み処理を短く保ち、時間のかかる処理をタスクに引き継ぐ設計がよく用いられます。
FAQ
Q. タスクのコンテキストには何が含まれますか?
A. 代表例は、プログラムカウンタ、スタックポインタ、汎用レジスタなど、タスクの実行を再開するために必要なCPUの状態です。
A. 代表例は、プログラムカウンタ、スタックポインタ、汎用レジスタなど、タスクの実行を再開するために必要なCPUの状態です。
Q. 割込み処理中にタスク切替えが起きることはありますか?
A. OSの設計によります。割込み処理を契機に、より優先度の高いタスクへ切り替える場合があります。実際の切替えは、割込み処理の終了時などに行われることがあります。
A. OSの設計によります。割込み処理を契機に、より優先度の高いタスクへ切り替える場合があります。実際の切替えは、割込み処理の終了時などに行われることがあります。
関連キーワード: コンテキスト、タスクコンテキスト、割込みコンテキスト、コンテキストスイッチ、リアルタイムOS

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

