情報処理安全確保支援士試験 情報処理安全確保支援士試験 平成30年度春期 午前Ⅰ3: 再帰的な処理を実現するためには,再帰的に呼び出したときのレジスタ及びメモリの内容を保存しておく必要がある。そのための記憶管理方式はどれか。

情報処理安全確保支援士試験 平成30年度春期 午前Ⅰ
Q 33 / 30
再帰的な処理を実現するためには,再帰的に呼び出したときのレジスタ及びメモリの内容を保存しておく必要がある。そのための記憶管理方式はどれか。

問題本文

再帰的な処理を実現するためには,再帰的に呼び出したときのレジスタ及びメモリの内容を保存しておく必要がある。そのための記憶管理方式はどれか。

選択肢

  • .FIFO
  • .LFU
  • .LIFO
  • .LRU

正解

. LIFO

解説

再帰呼出しでは、呼び出すたびに現在のレジスタや戻り番地・局所変数を退避し、戻るときに直前の状態から復元する必要がある。これは後入れ先出し(LIFO)のスタックに一致する。最後に積んだ呼出しが最初に戻るためウが正解。コールスタックはプログラム実行の基礎で、深い再帰でのスタックオーバーフローやバッファオーバーフロー攻撃の理解にもつながる。

選択肢ごとの解説

  • .FIFOは先入れ先出しのキュー方式で、最後に呼んだ状態を最初に戻す再帰の復元順序とは逆になり誤り。
  • .LFUは使用頻度の低いものを置き換えるキャッシュ追出し方式で、用途が異なり誤り。
  • .LIFOは後入れ先出しでスタックの方式。直近の呼出し状態から復元でき正解。
  • .LRUは最も長く未使用のものを追い出すキャッシュ方式で記憶退避の仕組みではなく誤り。

情報処理安全確保支援士試験 平成30年度春期 午前Ⅰ過去問一覧へ戻る・問3