国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

可變分區(qū)存儲(chǔ)管理方式的內(nèi)存分配回收

2014-07-03 05:22宋新偉
電腦知識(shí)與技術(shù) 2014年12期
關(guān)鍵詞:存儲(chǔ)管理回收

宋新偉

摘要:該文首先介紹了存儲(chǔ)管理中可變分區(qū)的管理方式。通過實(shí)驗(yàn)編寫程序模擬實(shí)現(xiàn)了可變分區(qū)存儲(chǔ)管理方式的內(nèi)存分配和回收。

關(guān)鍵詞:可變分區(qū);存儲(chǔ)管理;內(nèi)存分配;回收

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)12-2880-03

1 存儲(chǔ)管理中可變分區(qū)的管理方式

可變分區(qū)管理方式將內(nèi)存除操作系統(tǒng)占用區(qū)域外的空間看做一個(gè)大的空閑區(qū)。當(dāng)作業(yè)要求裝入內(nèi)存時(shí),根據(jù)作業(yè)需要內(nèi)存空間的大小 查詢內(nèi)存中的各個(gè)空閑區(qū),當(dāng)從內(nèi)存空間中找到一個(gè)大于或等于該作業(yè)大小的內(nèi)存空閑區(qū)時(shí),選擇其中一個(gè)空閑區(qū),按作業(yè)需求量劃出一個(gè)分區(qū)裝人該作業(yè),作業(yè)執(zhí)行完后,其所占的內(nèi)存分區(qū)被收回,成為一個(gè)空閑區(qū)。如果該空閑區(qū)的相鄰分區(qū)也是空閑區(qū),則需要將相鄰空閑區(qū)合并成一個(gè)空閑區(qū)。

2 本實(shí)驗(yàn)的具體實(shí)現(xiàn)

本次實(shí)驗(yàn)的具體內(nèi)容包括:1)建立相關(guān)的數(shù)據(jù)結(jié)構(gòu),作業(yè)控制塊、已分配分區(qū)及未分配分區(qū);2)實(shí)現(xiàn)一個(gè)分區(qū)分配算法,如最先適應(yīng)分配算法、最壞或者最優(yōu)適應(yīng)分配算法;3)實(shí)現(xiàn)一個(gè)分區(qū)回收算法;4)給定一批作業(yè)/進(jìn)程,選擇一個(gè)分配或者回收算法,實(shí)現(xiàn)分區(qū)存儲(chǔ)模擬管理;5)設(shè)計(jì)界面并將所有的模塊整合到一起,形成一個(gè)完整的系統(tǒng)。

2.1 設(shè)計(jì)所采用的算法

采用最壞適應(yīng)算法,每次為作業(yè)分配內(nèi)存時(shí),總是把最大的空閑分區(qū)和所需要的程序塊進(jìn)行比較,如果該塊的大小大于或者等于所需要的內(nèi)存大小,則從該塊中分配出一塊內(nèi)存給程序。

2.2 內(nèi)存分配與回收所使用的結(jié)構(gòu)體

為便于對(duì)內(nèi)存的分配和回收,建立兩張表記錄內(nèi)存的使用情況。一張為記錄作業(yè)占用分區(qū)的“內(nèi)存分配表”,內(nèi)容包括分區(qū)起始地址、長(zhǎng)度、作業(yè)名/標(biāo)志(為0時(shí)作為標(biāo)志位表示空欄目);一張為記錄空閑區(qū)的“空閑分區(qū)表”,內(nèi)容包括分區(qū)起始地址、長(zhǎng)度、標(biāo)志(0表空欄目,1表未分配)。兩張表都采用順序表形式。

2.3 關(guān)于分配留下的內(nèi)存小碎片問題

