連續記憶體分配:給程序分配一塊不小於指定大小的連續的物理記憶體區域
記憶體碎片:空間記憶體不能被利用
外部碎片:分配單元之間的未被使用記憶體
內部碎片:分配單元內部的未被使用記憶體,取決於分配單元大小是否要取整
當程式被載入執行時,分配乙個程序指定大小可變的分割槽(塊、記憶體塊),分割槽的位址是連續的
作業系統需要維護的資料結構:
1 所有程序的已分配分割槽
2 空閒分割槽(empty-blocks)
動態分割槽分配策略:
1 首次適應次略
缺點:容易產生外部碎片、分配大塊是較慢
2 最佳適應策略
思路:分配n個位元組,查詢並使用不小於n的最小空閒塊
思路:空閒分割槽列表公升序排序,釋放時,查詢並且合併臨近的空閒分割槽(如果找到)
優點:大部分分配的尺寸較小是、可避免大的空閒分割槽被拆分、可減小外部碎片的大小、相對簡單
缺點:會有外碎片、釋放分割槽較複雜、容易產生無法利用的小碎片
3 最差適應策略
思路:分配n個位元組,使用尺寸不小於n的最大空閒分割槽,空閒分割槽列表按降序排序,分配時,選最大的分割槽,釋放時,檢查是否可與臨近的空閒分割槽合併,進行可能的合併並調整空閒分割槽列表順序。
優點:中等大小的分配較多時、可以避免出現太多的碎片
缺點:釋放分割槽較慢、會產生外部碎片、容易破壞大的空閒碎片,因此後續難以分配大的分割槽。
連續記憶體分配
實體地址空間 載入到暫存器中的位址,記憶體單元真正的位址,其位數由位址匯流排數決定,32位則表示32條位址匯流排,編號從0一直到可用記憶體的最大值。cpu執行時程式可看到的位址,由內部和程式設計時使用,比如c語言中讀取乙個指標變數本身的值,讀到的就是邏輯位址,它是相對於當前資料段的位址也就是偏移位址...
物理記憶體連續記憶體分配
記憶體管理的要求 共享 訪問相同記憶體 記憶體管理方式 重定位,relocation,段位址 偏移 分段,segmentation,資料,堆疊分成三塊,每段連續 分頁,paging,記憶體分為最基本的單位,房子的磚塊 虛擬儲存 virtual memory,linux採用按需頁式虛擬儲存 邏輯位址空...
OS 非連續記憶體分配
利用調整程序占用的分割槽位置,來減少或避免分割槽碎片。2.分割槽對換 通過搶占並 處於等待狀態的程序分割槽,增大可用記憶體空間,將等待狀態的程序掛起。在連續記憶體分配的過程中,不可避免的要產生記憶體碎片,從而使得連續記憶體分配難以實現,並且記憶體利用效率較低。從而需要對記憶體碎片進行更好的利用 非連...