メモリマップ【memory map】
概要

コンピュータでは、CPUがメモリアドレスと呼ばれる番号を指定してデータの読み書きを行う。連続した番地の範囲を「アドレス空間」と呼び、大半はメインメモリ(RAM)で構成されるが、ROMや入出力装置の制御レジスタなど、CPUからデータを読み書きする様々な装置が特定のアドレスに割り当てられることがある。
この割り当ての一覧や構造を示したものがメモリマップである。例えば、この範囲はRAM、この範囲はBIOS用のROM、この範囲は周辺機器の制御用レジスタに対応付けられるといった形で定義される。RAM以外の様々な装置の入出力(I/O)機能をメモリアドレスと地続きの番地に割り当ててアクセスする手法を「メモリマップドI/O」(memory-mapped I/O)という。
メモリマップの設計は、ハードウェア構成やCPUのアドレス幅に依存する。32ビットCPUであれば理論上4GBのアドレス空間を扱うことができ、その範囲内で各種領域を配置する。組み込みシステムでは、限られたアドレス空間の中にフラッシュメモリやSRAM、タイマーやシリアル通信装置などを効率的に配置する必要があるため、メモリマップはシステム設計の重要な要素となる。
現代的なオペレーティングシステム(OS)は仮想記憶機構(仮想メモリ)を用いてプログラム側から見たアドレスと装置内の物理アドレスを対応付けており、実行されるプログラム(プロセス)ごとに独立した仮想的なメモリマップを持っている。この仕組みにより、各プログラムはまるで自分専用の連続したメモリ空間を持っているかのようにメモリアクセスを行うことができる。
まとめ
関連用語
資格試験などの「メモリマップ」の出題履歴
▼ 基本情報技術者試験
【令7修1 問13】 図のメモリマップで,セグメント2が解放されたとき,セグメントを移動(動的再配置)し,分散する空き領域を集めて一つの連続領域にしたい。
【令1修7 問18】 図のメモリマップで,セグメント2が解放されたとき,セグメントを移動(動的再配置)し,分散する空き領域を集めて一つの連続領域にしたい。
【平29秋 問19】 図のメモリマップで,セグメント2が解放されたとき,セグメントを移動(動的再配置)し,分散する空き領域を集めて一つの連続領域にしたい。
【平27秋 問18】 図のメモリマップで,セグメント2が解放されたとき,セグメントを移動(動的再配置)し,分散する空き領域を集めて一つの連続領域にしたい。