操作系统(三十六)动态分区分配算法
3.5 動態(tài)分區(qū)分配算法
? 上節(jié)講述了連續(xù)分區(qū)分配方式中有動態(tài)分區(qū)分配的方式,如果在動態(tài)分區(qū)分配算法中有許多空閑分區(qū)都滿足需求的時候,那該如何分配空間呢,今天來介紹四種分配方法解決這個問題。
目錄
3.5 動態(tài)分區(qū)分配算法
3.5.1 首次適應(yīng)算法
3.5.2 最佳適應(yīng)算法
3.5.3 最壞適應(yīng)算法
3.5.4 鄰近適應(yīng)算法
3.5.5 四種方法比較
?
3.5.1 首次適應(yīng)算法
? 算法思想:每次都從低地址開始查找,找到第一個能滿足大小的空閑分區(qū),優(yōu)先使用低地址空間。 ? 如何實(shí)現(xiàn):空閑分區(qū)以地址遞增的次序排列。每次分配內(nèi)存時順序查找空閑分區(qū)鏈(或空閑分區(qū)表),找到大小能滿足要求的第一個空閑分區(qū)。3.5.2 最佳適應(yīng)算法
??算法思想:由于動態(tài)分區(qū)分配是一種連續(xù)分配方式,為各進(jìn)程分配的空間必須是連續(xù)的一整片區(qū)域。因此為了保證當(dāng)“大進(jìn)程”到來時能有連續(xù)的大片空間,可以盡可能多地留下大片的空閑區(qū),即,優(yōu)先使用更小的空閑區(qū)。
? 如何實(shí)現(xiàn):空閑分區(qū)按容量遞增次序鏈接。每次分配內(nèi)存時順序查找空閑分區(qū)鏈(或空閑分區(qū)表),找到大小能滿足要求的第一個空閑分區(qū)。
??缺點(diǎn):每次都選最小的分區(qū)進(jìn)行分配,會留下越來越多的、很小的、難以利用的內(nèi)存塊。因此這種方法會產(chǎn)生很多的外部碎片。
3.5.3 最壞適應(yīng)算法
? 最壞適應(yīng)算法又稱最大適應(yīng)算法。
? 算法思想:為了解決最佳適應(yīng)算法的問題---即留下太多難以利用的小碎片,可以在每次分配時優(yōu)先使用最大的連續(xù)空閑區(qū),這樣分配后剩余的空閑區(qū)就不會太小,更方便使用。 如何實(shí)現(xiàn):空閑分區(qū)按容量遞減次序鏈接。每次分配內(nèi)存時順序查找空閑分區(qū)鏈(或空閑分區(qū)表),找到大小能滿足要求的第一個空閑分區(qū)。 缺點(diǎn):每次都使用最大的連續(xù)空閑區(qū)會導(dǎo)致大空閑區(qū)被很快用光,后續(xù)再有大進(jìn)程到來時就不會再有可用的大分區(qū)了。3.5.4 鄰近適應(yīng)算法
??算法思想:首次適應(yīng)算法每次都從鏈頭開始查找的。這可能會導(dǎo)致低地址部分出現(xiàn)很多小的空閑分區(qū),而每次分配查找時,都要經(jīng)過這些分區(qū),因此也增加了查找的開銷。如果每次都從上次查找結(jié)束的位置開始檢索,就能解決上述問題。
? 如何實(shí)現(xiàn):空閑分區(qū)以地址遞增的順序排列(可排成一個循環(huán)鏈表)。每次分配內(nèi)存時從上次查找結(jié)束的位置開始查找空閑分區(qū)鏈(或空閑分區(qū)表),找到大小能滿足要求的第一個空閑分區(qū)。
3.5.5 四種方法比較
| 算法 | 算法思想 | 分區(qū)排列順序 | 優(yōu)點(diǎn) | 缺點(diǎn) |
| 首次適應(yīng) | 從頭到尾找到一個合適的分區(qū) | 地址遞增排列 | 綜合看性能最好。算法開銷小,回收分區(qū)后一般不需要對空閑分區(qū)隊(duì)列重新排序 | ? |
| 最佳適應(yīng) | 優(yōu)先使用更小的分區(qū),以保留更多大分區(qū) | 容量遞增排列 | 會有更多的大分區(qū)被保留下來,更能滿足大進(jìn)程需求 | 會產(chǎn)生很多太小的、難以利用的碎片;算法開銷大,回收分區(qū)后可能需要對空閑分區(qū)隊(duì)列重新排序 |
| 最壞適應(yīng) | 優(yōu)先使用更大的分區(qū),以防止產(chǎn)生太小的不可用的碎片 | 容量遞減排列 | 可以減少難以利用的小碎片 | 大分區(qū)容易被用完,不利于大進(jìn)程;算法開銷大 |
| 臨近適應(yīng) | 由首次適應(yīng)演變而來,每次從上次查找結(jié)束位置開始查找 | 地址遞增排成循環(huán)鏈表 | 不用每次都從低地址的小分區(qū)開始檢索。算法開銷小 | 會使高地址的大分區(qū)也被用完 |
總結(jié)
以上是生活随笔為你收集整理的操作系统(三十六)动态分区分配算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统(三十五)连续分配管理方式
- 下一篇: 操作系统(三十七)基本分页存储的概念