エンベデッドシステムスペシャリスト 2025年 午前2 問17
問題文
組込みシステムにおける、ソフトウェアのメモリ安全性(Memory Safety)を考慮した事例として、適切なものはどれか。
選択肢
ア:宇宙線によって引き起こされるメモリのエラーを回避するために、ソフトウェアの処理を多重化してエラーを検出することによって、安全な動作を行う。
イ:エラー検出及び訂正が可能なメモリを使用することによって、エラーの発生と訂正をソフトウェアから隠蔽して、ソフトウェアの動作の健全性を確保する。
ウ:バッファオーバーフロー、メモリリークなどの潜在的なセキュリティ上の問題を回避するために、メモリの保護機能を備えたプログラム言語を使用する。(正解)
エ:ヒープ及びスタックメモリの必要量を静的解析ツールで算出し、十分な空きメモリ領域を確保することによって、メモリ不足が発生しないようにする。
🔒 解説は解答すると表示されます
組込みシステムのメモリ安全性【午前2解説】
正解の理由
正しいのはウです。
メモリ安全性とは、プログラムがメモリの不正な領域を読み書きしたり、解放済みのメモリを使ったりすることを防ぎ、メモリを安全に扱える性質です。メモリ保護機能を備えたプログラミング言語を使うと、バッファオーバーフローなどの不正なメモリアクセスを防止・抑制できます。
このように、ソフトウェアがメモリを安全に扱う仕組みを採用することが、問題で問われているメモリ安全性への対応です。
解法ステップ
- 問題の焦点が、メモリの故障ではなくソフトウェアによるメモリの扱い方だと捉えます。
- バッファオーバーフローやメモリリークなど、ソフトウェア起因の問題に触れている選択肢を探します。
- メモリ保護機能を備えた言語の使用を挙げているウを選びます。
選択肢別の誤答解説
- ア:宇宙線などでメモリに発生するエラーに対し、ソフトウェア処理を多重化して検出する方法です。これは主に、故障に備える冗長化やフォールトトレランスの考え方であり、プログラムのメモリアクセスを安全にする対策とは異なります。
- イ:ECCメモリによって、メモリ上のビット誤りを検出・訂正する方法です。これはハードウェアによるメモリエラー対策です。
- ウ:メモリ保護機能を備えたプログラミング言語を使用し、ソフトウェアに起因する不正なメモリアクセスなどを防ぎます。メモリ安全性を考慮した事例です。
- エ:静的解析で必要なメモリ量を見積もり、メモリ不足を防ぐ方法です。これはメモリ容量の設計・管理に関する対策であり、不正なメモリアクセスを防ぐメモリ安全性とは異なります。
よくある誤解
- メモリのエラー対策は、すべてメモリ安全性の対策だと考える
ECCや宇宙線によるビット誤りへの対策は、ハードウェア故障への対策です。メモリ安全性は、主にソフトウェアがメモリを正しく扱うことを指します。 - メモリ不足を防ぐことが、メモリ安全性だと考える
必要量を見積もることは重要ですが、容量不足の回避と、範囲外アクセスなどの防止は別の観点です。 - メモリリークは、バッファオーバーフローと同じ種類の問題だと考える
メモリリークは確保したメモリを解放し忘れる問題です。メモリを範囲外から読み書きする問題とは性質が異なりますが、メモリ資源の枯渇やセキュリティ上の問題につながる場合があります。
補足コラム
メモリ安全性に関係する代表的な問題には、バッファオーバーフロー、範囲外アクセス、解放済みメモリの使用などがあります。言語の機能や実行時の検査によって、こうした問題を防止・検出しやすくできます。
一方、組込みシステムではメモリ容量や実行速度に制約があるため、使用する言語や実行環境の機能だけでなく、静的解析や設計レビューを組み合わせることも重要です。
FAQ
Q. メモリ安全性は、メモリ不足を起こさないことですか?
A. それだけではありません。メモリ不足の防止は容量管理の問題です。メモリ安全性では、プログラムが許可された範囲で正しくメモリを扱うことが重視されます。
A. それだけではありません。メモリ不足の防止は容量管理の問題です。メモリ安全性では、プログラムが許可された範囲で正しくメモリを扱うことが重視されます。
Q. ECCメモリを使えば、ソフトウェアのメモリ安全性も確保できますか?
A. いいえ。ECCはメモリ上のビット誤りを検出・訂正する仕組みです。ソフトウェアの範囲外アクセスなどを防ぐ機能ではありません。
A. いいえ。ECCはメモリ上のビット誤りを検出・訂正する仕組みです。ソフトウェアの範囲外アクセスなどを防ぐ機能ではありません。
Q. メモリ安全性を備えた言語なら、メモリ関連の問題はすべてなくなりますか?
A. すべてなくなるとは限りません。言語や実行環境が防止できる問題の範囲には限りがあり、設計や実装、設定の確認も必要です。
A. すべてなくなるとは限りません。言語や実行環境が防止できる問題の範囲には限りがあり、設計や実装、設定の確認も必要です。
関連キーワード: メモリ安全性、バッファオーバーフロー、メモリリーク、ECCメモリ、静的解析

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