當(dāng)要裝入一個(gè)作業(yè)時(shí),從“空閑分區(qū)表”中查找標(biāo)志為“1”(未分配)且滿足作業(yè)所需內(nèi)存大小的最小空閑區(qū),若空閑區(qū)的大小與作業(yè)所需大小的差值小于或等于minsize,把該分區(qū)全部分配給作業(yè),并把該空閑區(qū)的標(biāo)志改為“0”(空欄目)。同時(shí),在已分配區(qū)表中找到一個(gè)標(biāo)志為“0”的欄目登記新裝人作業(yè)所占用分區(qū)的起始地址,長(zhǎng)度和作業(yè)名。若空閑區(qū)的大小與作業(yè)所需大小的差值大于minsize。則把空閑區(qū)分成兩部分,一部分用來裝入作業(yè),另外一部分仍為空閑區(qū)。這時(shí)只要修改原空閑區(qū)的長(zhǎng)度,且把新裝人的作業(yè)登記到已分配區(qū)表中。

2.4 內(nèi)存的回收

在可變分區(qū)方式下回收內(nèi)存空間時(shí),先檢查是否有與歸還區(qū)相鄰的空閑區(qū)(上鄰空閑區(qū),下鄰空閑區(qū))。若有,則將它們合件成一個(gè)空閑區(qū)。程序?qū)崿F(xiàn)時(shí),首先將要釋放的作業(yè)在“內(nèi)存分配表”中的記錄項(xiàng)的標(biāo)志改為“0”(空欄目),然后檢查“空閑區(qū)表”中標(biāo)志為‘1(未分配)的欄目,查找是否有相鄰的空閑區(qū),若有,將之合并,并修改空閑區(qū)的起始地址和長(zhǎng)度。

3 數(shù)據(jù)結(jié)構(gòu)

1)塊類結(jié)構(gòu)

public class Kuai{

private int startAddr; //塊的在內(nèi)存中的開始位置

private int size; //塊的大小

private int state=0; //塊的狀態(tài),1表示已分配,0表示未分配

private int runprogram; } //表示該快所運(yùn)行的程序編號(hào)

2)分區(qū)表結(jié)構(gòu)

Public class KuaiBiao()//塊表

{private int memorysize=1000; //系統(tǒng)的內(nèi)存大小,為1000

private List KuaiList=new ArrayList(); //分區(qū)表

public KuaiBiao()

{ Kuai kuai=new Kuai();

kuai.setRunprogram(0);

kuai.setSize(1000);

kuai.setStartAddr(0);

this.KuaiList.add(kuai);}}

3)表模型結(jié)構(gòu)

Public class TableModel{

Vector cols=null; //初始化表模型的列名

Vector rowdata=null; }//某行某列的數(shù)據(jù)

4 程序算法

本程序的功能模塊主要為內(nèi)存分配和內(nèi)存回收。首頁是一個(gè)顯示界面,從list 中獲取數(shù)據(jù),將數(shù)據(jù)加入JTable中,顯示出來。首頁有兩個(gè)功能按鈕即:內(nèi)存分配按鈕和內(nèi)存回收按鈕。點(diǎn)擊每個(gè)按鈕執(zhí)行相應(yīng)的功能模塊。當(dāng)點(diǎn)擊內(nèi)存分配按鈕時(shí),會(huì)彈出一個(gè)對(duì)話框,輸入待分配內(nèi)存的大小和指定程序編號(hào),如果輸入的內(nèi)存大小超出最大未分配內(nèi)存的大小,程序會(huì)提示錯(cuò)誤信息。如果想回收某個(gè)內(nèi)存塊,選定該行,點(diǎn)擊回收按鈕,執(zhí)行相應(yīng)的功能,更新JTable表格,完成相應(yīng)功能的顯示。

4.1 內(nèi)存分配模塊算法

