內存的連續分配方式

連續分配方式:是指爲一個用戶程序分配一個連續的內存空間。

連續分配方式可以進一步分爲單一連續分配、固定分區分配、動態分區分配和動態重定位分區分配。

單一連續分配

使用這種內存分配方式,內存空間會被分成 系統區 和 用戶區 兩部分,系統區僅提供給OS使用,系統區外的用戶區提供給用戶使用。
這種存儲管理方式只能用於單用戶、單任務的操作系統中。

固定分區分配

固定分區分配是將內存用戶空間劃分爲若干個大小固定的區域,在每個分區只裝入一個作業,這是最簡單的一種可以運行在多道程序的存儲管理方式。

動態分區分配

1.分區分配中的數據結構
(1) 空閒分區表。 (2) 空閒分區鏈。

2.分區分配算法
1) 首次適應算法(first fit)
以空閒分區鏈爲例,每次從鏈首開始順序查找,直到找到一個大小能滿足要求的空閒分區爲止,,然後按照作業的大小,從該分區劃分出一塊大小合適的內存空間給請求者,剩下的內存空間仍在空閒鏈中。
其缺點是低址部分不斷被劃分,會留下許多難以利用的、很小的空閒分區。

2) 循環首次適應算法(next fit)
該算法是由首次適應算法演變而成的。不再是每次都從鏈首開始查找,而是從上次找到的空閒分區的下一個空閒分區開始查找,直至找到一個能滿足要求的空閒分區。該算法能使內存中的空閒分區分佈得更均勻,從而減少了查找空閒分區時的開銷,但這樣會缺乏大的空閒分區。

3) 最佳適應算法(best fit)
所謂“最佳”是指每次爲作業分配內存時,總是把能滿足要求、又是最小的空閒分區。爲了加快查找速度,該算法要求將所有的空閒分區按其容量從小到大形成一個空閒分區鏈。
因爲每次分配後所切割下來的剩餘部分總是最小的,這樣,在存儲器中會留下許多難以利用的小空閒區。

4) 最壞適應算法(worst fit)
該算法與best fit 相反,它每次將最大的一個空閒分區分割給請求着,其優點是可使剩下的空閒區不至於太小,產生碎片的機率最小,對中、小作業有利,同時最壞適應分配算法查找效率很高。最壞適應算法與前面所述的首次適應算法、循環首次適應算法、最佳適應算法一起,也稱爲順序搜索法。

5) 快速適應算法(quick fit)
該算法又稱爲分類搜索法,是將空閒分區根據其容量大小進行分類,空閒分區的分類是根據進程常用的空間大小進行劃分,如 2 KB、4 KB、8 KB 等,對於其它大小的分區。該算法的優點是查找效率高。另外該算法在進行空閒分區分配時,不會對任何分區產生分割,所以能保留大的分區,滿足對大空間的需求,也不會產生內存碎片。該算法的缺點是在分區歸還主存時算法複雜,系統開銷較大。

動態重定位分區分配

1.動態重定位的引入
在前面動態分區分配中我們可以看到很多情況下一個空閒分區都會被分割,剩下一個較小的分區,有時候甚至遍歷完空閒分區之後還找不到一個合適的空閒分區滿足請求者。

假設現在有這樣一個情況,用戶內存空間中有幾個較小的空閒分區,但是現在有一個作業請求連續的內存空間,這幾個較小的空閒分區任何一個都不能單獨滿足請求空間的大小。 現在一種可行的辦法就是:將內存中的所有作業進行移動,使他們全都相鄰接,這樣可以把原來分散的較小空閒分區連接成一個較大的空閒分區,這樣就達到了作業請求的連續內存空間要求。
這種通過移動內存中的作業位置,將原來分散的小分區拼接成一個大分區的思想就是 “緊湊”。 說的直白一點,動態重定位分區分配就是動態分區分配+緊湊

2.動態重定位的實現
在動態運行時裝入方式中,作業裝入內存後的所有地址都是相對地址,在程序將要執行的時候,纔會將相對地址轉換爲物理地址。爲了不影響指令執行的速度,系統中增設了一個重定位寄存器,用它來存放程序(數據)在內存中的起始地址。
程序真正執行時訪問的地址是 重定位寄存器中的地址+相對地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章