連續記憶體分配

2021-08-21 17:43:38 字數 684 閱讀 1962

連續記憶體分配:給程序分配一塊不小於指定大小的連續的物理記憶體區域

記憶體碎片:空間記憶體不能被利用

外部碎片:分配單元之間的未被使用記憶體

內部碎片:分配單元內部的未被使用記憶體,取決於分配單元大小是否要取整

當程式被載入執行時,分配乙個程序指定大小可變的分割槽(塊、記憶體塊),分割槽的位址是連續的

作業系統需要維護的資料結構:

1 所有程序的已分配分割槽

2 空閒分割槽(empty-blocks)

動態分割槽分配策略:

1 首次適應次略

缺點:容易產生外部碎片、分配大塊是較慢

2 最佳適應策略

思路:分配n個位元組,查詢並使用不小於n的最小空閒塊

思路:空閒分割槽列表公升序排序,釋放時,查詢並且合併臨近的空閒分割槽(如果找到)

優點:大部分分配的尺寸較小是、可避免大的空閒分割槽被拆分、可減小外部碎片的大小、相對簡單

缺點:會有外碎片、釋放分割槽較複雜、容易產生無法利用的小碎片

3 最差適應策略

思路:分配n個位元組,使用尺寸不小於n的最大空閒分割槽,空閒分割槽列表按降序排序,分配時,選最大的分割槽,釋放時,檢查是否可與臨近的空閒分割槽合併,進行可能的合併並調整空閒分割槽列表順序。

優點:中等大小的分配較多時、可以避免出現太多的碎片

缺點:釋放分割槽較慢、會產生外部碎片、容易破壞大的空閒碎片,因此後續難以分配大的分割槽。

連續記憶體分配

實體地址空間 載入到暫存器中的位址,記憶體單元真正的位址,其位數由位址匯流排數決定,32位則表示32條位址匯流排,編號從0一直到可用記憶體的最大值。cpu執行時程式可看到的位址,由內部和程式設計時使用,比如c語言中讀取乙個指標變數本身的值,讀到的就是邏輯位址,它是相對於當前資料段的位址也就是偏移位址...

物理記憶體連續記憶體分配

記憶體管理的要求 共享 訪問相同記憶體 記憶體管理方式 重定位,relocation,段位址 偏移 分段,segmentation,資料,堆疊分成三塊,每段連續 分頁,paging,記憶體分為最基本的單位,房子的磚塊 虛擬儲存 virtual memory,linux採用按需頁式虛擬儲存 邏輯位址空...

OS 非連續記憶體分配

利用調整程序占用的分割槽位置,來減少或避免分割槽碎片。2.分割槽對換 通過搶占並 處於等待狀態的程序分割槽,增大可用記憶體空間,將等待狀態的程序掛起。在連續記憶體分配的過程中,不可避免的要產生記憶體碎片,從而使得連續記憶體分配難以實現,並且記憶體利用效率較低。從而需要對記憶體碎片進行更好的利用 非連...