位示圖實(shí)驗(yàn)報(bào)告_第1頁(yè)
位示圖實(shí)驗(yàn)報(bào)告_第2頁(yè)
位示圖實(shí)驗(yàn)報(bào)告_第3頁(yè)
位示圖實(shí)驗(yàn)報(bào)告_第4頁(yè)
位示圖實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上合肥學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系實(shí)驗(yàn)報(bào)告2014 2015 學(xué)年第 一 學(xué)期課程操作系統(tǒng)原理實(shí)驗(yàn)名稱編寫用位示圖法管理文件存儲(chǔ)空間的分配與回收程序?qū)W生姓名 侯康康 章 濤 張德天 何天龍 專業(yè)班級(jí)12計(jì)本(3)指導(dǎo)教師屠 菁2014 年 11 月1實(shí)驗(yàn)?zāi)康模ㄗ煮w四號(hào),宋體,行距1.2倍,段前段后0.5行) 1.1理解文件存儲(chǔ)空間的分配與回收的基本概念,掌握產(chǎn)生文件存儲(chǔ)空間的分配與回收的幾種方法,體會(huì)位示圖算法是管理文件存儲(chǔ)空間的分配與回收的一種行之有效的方法。 1.2 通過(guò)編寫程序?qū)崿F(xiàn)位示圖算法,進(jìn)一步理解位示圖算法的原理和執(zhí)行過(guò)程,掌握位示圖算法的描述和應(yīng)用,進(jìn)一步熟練掌

2、握文件存儲(chǔ)空間的分配與回收的方法。2 實(shí)驗(yàn)內(nèi)容 2.1程序首先要給出位示圖初態(tài)。分配時(shí),參數(shù)為文件名及需要分配的塊數(shù)?;厥諘r(shí),參數(shù)為文件名。 2.2回答信息:分配時(shí),能夠分配時(shí),給出文件名和分配的具體塊號(hào)。否則,給出無(wú)法分配的信息。顯示位示圖。 2.3回收時(shí):給出回收的具體塊號(hào)。顯示位示圖。3 實(shí)驗(yàn)步驟 3.1位示圖說(shuō)明位示圖算法是利用二進(jìn)制的一位來(lái)表示磁盤中的一個(gè)盤塊的使用情況。在外存上建立一張位示圖(bitmap),記錄文件存儲(chǔ)器的使用情況。每一位僅對(duì)應(yīng)文件存儲(chǔ)器上的一個(gè)物理塊,取值0和1分別表示空閑和占用。文件存儲(chǔ)器上的物理塊依次編號(hào)為:0、1、2、。通??捎胢*n個(gè)位數(shù)來(lái)構(gòu)成位示圖,并

3、使m*n等于磁盤的總塊數(shù)。位示圖也可描述為一個(gè)二維數(shù)組mapm*n,如圖(1)所示:0123456789101112131415011000111001011101000111111000011121110001111110000315圖(1)位示圖 3.2概要設(shè)計(jì) 3.2.1 封裝屬性 在新建作業(yè)時(shí),我們需要知道的是作業(yè)名和作業(yè)塊數(shù)。所以新建一個(gè)storeclass.java,里面封裝兩個(gè)屬性,一個(gè)是作業(yè)名id;一個(gè)是作業(yè)塊數(shù),我們定義成一位數(shù)組ye.用來(lái)記錄輸入作業(yè)塊數(shù)輸入時(shí)在位示圖中的位置。 3.2.2各功能的實(shí)現(xiàn) 存儲(chǔ)空間的分配算法首先要輸入作業(yè)名和大小,若作業(yè)名已存在