內(nèi)存的分配采用最壞適應(yīng)算法(Worst fit)。最壞適應(yīng)分配算法要掃描整個(gè)空閑分區(qū)分割給作業(yè)使用。該算法要求將所有的空閑分區(qū)按其容量以從大到小的順序形成一空閑分區(qū)鏈,查找時(shí)只要看第一個(gè)分區(qū)是否滿足作業(yè)要求。在系統(tǒng)分配內(nèi)存的時(shí)候,每次調(diào)用分配算法,只需要傳遞一個(gè)待分配內(nèi)存的大小和所要運(yùn)行的程序編號(hào),然后通過Util類中的FenPei(int size,int prograid)方法從內(nèi)存表中分配一塊內(nèi)存。FenPei(int size,int prograid)方法每次都會(huì)將塊表中的塊按size大小從大到小排序,遍歷塊表判斷該塊的狀態(tài)是否為空閑,如果該塊狀態(tài)為空閑,則從 該塊中分配出一塊內(nèi)存作為程序運(yùn)行所需要的內(nèi)存。如果該塊的狀態(tài)不為空閑,則繼續(xù)遍歷塊表(KuaiBiao)中的下一個(gè)塊內(nèi)存。

4.2 內(nèi)存回收模塊算法

選擇回收的內(nèi)存塊,當(dāng)點(diǎn)擊回收內(nèi)存時(shí),調(diào)用public List setFree(int startAddr,List le)方法,首先根據(jù)回收區(qū)的地址找到此內(nèi)存塊在List集合中的索引位置,然后判斷點(diǎn)擊的待回收的內(nèi)存塊的狀態(tài),若為0,則提示已是空閑狀態(tài);若為1,則調(diào)用方法Judge.judgement(ku, i) , 此方法根據(jù)索引位置和內(nèi)存塊的List集合返回要操作的方法,可以細(xì)化成9種情況來判斷:1)待回收的內(nèi)存塊沒有上塊也沒有下塊內(nèi)存,則回收后地址為本塊地址,大小為本塊內(nèi)存的大??;2)待回收的內(nèi)存塊沒有上塊,有下塊內(nèi)存,且下塊內(nèi)存為空閑狀態(tài),則回收后地址為本塊地址,大小為本塊大小加下塊內(nèi)存大?。?)待回收的內(nèi)存塊沒有上塊,有下塊內(nèi)存,且下塊內(nèi)存為占用狀態(tài),則回收后地址為本塊地址,大小為本塊大??;4)待回收的內(nèi)存塊有上塊內(nèi)存,且上塊空閑,沒有下塊,則回收后地址為上塊地址,大小為本塊大小加下塊大??;5)待回收的內(nèi)存塊有上塊內(nèi)存,上塊內(nèi)存占用,沒有下塊,則回收后地址為本塊地址,大小為本塊大??;6)待回收的內(nèi)存塊上塊和下塊都是空閑,則回收后地址為本塊地址,大小為本塊大小加上塊和下塊大?。?)待回收的內(nèi)存塊的上塊和下塊都是占用狀態(tài),則回收后地址為本塊地址,大小為本塊大?。?)待回收的內(nèi)存塊的上塊占用,下塊空閑,則回收后地址為本塊地址,大小為本塊大小加下塊大??;9)待回收的內(nèi)存塊的上塊空閑,下塊占用,回收后地址為上塊地址,大小為本塊大小加上塊大小。之后根據(jù)返回的操作方法進(jìn)行對(duì)內(nèi)存塊的處理,然后返回一個(gè)按內(nèi)存地址排序的內(nèi)存塊集合。

5 內(nèi)存分配回收實(shí)現(xiàn)部分截圖

1)系統(tǒng)內(nèi)存未分配(如圖1所示)。

6 結(jié)束語

本文通過編寫和調(diào)試存儲(chǔ)管理的模擬程序,加深了對(duì)存儲(chǔ)管理方案的理解,熟悉了對(duì)可變分區(qū)存儲(chǔ)管理的內(nèi)存分配和回收。

參考文獻(xiàn):

[1] 戴銀飛,趙耀紅.可變分區(qū)存儲(chǔ)管理方式的模擬[J].長(zhǎng)春大學(xué)學(xué)報(bào),2005(4):36-38.

[2] 曹剛.大數(shù)據(jù)存儲(chǔ)管理系統(tǒng)面臨挑戰(zhàn)的探討[J].軟件產(chǎn)業(yè)與工程,2013(6):34-38.

