存儲(chǔ)器管理實(shí)驗(yàn)報(bào)告_第1頁(yè)
存儲(chǔ)器管理實(shí)驗(yàn)報(bào)告_第2頁(yè)
存儲(chǔ)器管理實(shí)驗(yàn)報(bào)告_第3頁(yè)
存儲(chǔ)器管理實(shí)驗(yàn)報(bào)告_第4頁(yè)
存儲(chǔ)器管理實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、操作系統(tǒng)實(shí)驗(yàn)報(bào)告選題名稱(chēng)存儲(chǔ)器管理所在院系計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專(zhuān)業(yè)名稱(chēng)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院(日語(yǔ)雙學(xué)位)姓 名龔德興、徐莉莉、張文卿、 王俏、何慧楠、劉艷茹、朱靜君班 級(jí)1202班指導(dǎo)老師付老師完成時(shí)間2014-11-18目錄一、實(shí)習(xí)內(nèi)容- 1 -二、實(shí)習(xí)目的- 1 -三、實(shí)習(xí)題目- 1 -四程序中使用的數(shù)據(jù)結(jié)構(gòu)及符號(hào)說(shuō)明- 2 -五、流程圖- 3 -六源程序- 4 -1、主要實(shí)現(xiàn)- 4 -2、實(shí)現(xiàn)程序- 8 -七程序運(yùn)行截圖- 9 -1、初始化程序- 9 -2、初始化作業(yè)大小- 9 -3、運(yùn)行作業(yè)過(guò)程截圖- 10 -4.全部作業(yè)存儲(chǔ)截圖- 10 -5、回收作業(yè)截圖- 11 -八、小組成員及分

2、工- 11 -九實(shí)驗(yàn)總結(jié)- 12 - 11 - / 13文檔可自由編輯打印一、實(shí)習(xí)內(nèi)容主存儲(chǔ)器空間的分配和回收。二、實(shí)習(xí)目的一個(gè)好的計(jì)算機(jī)系統(tǒng)不僅要有一個(gè)足夠容量的、存取速度高的、穩(wěn)定可靠的主存儲(chǔ)器,而且要能合理地分配和使用這些存儲(chǔ)空間。當(dāng)用戶(hù)提出申請(qǐng)存儲(chǔ)器空間時(shí),存儲(chǔ)管理必須根據(jù)申請(qǐng)者的要求,按一定的策略分析主存空間的使用情況,找出足夠的空閑區(qū)域分配給申請(qǐng)者。當(dāng)作業(yè)撤離或主動(dòng)歸還主存資源時(shí),則存儲(chǔ)管理要收回作業(yè)占用的主存空間或歸還部分主存空間。主存的分配和回收的實(shí)現(xiàn)雖與主存儲(chǔ)器的管理方式有關(guān)的,通過(guò)本實(shí)習(xí)幫助學(xué)生理解在不同的存儲(chǔ)管理方式下應(yīng)怎樣實(shí)現(xiàn)主存空間的分配和回收。三、實(shí)習(xí)題目模擬在分頁(yè)

3、式管理方式下采用位示圖來(lái)表示主存分配情況,實(shí)現(xiàn)主存空間的分配和回收。提示:(1) 分頁(yè)式存儲(chǔ)器把主存分成大小相等的若干塊,作業(yè)的信息也按塊的大小分頁(yè),作業(yè)裝入主存時(shí)可把作業(yè)的信息按頁(yè)分散存放在主存的空閑塊中,為了說(shuō)明主存中哪些塊已經(jīng)被占用,哪些塊是尚未分配的空閑塊,可用一張位示圖來(lái)指出。位示圖可由若干存儲(chǔ)單元來(lái)構(gòu)成,其中每一位與一個(gè)物理塊對(duì)應(yīng),用0/1表示對(duì)應(yīng)塊為空閑/已占用。(2) 假設(shè)某系統(tǒng)的主存被分成大小相等的64塊,則位示圖可用8個(gè)字節(jié)來(lái)構(gòu)成,另用一單元記錄當(dāng)前空閑塊數(shù)。如果已有第0,1,4,5,6,9,11,13,24,31,共10個(gè)主存塊被占用了,那么位示圖情況如下:字 位 節(jié) 數(shù)

