因此,作爲操作系統課程的一部分,我實現了一個內存分配器(就像C中的malloc一樣)。可用空間存儲在鏈接列表中。內存碎片測試
我在接下來的問題:我將如何去測試各種分配策略(例如,首次擬合,最佳擬合和最差擬合)。現在我只是迭代預定義的次數,每次分配一個大小爲1-N字節的塊,其中N大約是20000.基本上,我分配了一些迭代,然後通過釋放一些分配來切換它塊。在退出之前,我檢查freelist並計算外部碎片。我不確定這是否是要走的路,或者是否有更好的應對措施?
爲每個策略選擇隨機塊大小的一個問題是,如果分配的塊大小不同,則無法真正地比較它們,對嗎?因此,替代方案將執行相同的測試,只是現在我使用相同的分配大小並在測試每個策略時釋放相同的塊。
希望這不是混亂的:)
如果您的分配器的空閒()合併相鄰的塊,則碎片的數量將等於freelist(加號或減號) – wildplasser
@wildplasser上的項目數。感謝您的回覆:)我知道這:)實際上我已經有一個計算外部碎片的工作實現。我更感興趣的是知道用於測試不同策略的應用是否足夠,或者有更好的方法來做到這一點? –
也許最有用的測量方法是計算正在使用的實際頁面的數量,以及有效頁面的數量,以及它們的比例。另一種措施可能是虛擬地址的有效與實際範圍(最大(地址) - 最小(地址)),地址空間也是一種有價值的資源。 – wildplasser