storage allocation for real-time embedded systems (M. Masmano, I. Ripoll, and A. Crespo). Real-Time Systems Symposium, Work-in-Progress Session. Cancun, Mexico, December 2003. • 2のべき乗の分類の下に、さらに細かい分類を行うことでメモリ利 用効率を改善する • 最適なサイズのブロックを即座に見つけだせる (とあるが、実際にはGood-FitでありBest-Fitはしない) • どのような状況でも同じ時間で動作し、最悪時間が存在しないので リアルタイムシステムに向いている ※ Wikipediaより引用
flag free size prev in use used flag free size prev in use prev block typedef struct USED_BLOCK { unsigned int f : 1; // flag free unsigned int p : 1; // prev in use uint32_t size; } USED_BLOCK; ※ glibcからアイデア借用 free flag free prev block size used flag free prev block size
は必ず0 • ならば、size の下 2bit をフラグとして使おう used flag free size prev in use typedef struct USED_BLOCK { unsigned int f : 1; // flag free unsigned int p : 1; // prev in use uint32_t size; } USED_BLOCK;
は必ず0 • ならば、size の下 2bit をフラグとして使おう used flag free size prev in use used size (f,u) typedef struct USED_BLOCK { uint32_t size; } USED_BLOCK; typedef struct USED_BLOCK { unsigned int f : 1; // flag free unsigned int p : 1; // prev in use uint32_t size; } USED_BLOCK; 31 30 29 28 ... 3 2 1 free 0 use size