4、則報(bào)錯(cuò);若沒有,則比較空閑區(qū)中空閑塊數(shù)是否大于欲分配的塊數(shù)。有的話分配;沒有的話報(bào)錯(cuò);分配的時(shí)候該作業(yè)要記錄下自己所占盤塊的其實(shí)盤號(hào)和所占用的盤快數(shù)。并修改對(duì)應(yīng)盤塊的位示圖的值。程序中對(duì)應(yīng)的addpro.jsp是從add.jsp獲取id(作業(yè)名)和num(塊數(shù)),再進(jìn)行分配操作,分配算法如下: String id=request.getParameter("id");int num=Integer.parseInt(request.getParameter("num");boolean flag=false;int n=0;int q=new int88

5、;LinkedList<StoreClass> list = new LinkedList<StoreClass>();q=(int)session.getAttribute("a");list=(LinkedList<StoreClass>)session.getAttribute("list");StoreClass sc=new StoreClass();Store s=new Store();n=s.surplus(q);if(n<num)request.getRequestDispatcher(&quo

6、t;/error1.jsp").forward(request, response);elsefor(int i=0;i<list.size();i+) if(StoreClass) list.get(i).getId().equals(id) flag =true ; break; if(flag) request.getRequestDispatcher("/error2.jsp").forward(request, response); else sc.setId(id); int k=0; int temp = new int64; for (int

7、 i = 0; i < 64; i+) tempi = -1; sc.setYe(temp); for (int i = 0; i <= 7; i+) for (int j = 0; j <= 7; j+) if (qij = 0) qij = 1; sc.getYe()k = i * 8 + j; k+; if (k = num) /跳出循環(huán) break; if (k = num) /跳出循環(huán) break; list.add(sc); request.getRequestDispatcher("/main.jsp").forward(request, r

8、esponse); 分配成功后跳轉(zhuǎn)到main.jsp頁(yè)面,即主界面。 、回收空間算法 回收時(shí)首先要輸入作業(yè)名,判斷是否存在該作業(yè),若該作業(yè)不存在則報(bào)錯(cuò);回收的時(shí)候要將作業(yè)占用的內(nèi)存塊歸還,簡(jiǎn)單來(lái)說(shuō)就是將分配時(shí)的作業(yè)塊收回,體現(xiàn)在位示圖上就是狀態(tài)由“1”變成“0”。程序中對(duì)應(yīng)的deletepro.jsp是從delete.jsp獲取id(作業(yè)名),再進(jìn)回收操作,回收算法如下: String id=request.getParameter("id");boolean flag=false;int tempi = -1, tempj = -1;int q=new in

9、t88;q=(int)session.getAttribute("a");LinkedList<StoreClass> list = new LinkedList<StoreClass>();list=(LinkedList<StoreClass>)session.getAttribute("list");StoreClass store=new StoreClass();for(int i=0;i<list.size();i+) if(StoreClass) list.get(i).getId().equals

10、(id) store = (StoreClass) list.get(i); flag =true ; break; if(!flag) request.getRequestDispatcher("/error3.jsp").forward(request, response); else list.remove(store); for (int i = 0; i <= 63; i+) /將作業(yè)占用的內(nèi)存塊歸還,將要撤銷的進(jìn)程是經(jīng)過(guò)查找后的“m”. if (store.getYe()i != -1) /頁(yè)表存放的數(shù)字是內(nèi)存塊的地址 (8*i+j) tempi = st

11、ore.getYe()i / 8; tempj = store.getYe()i % 8; qtempitempj = 0; request.getRequestDispatcher("/main.jsp").forward(request, response); 回收成功后跳轉(zhuǎn)到main.jsp頁(yè)面,即主界面。 、查看位示圖信息 輸入作業(yè)名即可查看作業(yè)在位示圖中的信息,若不存在該作業(yè)則報(bào)錯(cuò);主要查看作業(yè)的頁(yè)號(hào)(即作業(yè)在位示圖中的位置)和塊號(hào),塊號(hào)的計(jì)算公式也一并給出。程序中對(duì)應(yīng)的Findpro.jsp是從Find.jsp獲取id(作業(yè)名),再進(jìn)行查看位示圖信

12、息操作,查看算法如下: String id=request.getParameter("id");boolean flag=false;int x = 0, y = 0;int q=new int88;q=(int)session.getAttribute("a");LinkedList<StoreClass> list = new LinkedList<StoreClass>();list=(LinkedList<StoreClass>)session.getAttribute("list");S

13、toreClass store=new StoreClass();for(int i=0;i<list.size();i+) if (list.get(i).getId().equals(id) flag =true ; store = (StoreClass) list.get(i); break; if(!flag) request.getRequestDispatcher("/error3.jsp").forward(request, response); else %> 該作業(yè)的頁(yè)表情況為<br/> 頁(yè)號(hào)-塊號(hào)- 詳細(xì)<br/>

14、<% for (int i = 0; i <= 63; i+) if (store.getYe()i != -1) x = store.getYe()i / 8; y = store.getYe()i % 8; out.println(i + "-" + store.getYe()i + "- 8 *" + x + "+" + y);%><br/> <% %> <a href="main.jsp">返回主界面</a>查看成功后可選擇返回到main.j

15、sp頁(yè)面,即主界面。 3.3各算法流程圖 3.3.1盤塊的分配如下流程圖(2):判斷空間是否足夠輸入文件名,和塊數(shù).否判斷作業(yè)是否存在 是否 是順序?qū)⒆鳂I(yè)分配到位示圖中,修改位示圖中的狀態(tài) 返回 圖(2)分配流程圖3.3.2盤塊的回收如下流程圖(3): 輸入id 是否存在此作業(yè) 刪除此作業(yè),修改位示圖中的狀態(tài) 是否刪除此作業(yè) 否 是顯示提示信息 否 是 返回 圖(3)回收流程圖3.3.3查看作業(yè)信息如下流程圖(4) 輸入id 查找作業(yè) 返回 否 是顯示沒找到 顯示作業(yè)信息內(nèi)容 圖(4)作業(yè)流程圖3.4調(diào)試分析以及運(yùn)行結(jié)果3.4.1 主界面通過(guò)網(wǎng)頁(yè)我們看到的如下所示,這是程序初始化時(shí)出現(xiàn)的界面圖

16、(5): 圖(5)主界面3.4.2 測(cè)試添加添加數(shù)據(jù)作業(yè)名os,塊數(shù)6;如圖(6)添加數(shù)據(jù)作業(yè)o,塊數(shù)9:如圖(7) 圖(6)添加數(shù)據(jù)1頁(yè)面 圖(7)添加數(shù)據(jù)2頁(yè)面 運(yùn)行結(jié)果如圖(8)圖(9) 圖(8)添加結(jié)果1 圖(9)添加結(jié)果23.4.3測(cè)試查看 查看數(shù)據(jù)作業(yè)名o;圖(10) 圖(10)查看數(shù)據(jù) 運(yùn)行結(jié)果為圖(11) 圖(11)查看結(jié)果3.4.4測(cè)試刪除 測(cè)試數(shù)據(jù):作業(yè)名o如圖(12) 圖(12)刪除作業(yè)運(yùn)行結(jié)果如圖(13) 圖(13)刪除運(yùn)行結(jié)果小結(jié):運(yùn)行結(jié)果和理論結(jié)果相同并符合實(shí)驗(yàn)要求,結(jié)果滿足位示圖法基本原理。四 實(shí)驗(yàn)總結(jié)在做實(shí)驗(yàn)前,一定要將課本上的知識(shí)吃透,因?yàn)檫@是做實(shí)驗(yàn)的基礎(chǔ),否