4、 號(hào)01234567 011001110 101010100 200000000 310000001 400000000 500000000 600000000 700000000(3) 當(dāng)要裝入一個(gè)作業(yè)時(shí),根據(jù)作業(yè)對(duì)主存的需要量,先查當(dāng)前空閑塊數(shù)是否能滿足作業(yè)要求,若不能滿足則輸出分配不成功。若能滿足,則查位示圖,找出為“0”的一些位,置上占用標(biāo)志“1”,從“當(dāng)前空閑塊數(shù)”中減去本次占用塊數(shù)。按找到的計(jì)算出對(duì)應(yīng)的塊號(hào),其計(jì)算公式為: 塊號(hào)= j´8+i其中,j表示找到的是第n個(gè)字節(jié),I表示對(duì)應(yīng)的是第n位。根據(jù)分配給作業(yè)的塊號(hào),為作業(yè)建立一張頁(yè)表,頁(yè)表格式:頁(yè) 號(hào)塊 號(hào)012MM(4

5、) 當(dāng)一個(gè)作業(yè)執(zhí)行結(jié)束,歸還主存時(shí),根據(jù)該作業(yè)的頁(yè)表可以知道應(yīng)歸還的塊號(hào),由塊號(hào)可計(jì)算出在位示圖中的對(duì)應(yīng)位置,把對(duì)應(yīng)位的占用標(biāo)志清成“0”,表示對(duì)應(yīng)的塊已成為空閑塊。歸還的塊數(shù)加入到當(dāng)前空閑塊數(shù)中。由塊號(hào)計(jì)算在位示圖中的位置的公式如下:字節(jié)號(hào) j=塊號(hào)/8 ( 表示取整)位數(shù) i=塊號(hào)/8 ( 表示取余)(5) 設(shè)計(jì)實(shí)現(xiàn)主存分配和回收的程序。假定位示圖的初始狀態(tài)如(2)所述,現(xiàn)有一信息量為5頁(yè)的作業(yè)要裝入,運(yùn)行你所設(shè)計(jì)的分配程序,為作業(yè)分配主存且建立頁(yè)表(格式如(3)所述)。然后假定有另一作業(yè)執(zhí)行結(jié)束,它占用的塊號(hào)為第4,5,6和31塊,運(yùn)行你所設(shè)計(jì)的回收程序,收回作業(yè)歸還的主存塊。四程序中使

6、用的數(shù)據(jù)結(jié)構(gòu)及符號(hào)說(shuō)明1、初始化位示圖public void init(Store store);2、添加作業(yè)public void AddHwork();3、執(zhí)行作業(yè)public List<HomeWork> findWst(List<HomeWork> list, Store store)初始化位示圖顯示存儲(chǔ)空間添加作業(yè),并存放在list集合里面集合是否為空判斷剩余空間是否能夠存放作業(yè)顯示作業(yè)存儲(chǔ)詳情顯示當(dāng)前存儲(chǔ)空間回收作業(yè)是否全部回收開(kāi)始結(jié)束五、流程圖 Y N 取作業(yè)N Y NY六源程序1、主要實(shí)現(xiàn)public class Implement private Li

