【发布时间】:2011-06-02 23:39:25
【问题描述】:
假设你有一些包含一堆字节的内存:
++++ ++-- ---+ +++-
-++- ++++ ++++ ----
---- ++++ +
假设+ 表示已分配,- 表示免费。
我正在寻找如何计算碎片百分比的公式。
背景
我正在为具有静态内存的嵌入式设备实现微小的动态内存管理。我的目标是拥有一些可以用来存储少量数据的东西。主要是通过无线连接传入的数据包,每个大约 128 字节。
【问题讨论】:
-
啊……我明白了。这取决于我的分配块有多大。
-
如果你所有的块大小都差不多,而且你的内存是静态的,而且你的系统太小而不能使用缓存来访问内存,那么碎片可能并不重要——你必须跟踪哪些插槽是免费的,哪些不是,但在访问中跳来跳去应该不会花费你太多。这与机电磁盘驱动器形成鲜明对比,在这种驱动器中,您必须在四处跳动时移动磁头,或者在慢速 DRAM 和 chache 系统中跳动会导致大量缓存未命中。
标签: c memory-management embedded fragmentation