• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

      2014-07-03 05:22:04宋新偉
      電腦知識與技術 2014年12期
      關鍵詞:存儲管理回收

      宋新偉

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

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

      中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2014)12-2880-03

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

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

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

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

      2.1 設計所采用的算法

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

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

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

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

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

      2.4 內(nèi)存的回收

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

      3 數(shù)據(jù)結構

      1)塊類結構

      public class Kuai{

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

      private int size; //塊的大小

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

      private int runprogram; } //表示該快所運行的程序編號

      2)分區(qū)表結構

      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)表模型結構

      Public class TableModel{

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

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

      4 程序算法

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

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

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

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

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

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

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

      6 結束語

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

      參考文獻:

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

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

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

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

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

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

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

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

      6 結束語

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

      參考文獻:

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

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

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

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

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

      選擇回收的內(nèi)存塊,當點擊回收內(nèi)存時,調用public List setFree(int startAddr,List le)方法,首先根據(jù)回收區(qū)的地址找到此內(nèi)存塊在List集合中的索引位置,然后判斷點擊的待回收的內(nèi)存塊的狀態(tài),若為0,則提示已是空閑狀態(tài);若為1,則調用方法Judge.judgement(ku, i) , 此方法根據(jù)索引位置和內(nèi)存塊的List集合返回要操作的方法,可以細化成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)存占用,沒有下塊,則回收后地址為本塊地址,大小為本塊大?。?)待回收的內(nèi)存塊上塊和下塊都是空閑,則回收后地址為本塊地址,大小為本塊大小加上塊和下塊大小;7)待回收的內(nèi)存塊的上塊和下塊都是占用狀態(tài),則回收后地址為本塊地址,大小為本塊大小;8)待回收的內(nèi)存塊的上塊占用,下塊空閑,則回收后地址為本塊地址,大小為本塊大小加下塊大小;9)待回收的內(nèi)存塊的上塊空閑,下塊占用,回收后地址為上塊地址,大小為本塊大小加上塊大小。之后根據(jù)返回的操作方法進行對內(nèi)存塊的處理,然后返回一個按內(nèi)存地址排序的內(nèi)存塊集合。

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

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

      6 結束語

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

      參考文獻:

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

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

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

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

      猜你喜歡
      存儲管理回收
      一種衛(wèi)星數(shù)據(jù)廣播系統(tǒng)端站存儲管理方案設計
      電子制作(2017年13期)2017-12-15 09:00:32
      文檔存儲管理系統(tǒng)的設計
      TFT玻璃研磨廢水回收再利用系統(tǒng)設計
      科技視界(2016年23期)2016-11-04 13:01:10
      煉油廢水處理及回用工藝探討
      關于調試現(xiàn)場隔離與隔離鑰匙的管理
      科技視界(2016年15期)2016-06-30 22:10:24
      淺析計算機虛擬化儲存管理
      基于物聯(lián)網(wǎng)的建筑廢料回收問題研究
      商(2016年14期)2016-05-30 09:45:24
      油田活動鍋爐污水回收裝置的研制與應用
      煉廠催化干氣氫氣回收工藝選擇
      省級氣象數(shù)據(jù)文件共享存儲管理系統(tǒng)研究
      四川省| 理塘县| 苍梧县| 若尔盖县| 延寿县| 库伦旗| 义乌市| 工布江达县| 壤塘县| 孙吴县| 新绛县| 绥阳县| 沁水县| 永州市| 凤翔县| 河间市| 延津县| 思茅市| 大名县| 都昌县| 通许县| 双峰县| 津南区| 黄陵县| 石泉县| 澄城县| 日喀则市| 武功县| 阿克苏市| 长沙市| 全南县| 三门县| 郁南县| 沈丘县| 建宁县| 邯郸县| 且末县| 通山县| 新闻| 荔波县| 普陀区|