[3] 張迎舂,張衛(wèi).虛擬化環(huán)境中的存儲(chǔ)基礎(chǔ)架構(gòu)管理及優(yōu)化方案[J].計(jì)算機(jī)與現(xiàn)代化,2013(10).

[4] 朱愷文,戴麗絲.系統(tǒng)配置參數(shù)通用性存儲(chǔ)管理的設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息,2013(12).

4.2 內(nèi)存回收模塊算法

選擇回收的內(nèi)存塊,當(dāng)點(diǎn)擊回收內(nèi)存時(shí),調(diào)用public List setFree(int startAddr,List le)方法,首先根據(jù)回收區(qū)的地址找到此內(nèi)存塊在List集合中的索引位置,然后判斷點(diǎn)擊的待回收的內(nèi)存塊的狀態(tài),若為0,則提示已是空閑狀態(tài);若為1,則調(diào)用方法Judge.judgement(ku, i) , 此方法根據(jù)索引位置和內(nèi)存塊的List集合返回要操作的方法,可以細(xì)化成9種情況來判斷:1)待回收的內(nèi)存塊沒有上塊也沒有下塊內(nèi)存,則回收后地址為本塊地址,大小為本塊內(nèi)存的大?。?)待回收的內(nèi)存塊沒有上塊,有下塊內(nèi)存,且下塊內(nèi)存為空閑狀態(tài),則回收后地址為本塊地址,大小為本塊大小加下塊內(nèi)存大?。?)待回收的內(nèi)存塊沒有上塊,有下塊內(nèi)存,且下塊內(nèi)存為占用狀態(tài),則回收后地址為本塊地址,大小為本塊大?。?)待回收的內(nèi)存塊有上塊內(nèi)存,且上塊空閑,沒有下塊,則回收后地址為上塊地址,大小為本塊大小加下塊大??;5)待回收的內(nèi)存塊有上塊內(nèi)存,上塊內(nèi)存占用,沒有下塊,則回收后地址為本塊地址,大小為本塊大??;6)待回收的內(nèi)存塊上塊和下塊都是空閑,則回收后地址為本塊地址,大小為本塊大小加上塊和下塊大??;7)待回收的內(nèi)存塊的上塊和下塊都是占用狀態(tài),則回收后地址為本塊地址,大小為本塊大??;8)待回收的內(nèi)存塊的上塊占用,下塊空閑,則回收后地址為本塊地址,大小為本塊大小加下塊大小;9)待回收的內(nèi)存塊的上塊空閑,下塊占用,回收后地址為上塊地址,大小為本塊大小加上塊大小。之后根據(jù)返回的操作方法進(jìn)行對(duì)內(nèi)存塊的處理,然后返回一個(gè)按內(nèi)存地址排序的內(nèi)存塊集合。

5 內(nèi)存分配回收實(shí)現(xiàn)部分截圖

1)系統(tǒng)內(nèi)存未分配(如圖1所示)。

6 結(jié)束語

本文通過編寫和調(diào)試存儲(chǔ)管理的模擬程序,加深了對(duì)存儲(chǔ)管理方案的理解,熟悉了對(duì)可變分區(qū)存儲(chǔ)管理的內(nèi)存分配和回收。

參考文獻(xiàn):

[1] 戴銀飛,趙耀紅.可變分區(qū)存儲(chǔ)管理方式的模擬[J].長(zhǎng)春大學(xué)學(xué)報(bào),2005(4):36-38.

[2] 曹剛.大數(shù)據(jù)存儲(chǔ)管理系統(tǒng)面臨挑戰(zhàn)的探討[J].軟件產(chǎn)業(yè)與工程,2013(6):34-38.

[3] 張迎舂,張衛(wèi).虛擬化環(huán)境中的存儲(chǔ)基礎(chǔ)架構(gòu)管理及優(yōu)化方案[J].計(jì)算機(jī)與現(xiàn)代化,2013(10).

[4] 朱愷文,戴麗絲.系統(tǒng)配置參數(shù)通用性存儲(chǔ)管理的設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息,2013(12).

4.2 內(nèi)存回收模塊算法