17、則,在老師講解時(shí)就會(huì)聽不懂,這將使你在做實(shí)驗(yàn)時(shí)的難度加大,浪費(fèi)做實(shí)驗(yàn)的寶貴時(shí)間。如果你不清楚,在做實(shí)驗(yàn)時(shí)才去摸索,這將使你極大地浪費(fèi)時(shí)間,使你事倍功半。做實(shí)驗(yàn)時(shí),一定要親力親為,務(wù)必要將每個(gè)步驟,每個(gè)細(xì)節(jié)弄清楚,弄明白,實(shí)驗(yàn)后,還要復(fù)習(xí),思考,這樣,你的印象才深刻,記得才牢固,否則,過(guò)后不久你就會(huì)忘得一干二凈,這還不如不做。做實(shí)驗(yàn)時(shí),老師還會(huì)根據(jù)自己的親身體會(huì),將一些課本上沒有的知識(shí)教給我們,拓寬我們的眼界,使我們認(rèn)識(shí)到這門課程在生活中的應(yīng)用是那么的廣泛。實(shí)驗(yàn)的過(guò)程全是我們學(xué)生自己動(dòng)手來(lái)完成的,這樣,我們就必須要弄懂實(shí)驗(yàn)的原理。在這里我深深體會(huì)到理論對(duì)實(shí)踐的指導(dǎo)作用:懂實(shí)驗(yàn)原理,而且體會(huì)到了實(shí)

