メモリプールとは?めもりぷーる
メモリプールとは、固定長のブロックをあらかじめ並べておき、獲得と返却をリスト操作だけで済ませる動的メモリ管理方式。確保・解放の実行時間が定数で見積れるため、実行時間がばらつくmalloc/freeを避けたいハードリアルタイム系ではこちらを使う。外部断片化が原理的に起きない点も効く。
最終更新:2026-10-06
エンベデッドSPを最短で暗記・合格する →背景
汎用OSのヒープは平均性能を最適化する設計で、最悪実行時間も断片化の進み方も保証しない。ところが組込みは電源を入れたまま年単位で回り、再起動で状態を洗い流せない前提の製品が多く、数か月後に確保が失敗するという形の故障がいちばん嫌われる。RTOSが固定長メモリプールをカーネルオブジェクトとして最初から持っているのはこのためで、資源設計では『最悪でいくつ同時に使うか』を数え上げて静的に決め切る。
具体例
TOPPERSプロジェクトのTOPPERS/ASPはμITRON系の固定長メモリプールを備え、get_mpf/rel_mpfで獲得・返却する。車載のCAN受信では8バイトのペイロードに合わせた小ブロックのプールと、診断通信の長いフレーム用のプールを別に用意し、用途ごとに分離して枯渇の影響を一方に閉じ込める。
試験での引っ掛け
断片化しないのは固定長だからで、可変長メモリプールでは外部断片化が残る。逆にブロック長を1種類に揃えると小さな要求で内部断片化が増えるため、用途別にプールを分けるのが定石。答案では「確保時間が定数で見積れる」と「枯渇時の振る舞いを設計者が決められる」の2点を言い切る。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。