選擇回收的內(nèi)存塊,當(dāng)點(diǎn)擊回收內(nèi)存時(shí),調(diào)用public List setFree(int startAddr,List le)方法,首先根據(jù)回收區(qū)的地址找到此內(nèi)存塊在List集合中的索引位置,然后判斷點(diǎn)擊的待回收的內(nèi)存塊的狀態(tài),若為0,則提示已是空閑狀態(tài);若為1,則調(diào)用方法Judge.judgement(ku, i) , 此方法根據(jù)索引位置和內(nèi)存塊的List集合返回要操作的方法,可以細(xì)化成9種情況來判斷:1)待回收的內(nèi)存塊沒有上塊也沒有下塊內(nèi)存,則回收后地址為本塊地址,大小為本塊內(nèi)存的大??;2)待回收的內(nèi)存塊沒有上塊,有下塊內(nèi)存,且下塊內(nèi)存為空閑狀態(tài),則回收后地址為本塊地址,大小為本塊大小加下塊內(nèi)存大小;3)待回收的內(nèi)存塊沒有上塊,有下塊內(nèi)存,且下塊內(nèi)存為占用狀態(tài),則回收后地址為本塊地址,大小為本塊大??;4)待回收的內(nèi)存塊有上塊內(nèi)存,且上塊空閑,沒有下塊,則回收后地址為上塊地址,大小為本塊大小加下塊大小;5)待回收的內(nèi)存塊有上塊內(nèi)存,上塊內(nèi)存占用,沒有下塊,則回收后地址為本塊地址,大小為本塊大小;6)待回收的內(nèi)存塊上塊和下塊都是空閑,則回收后地址為本塊地址,大小為本塊大小加上塊和下塊大??;7)待回收的內(nèi)存塊的上塊和下塊都是占用狀態(tài),則回收后地址為本塊地址,大小為本塊大?。?)待回收的內(nèi)存塊的上塊占用,下塊空閑,則回收后地址為本塊地址,大小為本塊大小加下塊大小;9)待回收的內(nèi)存塊的上塊空閑,下塊占用,回收后地址為上塊地址,大小為本塊大小加上塊大小。之后根據(jù)返回的操作方法進(jìn)行對(duì)內(nèi)存塊的處理,然后返回一個(gè)按內(nèi)存地址排序的內(nèi)存塊集合。

5 內(nèi)存分配回收實(shí)現(xiàn)部分截圖

1)系統(tǒng)內(nèi)存未分配(如圖1所示)。

6 結(jié)束語

本文通過編寫和調(diào)試存儲(chǔ)管理的模擬程序,加深了對(duì)存儲(chǔ)管理方案的理解,熟悉了對(duì)可變分區(qū)存儲(chǔ)管理的內(nèi)存分配和回收。

參考文獻(xiàn):

[1] 戴銀飛,趙耀紅.可變分區(qū)存儲(chǔ)管理方式的模擬[J].長(zhǎng)春大學(xué)學(xué)報(bào),2005(4):36-38.

[2] 曹剛.大數(shù)據(jù)存儲(chǔ)管理系統(tǒng)面臨挑戰(zhàn)的探討[J].軟件產(chǎn)業(yè)與工程,2013(6):34-38.

[3] 張迎舂,張衛(wèi).虛擬化環(huán)境中的存儲(chǔ)基礎(chǔ)架構(gòu)管理及優(yōu)化方案[J].計(jì)算機(jī)與現(xiàn)代化,2013(10).

[4] 朱愷文,戴麗絲.系統(tǒng)配置參數(shù)通用性存儲(chǔ)管理的設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息,2013(12).

猜你喜歡
存儲(chǔ)管理回收
一種衛(wèi)星數(shù)據(jù)廣播系統(tǒng)端站存儲(chǔ)管理方案設(shè)計(jì)
文檔存儲(chǔ)管理系統(tǒng)的設(shè)計(jì)
省級(jí)氣象數(shù)據(jù)文件共享存儲(chǔ)管理系統(tǒng)研究
DAITSS核心界面與數(shù)據(jù)存儲(chǔ)初探