动态分区分配算法(1、首次适应算法 2、最佳适应算法 3、最坏适应算法 4、邻近适应算法)
文章目錄
- 前言
- 知識總覽
- 1、首次適應算法
- 2、最佳適應算法
- 3、最壞適應算法
- 4、鄰近適應算法
- 知識回顧與重要考點
前言
此篇文章是我在B站學習時所做的筆記,大部分圖片都是課件老師的PPT,方便復習用。此篇文章僅供學習參考。
提示:以下是本篇文章正文內容
知識總覽
動態分區分配算法:在動態分區分配方式中,當很多個空閑分區都能滿足需求時,應該選擇哪個分區進行分配?
1、首次適應算法
算法思想:每次都從低地址開始查找,找到第一個能滿足大小的空閑分區。
如何實現:空閑分區以地址遞增的次序排列。每次分配內存時順序查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區。
考點!!!
首次適應算法 是最有可能使得 高地址空間成為大的空閑區 的分配算法
2、最佳適應算法
算法思想:由于動態分區分配是一種連續分配方式,為各進程分配的空間必須是連續的一整片域。因此為了保證當“大進程”到來時能有連續的大片空間,可以盡可能多地留下大片的空閑區,即,優先使用更爾的空閑區。
如何實現:
空閑分區按容量遞增次序鏈接。每次分配內存時順序查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區。
缺點:每次都選最小的分區進行分配,會留下越來越多的、很小的、難以利用的內存塊。因此這種方法會產生很多的外部碎片。
3、最壞適應算法
又稱最大適應算法(Largest Fit)
算法思想:為了解決最佳適應算法的問題――即留下太多難以利用的小碎片,可以在每次分配時優先使用最大的連續空閑區,這樣分配后剩余的空閑區就不會太小,更方便使用。
如何實現:空閑分區按容量遞減次序鏈接。每次分配內存時順序查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區。
缺點:每次都選最大的分區進行分配,雖然可以讓分配后留下的空閑區更大,更可用,但是這種方式會導致較大的連續空閑區被迅速用完。如果之后有“大進程”到達,就沒有內存分區可用了。
4、鄰近適應算法
算法思想:首次適應算法每次都從鏈頭開始查找的。這可能會導致低地址部分出現很多小的空閑分區,而每次分配查找時,都要經過這些分區,因此也增加了查找的開銷。如果每次都從上次查找結束的位置開始檢索,就能解決上述問題。
如何實現:空閑分區以地址遞增的順序排列(可排成一個循環鏈表)。每次分配內存時從上次查找結束的位置開始查找空閑分區鏈(或空閑分區表),找到大小能滿足要求的第一個空閑分區
首次適應算法,會導致低地址部分留下一些比較小的碎片,但是我們每一次開始檢索,都需要從低地址部分的這些小碎片開始往后檢索,所以這就會導致首次適應算法在查找的時候,可能會多花一些時間。不過這并不意味著鄰近適應算法就比首次適應算法優秀很多。
- 首次適應算法每次都要從頭查找,每次都需要檢索低地址的小分區。但是這種規則也決定了當低地址部分有更小的分區可以滿足需求時,會更有可能用到低地址部分的小分區,也會更有可能把高地址部分的大分區保留下來(最佳適應算法的優點)
- 鄰近適應算法的規則可能會導致無論低地址、高地址部分的空閑分區都有相同的概率被使用,也就導致了高地址部分的大分區更可能被使用,劃分為小分區,最后導致無大分區可用(最大適應算法的缺點)
知識回顧與重要考點
總結
以上是生活随笔為你收集整理的动态分区分配算法(1、首次适应算法 2、最佳适应算法 3、最坏适应算法 4、邻近适应算法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cesium 高程数据使用
- 下一篇: java-pdf转word