動態(tài)分區(qū)分配
所謂動態(tài)分區(qū)分配,就是指內(nèi)存在初始時不會劃分區(qū)域,而是會在進程裝入時,根據(jù)所要裝入的進程大小動態(tài)地對內(nèi)存空間進行劃分,以提高內(nèi)存空間利用率,降低碎片的大小
動態(tài)分區(qū)分配算法有以下四種:
1. 首次適應(yīng)算法(First Fit)
空閑分區(qū)以地址遞增的次序鏈接。分配內(nèi)存時順序查找,找到大小滿足要求的第一個空閑分區(qū)就進行分配。
(每次從低地址開始查找,找到第一個能滿足大小的空閑分區(qū),順序查找空閑分區(qū)鏈或者空閑分區(qū)表)
2. 鄰近適應(yīng)算法(Next Fit)
又稱循環(huán)首次適應(yīng)法,由首次適應(yīng)法演變而成,不同之處是分配內(nèi)存時從上一次查找結(jié)束的位置開始繼續(xù)查找。
3. 最佳適應(yīng)算法(Best Fit)
空閑分區(qū)按容量遞增形成分區(qū)鏈,找到第一個能滿足要求的空閑分區(qū)就進行分配。
(按照容量遞增從小到大的順序查找,每次分配內(nèi)存按前面順序查找,找到第一個合適的,會留下很多外部碎片)
4. 最壞適應(yīng)算法(Next Fit)
又稱最大適應(yīng)算法(Largest Fit),空閑分區(qū)以容量遞減的次序鏈接,找到第一個能滿足要求的空閑分區(qū)(也就是最大的分區(qū))就進行分配。
(按容量從大到小順序查找)
總結(jié):
習(xí)題:
題目:給定五個分別為100 KB,500 KB,200 KB,300 KB和600 KB的內(nèi)存分區(qū),分別用the first-fit, best-fit, and worst-fit處理以下進程請求 212 KB,417 KB,112 KB和426 KB。
first-fit(首次適應(yīng)算法)
該算法從空閑分區(qū)鏈首開始查找,直至找到一個能滿足其大小要求的空閑分區(qū)為止。每次都是從頭開始。
步驟如下:
212kb,此時進程選擇500kb,剩下288kb
417kb,此時進程選擇600kb
112kb,此時進程選擇288kb
426kb,此進程無分配
the best-fit(最佳適應(yīng)算法)
將所有的空閑分區(qū)按其從小到大排序,有新作業(yè)的時候,按從小查找,直到找一個可以滿足此作業(yè)的分區(qū)大小。
100kb,200kb,300kb,500kb,600kb
步驟如下:
212kb,此時進程選擇300kb
417kb,此時進程選擇500kb
112kb,此時進程選擇200kb
426kb,此時進程選擇500kb
the worst-fit(最壞適應(yīng)算法)
將所有的空閑分區(qū)按其從大到小排序,總是挑選一個最大的空閑分區(qū)分割給作業(yè)使用。
600kb,500kb,300kb,200kb,100kb
步驟如下:
212kb,此時進程選擇600kb,剩下388kb
417kb,此時進程選擇500kb
112kb,此時進程選擇388kb
426kb,此進程無分配文章來源:http://www.zghlxwxcb.cn/news/detail-502699.html
結(jié)果如圖所示:文章來源地址http://www.zghlxwxcb.cn/news/detail-502699.html
到了這里,關(guān)于內(nèi)存動態(tài)分區(qū)分配算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!