主要是以下幾點,做以了解:
重定位:由於記憶體是被多程序共享的。那麼在在某個程式執行期間,誰也不知道會有其他那些程式駐留在記憶體中。所以,有時會將那些暫不需要的程序換出記憶體。恢復時,如果要恢復到切換之前的同一記憶體位址會非常困難,所以就要將程序進行重定位到記憶體的不同區域。
保護:每個程序都應該收到保護,這是毋庸置疑的,以免被其他程序干擾到自己的正常執行。因此,任何該程序之外的其他程序中的程式都不能未經授權的訪問該程序的記憶體單元。
記憶體保護需求必須由處理器(硬體)來滿足,而非作業系統來滿足。
共享:假如多個程序執行同乙個程式時,允許每個程序訪問該程式的同乙個副本。因此,記憶體管理在不損害基本保護的前提下,必須允許對記憶體共享區域進行受控訪問。
固定分割槽分配:給程序分配一塊不小於指定大小的連續的物理記憶體區域。
記憶體碎片:空閒記憶體不能被使用。
固定分割槽有兩種選擇:
固定分割槽的缺點:
維護的資料結構:
- 所有程序的已分配的分割槽
- 空閒分割槽
分配策略
1)最先分配策略(first fit):分配n個位元組,使用第乙個可用短的空間比n大的空閒塊。
實現:空閒分割槽列表按位址順序排序,分配過程時,搜尋乙個合適的分割槽。釋放分割槽時,檢查是否可與臨近的空閒分割槽合併。
優點:簡單。在高位址有大塊的空閒分割槽。
缺點:外部碎片。分配大塊時較慢。
2)最佳匹配(best fit):查詢n位元組分割槽時,查詢並使用不小於n的最小空閒分割槽。
實現:空閒分割槽列表按照大小排序。分配時,查詢乙個合適的分割槽。釋放時,查詢並合併臨近的空閒分割槽
優點:大部分分配的尺寸較小時,效果好。
可避免大的空閒分割槽被拆分。可減小外部碎片的大小。
缺點:外部碎片。釋放分割槽較慢。容易產生很多無用的小碎片。
3)最差分配(worst fit):分配n個位元組,使用尺寸不小於n的最大空閒分割槽。
實現:空閒分割槽列表按從大到小排序。分配時,選最大的分割槽。釋放時,檢查是否可與臨近的空閒分割槽合併,進行可能的合併並調整空閒分割槽列表順序。
優點:中等大小的分配較多時,效果最好。避免出現太多的小碎片。
缺點:釋放分割槽較慢。產生外部碎片。容易破環大的空閒分割槽,後續難以分配較大分割槽。
當分割槽已經分配給程序時,那些未被分配分割槽的程序來了,這時已經沒有分割槽了或者只剩下了小的碎片時,就需要碎片整理。
碎片整理:通過調整程序占用的分割槽位置來減少或分割槽碎片。
1)緊湊:通過移動分配給程序的記憶體分割槽,以合併外部碎片。
條件:所有的應用程式可動態重定位。
但是有兩個問題需要考慮:乙個是開銷問題。乙個是什麼時候移動。
2)分割槽對換:通過搶占並**處於等待狀態程序的分割槽,以增大可用記憶體空間。
夥伴系統中可用記憶體塊的大小是2^k個字,l<=k<=u.
其中:2^l表示分配的最小塊的尺寸。
2^u表示分配的最大塊的尺寸。
分配過程:
由大到小在空閒塊陣列中找最小的可用分割槽塊。
如空閒塊過大,對可用分割槽塊進行二等分,直到得到合適的可用分割槽塊。
夥伴系統是較為合理的折中方案,他克服了固定分割槽和可變分割槽方案的缺陷。但在當前的作業系統中,分段和分頁機制的虛存還是更為先進。
作業系統記憶體管理
作業系統記憶體管理 一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於32位程序來說,這個位址空間為4g,因此程序中的位址可以為0x00000000至0xffffffff之間的任何乙個值。其中4g空間中的低區的2g空間留給程序使用,而高區的2g空間則留給系統使用。在windows200...
作業系統記憶體管理
作業系統記憶體管理一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於 32位程序來說,這個位址空間為 4g,因此程序中的位址可以為 0x00000000 至0xffffffff 之間的任何乙個值。其中 4g空間中的低區的 2g空間留給程序使用,而高區的 2g空間則留給系統使用。在win...
作業系統記憶體管理
記憶體,毫無疑問是最重要的資源,顯然,作業系統對記憶體的管理我必須清楚。這裡主要介紹了分頁管理和分段管理。1.頁式管理 a.頁式管理的基本思想 打破儲存分配的連續性 將邏輯上連續的使用者程式對映到離散的記憶體塊 使用者程式與記憶體空間被劃分為若干等長的區域 邏輯頁 與 物理頁 使用者程式的劃分由系統...