7、st<HomeWork> list = new ArrayList();/* * 初始化位示圖 * * param wst */public void init(Store store) System.out.println("請(qǐng)初始化位圖,輸入那些主存塊被專(zhuān)用(0-63):以任意字符串結(jié)束");Scanner scan = new Scanner(System.in);int wst = store.getWst();int count = 64;store.setSpareNum(count);while (scan.hasNextInt() try int

8、 a = scan.nextInt();int y = a / 8;int x = a - y * 8;if (x >= 0 && y >= 0) wstyx = 1;store.setSpareNum(-count); else System.out.println("對(duì)不起,你輸入的數(shù)據(jù)有誤!請(qǐng)重新運(yùn)行");break; catch (Exception e) System.out.println("對(duì)不起,你輸入的數(shù)據(jù)有誤!請(qǐng)重新運(yùn)行");break;System.out.println(store.getSpareNu

9、m();/* * * param hw */public void AddHwork() HomeWork hwork = new HomeWork();System.out.println("初始化作業(yè)的頁(yè)號(hào)");Scanner scan = new Scanner(System.in);int num = scan.nextInt();if (num < 0) System.out.println("對(duì)不起,你輸入的數(shù)據(jù)有誤!請(qǐng)重新運(yùn)行");return;int a = new intnum;int b = new intnum;int j =

10、 0;for (int i = 0; i < a.length; i+) ai = j+;hwork.setPageNum(a);hwork.setPieceNum(b);list.add(hwork);/* * 執(zhí)行作業(yè) * * param list包含作業(yè)的list集合 * param store主存 */public List<HomeWork> findWst(List<HomeWork> list, Store store) List<HomeWork> hwlist = new ArrayList<HomeWork>();if

11、(list.size() = 0) System.out.println("沒(méi)有作業(yè)進(jìn)來(lái)");System.exit(0);for (int m = 0; m < list.size(); m+) / 取作業(yè)int count = 0;HomeWork hwork = list.get(m);int pageNum = hwork.getPageNum();/ 得到頁(yè)碼int pieceNum = hwork.getPieceNum();if (store.getSpareNum() >= pageNum.length) int wst = store.getW

12、st();for (int i = 0; i < wst.length; i+) for (int j = 0; j < wsti.length; j+) if (wstij = 0) if (count = pageNum.length) break;wstij = 1;pieceNumcount = i * 8 + j;count+; else continue;store.setSpareNum(store.getSpareNum() - pageNum.length);hwork.setPageNum(pageNum);hwork.setPieceNum(pieceNum)

13、;hwlist.add(hwork);/ 作業(yè)執(zhí)行完成后就進(jìn)入回收鏈表store.setWst(wst); else if (m != 0) System.err.println("執(zhí)行" + (m+1) + "空閑塊不足");elseSystem.err.println("主存空閑塊數(shù)不足");System.exit(0);return hwlist;/* * 歸還作業(yè) * * param store */public void backHomeWork(List<HomeWork> list, Store store)

14、 for (int i = 0; i < list.size(); i+) HomeWork hwork = list.get(i);int pieceNum = hwork.getPieceNum();int wst = store.getWst();for (int j = 0; j < pieceNum.length; j+) int y = pieceNumj / 8;int x = pieceNumj - y * 8;wstyx = 0;store.setSpareNum(store.getSpareNum() + pieceNum.length);store.setWs

15、t(wst);System.out.println("-回收一個(gè)作業(yè)成功->");show(store);/* * 打印作業(yè)表 * * param hwork */public void showPage(HomeWork hwork) int pageNum = hwork.getPageNum();int pieceNum = hwork.getPieceNum();System.out.println("頁(yè)號(hào)t塊號(hào)");for (int i = 0; i < pageNum.length; i+) System.out.println(

16、pageNumi + "t" + pieceNumi);/* * 顯示位示圖的狀態(tài) * * param wst */public void show(Store store) int wst = store.getWst();for (int i = 0; i < wst.length; i+) for (int j = 0; j < wsti.length; j+) System.out.print(wstij + " ");System.out.println();public List<HomeWork> getList()

17、 return list;2、實(shí)現(xiàn)程序public class RunTest public static void main(String args) Store store = new Store();Implement imp = new Implement();imp.init(store);imp.show(store);imp.AddHwork();imp.AddHwork();imp.AddHwork();List<HomeWork> list = imp.getList();List<HomeWork> backlist = imp.findWst(list, store);System.out.println(list.size()+"=");for(int i=0;i<list.size();i+)imp.showPage(list.get(i);imp.show(store);imp.backHomeWork(backlist, store);System.out.println("初始狀態(tài)");imp.show

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論