【发布时间】:2009-09-30 00:46:39
【问题描述】:
在搜索了一下并查阅了恐龙书之后,我来到 SO 寻求智慧。请注意,这与家庭作业有关,但实际上不是家庭作业问题。此外,这是使用 C 编程语言。
我正在使用当前以 4K 块分配内存的内核。为了减少浪费的内存,我重写了我认为 malloc 的样子,它会抓取一个 4K 页面,然后根据需要从中分配内存。该部分目前工作正常。我计划有一个内存页面的链接列表。内存作为 char* 处理,因此我的结构中有一个 char*。它目前还有一些描述它的整数,以及指向下一个节点的指针。
问题是这样的:我打算使用位向量来跟踪空闲和已用内存。我想弄清楚我需要多少个整数(4 字节,32 位)来跟踪内存页面中的所有 1 字节块。所以位向量中的 1 位将对应于页面中的 1 个字节。问题是我必须在分配的 4K 范围内满足所有这些要求,因此我需要计算出满足每字节 1 位约束和所需的整数数量4K。
或者更确切地说,我需要最大化我将拥有的“实际”内存,同时最小化每个字节映射一位所需的整数数量,而这两个部分(“实际”内存和位向量)在相同页。
由于有关页面和指针的信息,我实际上不会使用 4K,而是更接近 4062 字节。
我相信这是一个线性规划问题,但我尝试过的公式没有成功。
【问题讨论】:
标签: c memory-management kernel