




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上合肥學(xué)院計算機(jī)科學(xué)與技術(shù)系實驗報告2014 2015 學(xué)年第 一 學(xué)期課程操作系統(tǒng)原理實驗名稱編寫用位示圖法管理文件存儲空間的分配與回收程序?qū)W生姓名 侯康康 章 濤 張德天 何天龍 專業(yè)班級12計本(3)指導(dǎo)教師屠 菁2014 年 11 月1實驗?zāi)康模ㄗ煮w四號,宋體,行距1.2倍,段前段后0.5行) 1.1理解文件存儲空間的分配與回收的基本概念,掌握產(chǎn)生文件存儲空間的分配與回收的幾種方法,體會位示圖算法是管理文件存儲空間的分配與回收的一種行之有效的方法。 1.2 通過編寫程序?qū)崿F(xiàn)位示圖算法,進(jìn)一步理解位示圖算法的原理和執(zhí)行過程,掌握位示圖算法的描述和應(yīng)用,進(jìn)一步熟練掌
2、握文件存儲空間的分配與回收的方法。2 實驗內(nèi)容 2.1程序首先要給出位示圖初態(tài)。分配時,參數(shù)為文件名及需要分配的塊數(shù)?;厥諘r,參數(shù)為文件名。 2.2回答信息:分配時,能夠分配時,給出文件名和分配的具體塊號。否則,給出無法分配的信息。顯示位示圖。 2.3回收時:給出回收的具體塊號。顯示位示圖。3 實驗步驟 3.1位示圖說明位示圖算法是利用二進(jìn)制的一位來表示磁盤中的一個盤塊的使用情況。在外存上建立一張位示圖(bitmap),記錄文件存儲器的使用情況。每一位僅對應(yīng)文件存儲器上的一個物理塊,取值0和1分別表示空閑和占用。文件存儲器上的物理塊依次編號為:0、1、2、。通常可用m*n個位數(shù)來構(gòu)成位示圖,并
3、使m*n等于磁盤的總塊數(shù)。位示圖也可描述為一個二維數(shù)組mapm*n,如圖(1)所示:0123456789101112131415011000111001011101000111111000011121110001111110000315圖(1)位示圖 3.2概要設(shè)計 3.2.1 封裝屬性 在新建作業(yè)時,我們需要知道的是作業(yè)名和作業(yè)塊數(shù)。所以新建一個storeclass.java,里面封裝兩個屬性,一個是作業(yè)名id;一個是作業(yè)塊數(shù),我們定義成一位數(shù)組ye.用來記錄輸入作業(yè)塊數(shù)輸入時在位示圖中的位置。 3.2.2各功能的實現(xiàn) 存儲空間的分配算法首先要輸入作業(yè)名和大小,若作業(yè)名已存在
4、則報錯;若沒有,則比較空閑區(qū)中空閑塊數(shù)是否大于欲分配的塊數(shù)。有的話分配;沒有的話報錯;分配的時候該作業(yè)要記錄下自己所占盤塊的其實盤號和所占用的盤快數(shù)。并修改對應(yīng)盤塊的位示圖的值。程序中對應(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è)名,判斷是否存在該作業(yè),若該作業(yè)不存在則報錯;回收的時候要將作業(yè)占用的內(nèi)存塊歸還,簡單來說就是將分配時的作業(yè)塊收回,體現(xiàn)在位示圖上就是狀態(tài)由“1”變成“0”。程序中對應(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)過查找后的“m”. if (store.getYe()i != -1) /頁表存放的數(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è)的頁號(即作業(yè)在位示圖中的位置)和塊號,塊號的計算公式也一并給出。程序中對應(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è)的頁表情況為<br/> 頁號-塊號- 詳細(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頁面,即主界面。 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 主界面通過網(wǎng)頁我們看到的如下所示,這是程序初始化時出現(xiàn)的界面圖
16、(5): 圖(5)主界面3.4.2 測試添加添加數(shù)據(jù)作業(yè)名os,塊數(shù)6;如圖(6)添加數(shù)據(jù)作業(yè)o,塊數(shù)9:如圖(7) 圖(6)添加數(shù)據(jù)1頁面 圖(7)添加數(shù)據(jù)2頁面 運(yùn)行結(jié)果如圖(8)圖(9) 圖(8)添加結(jié)果1 圖(9)添加結(jié)果23.4.3測試查看 查看數(shù)據(jù)作業(yè)名o;圖(10) 圖(10)查看數(shù)據(jù) 運(yùn)行結(jié)果為圖(11) 圖(11)查看結(jié)果3.4.4測試刪除 測試數(shù)據(jù):作業(yè)名o如圖(12) 圖(12)刪除作業(yè)運(yùn)行結(jié)果如圖(13) 圖(13)刪除運(yùn)行結(jié)果小結(jié):運(yùn)行結(jié)果和理論結(jié)果相同并符合實驗要求,結(jié)果滿足位示圖法基本原理。四 實驗總結(jié)在做實驗前,一定要將課本上的知識吃透,因為這是做實驗的基礎(chǔ),否
17、則,在老師講解時就會聽不懂,這將使你在做實驗時的難度加大,浪費做實驗的寶貴時間。如果你不清楚,在做實驗時才去摸索,這將使你極大地浪費時間,使你事倍功半。做實驗時,一定要親力親為,務(wù)必要將每個步驟,每個細(xì)節(jié)弄清楚,弄明白,實驗后,還要復(fù)習(xí),思考,這樣,你的印象才深刻,記得才牢固,否則,過后不久你就會忘得一干二凈,這還不如不做。做實驗時,老師還會根據(jù)自己的親身體會,將一些課本上沒有的知識教給我們,拓寬我們的眼界,使我們認(rèn)識到這門課程在生活中的應(yīng)用是那么的廣泛。實驗的過程全是我們學(xué)生自己動手來完成的,這樣,我們就必須要弄懂實驗的原理。在這里我深深體會到理論對實踐的指導(dǎo)作用:懂實驗原理,而且體會到了實
18、驗的操作能力是靠自己親自動手,親自開動腦筋,親自去請教別人才能得到提高的。我們做實驗絕對不能人云亦云,要有自己的看法,這樣我們就要有充分的準(zhǔ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)到登錄頁面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)過查找后的“m”. if (store.getYe()i != -1) /頁表存放的數(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消費幫扶展銷活動方案
- 海南旅行推廣活動方案
- 海曙區(qū)diy活動方案
- 派出所春節(jié)春聯(lián)活動方案
- 云南省臨滄市鎮(zhèn)康縣2024年七上數(shù)學(xué)期末達(dá)標(biāo)檢測模擬試題含解析
- 建設(shè)項目水平衡測試報告
- 2024-2025學(xué)年青海省海北市九年級化學(xué)第一學(xué)期期末質(zhì)量檢測模擬試題含解析
- 2024年內(nèi)蒙古鄂托克旗九年級化學(xué)第一學(xué)期期末考試模擬試題含解析
- 安陽師范學(xué)院《文化詞匯學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 遼寧工程技術(shù)大學(xué)《工程測量課程設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年云南紅河弘毅農(nóng)業(yè)發(fā)展限責(zé)任公司第一批員工招聘10人自考難、易點模擬試卷(共500題附帶答案詳解)
- 林下中藥材種植項目可行性研究報告
- 汽車4s店管理制度
- 電腦常見故障維修與電腦保養(yǎng)課件
- 電商平臺商家入駐流程及風(fēng)險控制標(biāo)準(zhǔn)
- 2025-2030年中國聚碳酸酯板(陽光板)行業(yè)發(fā)展格局及投資前景規(guī)劃研究報告
- 部編五年級道德與法治教學(xué)反思
- 2025年中國家居服行業(yè)市場深度分析及發(fā)展前景預(yù)測報告
- 創(chuàng)新發(fā)展研學(xué)旅游的執(zhí)行路徑與策略
- 煤層氣采輸技術(shù)基礎(chǔ)知識單選題100道及答案
- DB51T 1777-2014 中學(xué)數(shù)字化實驗室建設(shè)規(guī)范
評論
0/150
提交評論