最有適應演算法
A. 最佳適應演算法的解釋
不是最好,而是最優,適合的才是最好的!
B. 【高分懸賞】用C/C++語言設計一個適應演算法(最先、最佳或最壞適應演算法)
考的是內存的動態劃分區域內容,很好寫啊
1.可以用數字來模擬內存區域劃分情況,比如建一個100大小的數組(結構為struc (區號,值),值為0表示空閑,值為1表示佔用,初始化幾個已確定佔有的分區,分區一,1-5 佔有,6-12 空閑,。。。。。。。,並建立空閑區域表,很簡單,從頭到尾對數組掃描下就知道了
2.最先適應:從內存開始地址找到第一個大於請求大小的連續空閑區域,如請求5個空間,那就在剛開始6-12空閑處建立分區二 ,6-11 ,佔用
3.最佳適應:指所有空閑塊最適應請求大小的那塊,min(空閑塊大小-請求大小)
4.最壞:指適應請求大小,且最大的那塊空閑區域
C. 首次適應演算法是什麼
First-fit (FF)是一種用於裝箱的在線演算法。
它的輸入是一個不同大小的項目列表。它的輸出是一個包裝——將物品分成固定容量的箱子,這樣每個箱子中物品的大小之和最多就是容量。理想情況下,我們希望使用盡可能少的 bin,但是最小化 bin 的數量是一個 NP-hard 問題。首次擬合演算法使用以下啟發式:
它保留一個打開的垃圾箱列表,最初是空的。
當一件物品到達時,它會找到該物品可以放入 的第一個箱子(如果有的話)。
如果找到這樣的箱子,則將新物品放入其中。
否則,將打開一個新的箱子並將即將到來的物品放入其中。
優缺點
1、優點
處理速度快。由於處理器將最近的可用內存分區分配給作業,因此執行速度非常快。
2、缺點
浪費大量內存。處理器忽略分配給作業的分區大小與作業大小相比是否非常大。它只是分配內存。結果,浪費了大量內存,許多作業可能無法在內存中獲得空間,並且必須等待另一個作業完成。
D. 最先適應,下次適應,最佳和私營,最壞適應四種分配演算法中,哪一種更適合固定分區存儲管理系統為什麼
固定分區存儲管理系統適合採用最佳適應演算法。因為,此演算法所產生的內碎片最少。
這里還要介紹一下下次適應演算法。下次適應(next fit)演算法也稱「臨近適應」演算法,其工作方式和最先適應演算法相同(最先適應也稱首次適應演算法。它總是最先找到的、滿足存儲要求的那個空閑分區作為分配對象。),不同的是每次找到合適的空閑的分區時就記住它的位置,以便下次就從該位置開始往下查找,而不是每次都像最先適應演算法那樣從頭開始查找。但是這種演算法的總體結果通常要比最先適應演算法差。由於它經常會在內存的末尾分配存儲分區,使位於存儲空間末尾的最大分區被撕裂成小的外部碎片,因此必須經常不斷地進行存儲緊湊。在該演算法中應採取循環查找方式,即最後上個空閑區的大小仍不能滿足要求時,應再從第一個空閑區開始查找,故又稱為循環造就演算法
E. 首次適應演算法,最佳適應演算法和最壞適應演算法怎麼分配資源
首次適應演算法要求空閑分區鏈以空閑分區開始地址遞增的次序鏈接,從鏈首開始順序查找,直至找到一個能滿足程序大小要求的空閑分區為止
最佳適應演算法技能滿足要求,又是最小的空閑分區
最差適應演算法總是找到一個滿足程序長度要求的最大空閑分區
F. 最佳適應演算法的介紹
最佳適應演算法是從全部空閑區中找出能滿足作業要求的、且大小最小的空閑分區的一種計算方法,這種方法能使碎片盡量小。
G. 最佳適應演算法產生什麼碎片
最佳適應演算法產生的碎片是:外部碎片,因為最佳適應演算法雖然稱為「最佳」,但是性能通常很差,所以每次最佳的分配會留下很小的難以利用的內存塊,它會產生最多的外部碎片。
並且最壞適應演算法與最佳適應演算法相反,選擇最大的可用塊,這看起來最不容易產生碎片,但是卻把最大的連續內存劃分開,會很快導致沒有可用的大的內存塊,因此性能也非常差。
所以首次適應演算法可能比最佳適應法效果好,而它們兩者一定比最大適應法效果好。另外注意,在演算法實現時,分配操作中最佳適應法和最大適應法需要對可用塊進行排序或遍歷查找,而首次適應法和鄰近適應法只需要簡單查找。
回收操作中,當回收的塊與原來的空閑塊相鄰時,需要將這些塊合並。在演算法實現時,使用數組或鏈表進行管理。除了內存的利用率,這里的演算法開銷也是操作系統設計需要考慮的一個因素。
最佳適應演算法中動態分區的分配策略是:
在進程裝入或換入主存時,如果內存中有多個足夠大的空閑塊,操作系統必須確定分配哪個內存塊給進程使用,這就是動態分區的分配策略。
1、首次適應:地址遞增,順序查找,第一個能滿足的即分配給進程。
2、最佳適應:容量遞增,找到第一個能滿足要求的空閑分區。
3、最壞適應:容量遞減,找到第一個能滿足要求的分區。
4、鄰近適應:循環首次適應演算法。
H. 什麼是最優適應分配演算法
分區分配演算法(Partitioning Placement Algorithm) ,共有3種。分別為最佳適應演算法、首次適應演算法、循環首次適應演算法。
1、最佳適應演算法(Best Fit):
它從全部空閑區中找出能滿足作業要求的、且大小最小的空閑分區,這種方法能使碎片盡量小。為適應此演算法,空閑分區表(空閑區鏈)中的空閑分區要按大小從小到大進行排序,自表頭開始查找到第一個滿足要求的自由分區分配。該演算法保留大的空閑區,但造成許多小的空閑區。
2、首次適應演算法(First Fit):
從空閑分區表的第一個表目起查找該表,把最先能夠滿足要求的空閑區分配給作業,這種方法目的在於減少查找時間。為適應這種演算法,空閑分區表(空閑區鏈)中的空閑分區要按地址由低到高進行排序。該演算法優先使用低址部分空閑區,在低址空間造成許多小的空閑區,在高地址空間保留大的空閑區。
3、循環首次適應演算法(Next Fit):
該演算法是首次適應演算法的變種。在分配內存空間時,不再每次從表頭(鏈首)開始查找,而是從上次找到空閑區的下一個空閑開始查找,直到找到第一個能滿足要求的的空閑區為止,並從中劃出一塊與請求大小相等的內存空間分配給作業。該演算法能使內存中的空閑區分布得較均勻。
I. 什麼是最先適應分配演算法
最想適應演算法和首次適應演算法是一個意思
就是每次分配內存在內存空閑分區說明表(按地址從高到低排列)
找到一個能滿足大小的內存分配