18、驗(yàn)的操作能力是靠自己親自動(dòng)手,親自開動(dòng)腦筋,親自去請(qǐng)教別人才能得到提高的。我們做實(shí)驗(yàn)絕對(duì)不能人云亦云,要有自己的看法,這樣我們就要有充分的準(zhǔn)備,若是做了也不知道是個(gè)什么實(shí)驗(yàn),那么做了也是白做。五 附錄主要源代碼LoginServlet.javapackage hkk.domain;import java.io.IOException;import java.util.LinkedList;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.http.Http

19、Servlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginServlet extends HttpServlet private static final long serialVersionUID = -L;Overrideprotected void doGet(HttpServletRequest req, HttpServletRespo

20、nse resp)throws ServletException, IOException this.doPost(req, resp);Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException / 跳轉(zhuǎn)到登錄頁(yè)面LinkedList<StoreClass> list = new LinkedList<StoreClass>();int a = new int88; for (int i = 0;

21、i <= 7; i+) for (int j = 0; j <= 7; j+) aij = 0; HttpSession session=req.getSession();session.setAttribute("a", a);session.setAttribute("list", list);req.getRequestDispatcher("/main.jsp").forward(req, resp);StoreClass.javapackage hkk.domain;public class StoreClass

22、 String id; int ye = new int64; public String getId() return id;public void setId(String id) this.id = id;public int getYe() return ye; public void setYe(int ye) this.ye = ye; Addpro.jsp<% page language="java" import="java.util.*,hkk.domain.*" pageEncoding="UTF-8"%&g

23、t;<%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <base href=

24、"<%=basePath%>"> <title>My JSP 'AddPro.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" conten

25、t="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!-<link rel="stylesheet" type="text/css" href="styles.css">-> &

26、lt;/head> <body> <% String id=request.getParameter("id");int num=Integer.parseInt(request.getParameter("num");boolean flag=false;int n=0;int q=new int88;LinkedList<StoreClass> list = new LinkedList<StoreClass>();q=(int)session.getAttribute("a");l

27、ist=(LinkedList<StoreClass>)session.getAttribute("list");StoreClass sc=new StoreClass();Store s=new Store();n=s.surplus(q);if(n<num)request.getRequestDispatcher("/error1.jsp").forward(request, response);elsefor(int i=0;i<list.size();i+) if(StoreClass) list.get(i).getI

28、d().equals(id) flag =true ; break; if(flag) request.getRequestDispatcher("/error2.jsp").forward(request, response); else sc.setId(id); int k=0; int temp = new int64; for (int i = 0; i < 64; i+) tempi = -1; sc.setYe(temp); for (int i = 0; i <= 7; i+) for (int j = 0; j <= 7; j+) if

29、(qij = 0) qij = 1; sc.getYe()k = i * 8 + j; k+; if (k = num) /跳出循環(huán) break; if (k = num) /跳出循環(huán) break; list.add(sc); request.getRequestDispatcher("/main.jsp").forward(request, response); %> </body></html>Deletepro.jsp<% page language="java" import="java.util.*

30、,hkk.domain.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional

31、/EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'DeletePro.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache

32、"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!-<link rel="stylesheet" type=&qu

33、ot;text/css" href="styles.css">-> </head> <body> <% String id=request.getParameter("id");boolean flag=false;int tempi = -1, tempj = -1;int q=new int88;q=(int)session.getAttribute("a");LinkedList<StoreClass> list = new LinkedList<StoreC

34、lass>();list=(LinkedList<StoreClass>)session.getAttribute("list");StoreClass store=new StoreClass();for(int i=0;i<list.size();i+) if(StoreClass) list.get(i).getId().equals(id) store = (StoreClass) list.get(i); flag =true ; break; if(!flag) request.getRequestDispatcher("/er

35、ror3.jsp").forward(request, response); else list.remove(store); for (int i = 0; i <= 63; i+) /將作業(yè)占用的內(nèi)存塊歸還,將要撤銷的進(jìn)程是經(jīng)過(guò)查找后的“m”. if (store.getYe()i != -1) /頁(yè)表存放的數(shù)字是內(nèi)存塊的地址 (8*i+j) tempi = store.getYe()i / 8; tempj = store.getYe()i % 8; qtempitempj = 0; request.getRequestDispatcher("/main.jsp

36、").forward(request, response); %> </body></html>Findpro.jsp<% page language="java" import="java.util.*,hkk.domain.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.

37、getServerName()+":"+request.getServerPort()+path+"/"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'FindPro.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expir

溫馨提示

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

評(píng)論

0/150

提交評(píng)論