經過四處搜索並查閱恐龍書後,我來到SO尋求智慧。請注意,這與家庭作業有關,但實際上不是家庭作業問題。此外,這是使用C編程語言。給出內存硬限制的內存管理位矢量的大小
我正在使用目前以4K塊分配內存的內核。爲了減少浪費的內存,我重寫了我認爲malloc是什麼樣子的地方,它會抓取4K頁面,然後根據需要從內存中釋放內存。那部分目前工作正常。我打算有一個內存頁鏈表。內存是作爲char *處理的,所以我的結構中有一個char *。它目前也有一些描述它的整數,以及指向下一個節點的指針。
問題是這樣的:我打算使用一個位向量來跟蹤空閒和使用的內存。我想知道需要多少個整數(4個字節,32位)來跟蹤內存頁面中的所有1字節塊。因此位向量中的1位將對應頁面中的1個字節。值得注意的是,我必須在已分配的4K內部適應這一切,所以我需要計算滿足4K中1位每字節約束條件和所需的整數數量。或者更確切地說,我需要最大化「實際」內存,同時儘量減少映射每個字節一個位所需的整數數量,而這兩個部分(「實際」內存和位向量)都在同一頁。
由於關於頁面和指針的信息,我實際上沒有4K可以玩,但是更接近4062字節。
我認爲這是一個線性規劃問題,但是我嘗試過的方法還沒有解決。
Doh!我早些時候在Y + X/8 = 4096的時候瞎搞。愚蠢的錯誤,有Y,而不是X. 這是非常錯誤的,但它會足夠我的目的。我不認爲我會永遠不想分配12k,這或多或少是我只會繼續努力的。我已經可以在4k塊中分配內存,所以如果我需要更多,我可以創建一個鏈表。 謝謝。 – 2009-09-30 01:06:59
如果考慮到OP提到的將可用空間降低到4062字節的開銷,它只需要452個字節的位圖。 – caf 2009-09-30 01:07:29