版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上合肥學院計算機科學與技術系實驗報告2014 2015 學年第 一 學期課程操作系統(tǒng)原理實驗名稱編寫用位示圖法管理文件存儲空間的分配與回收程序學生姓名 侯康康 章 濤 張德天 何天龍 專業(yè)班級12計本(3)指導教師屠 菁2014 年 11 月1實驗目的(字體四號,宋體,行距1.2倍,段前段后0.5行) 1.1理解文件存儲空間的分配與回收的基本概念,掌握產(chǎn)生文件存儲空間的分配與回收的幾種方法,體會位示圖算法是管理文件存儲空間的分配與回收的一種行之有效的方法。 1.2 通過編寫程序實現(xiàn)位示圖算法,進一步理解位示圖算法的原理和執(zhí)行過程,掌握位示圖算法的描述和應用,進一步熟練掌
2、握文件存儲空間的分配與回收的方法。2 實驗內(nèi)容 2.1程序首先要給出位示圖初態(tài)。分配時,參數(shù)為文件名及需要分配的塊數(shù)?;厥諘r,參數(shù)為文件名。 2.2回答信息:分配時,能夠分配時,給出文件名和分配的具體塊號。否則,給出無法分配的信息。顯示位示圖。 2.3回收時:給出回收的具體塊號。顯示位示圖。3 實驗步驟 3.1位示圖說明位示圖算法是利用二進制的一位來表示磁盤中的一個盤塊的使用情況。在外存上建立一張位示圖(bitmap),記錄文件存儲器的使用情況。每一位僅對應文件存儲器上的一個物理塊,取值0和1分別表示空閑和占用。文件存儲器上的物理塊依次編號為:0、1、2、。通??捎胢*n個位數(shù)來構成位示圖,并
3、使m*n等于磁盤的總塊數(shù)。位示圖也可描述為一個二維數(shù)組mapm*n,如圖(1)所示:0123456789101112131415011000111001011101000111111000011121110001111110000315圖(1)位示圖 3.2概要設計 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ù)。并修改對應盤塊的位示圖的值。程序中對應的addpro.jsp是從add.jsp獲取id(作業(yè)名)和num(塊數(shù)),再進行分配操作,分配算法如下: 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); 分配成功后跳轉到main.jsp頁面,即主界面。 、回收空間算法 回收時首先要輸入作業(yè)名,判斷是否存在該作業(yè),若該作業(yè)不存在則報錯;回收的時候要將作業(yè)占用的內(nèi)存塊歸還,簡單來說就是將分配時的作業(yè)塊收回,體現(xiàn)在位示圖上就是狀態(tài)由“1”變成“0”。程序中對應的deletepro.jsp是從delete.jsp獲取id(作業(yè)名),再進回收操作,回收算法如下: 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ī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); 回收成功后跳轉到main.jsp頁面,即主界面。 、查看位示圖信息 輸入作業(yè)名即可查看作業(yè)在位示圖中的信息,若不存在該作業(yè)則報錯;主要查看作業(yè)的頁號(即作業(yè)在位示圖中的位置)和塊號,塊號的計算公式也一并給出。程序中對應的Findpro.jsp是從Find.jsp獲取id(作業(yè)名),再進行查看位示圖信
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/> 頁號-塊號- 詳細<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è)是否存在 是否 是順序將作業(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)試分析以及運行結果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頁面 運行結果如圖(8)圖(9) 圖(8)添加結果1 圖(9)添加結果23.4.3測試查看 查看數(shù)據(jù)作業(yè)名o;圖(10) 圖(10)查看數(shù)據(jù) 運行結果為圖(11) 圖(11)查看結果3.4.4測試刪除 測試數(shù)據(jù):作業(yè)名o如圖(12) 圖(12)刪除作業(yè)運行結果如圖(13) 圖(13)刪除運行結果小結:運行結果和理論結果相同并符合實驗要求,結果滿足位示圖法基本原理。四 實驗總結在做實驗前,一定要將課本上的知識吃透,因為這是做實驗的基礎,否
17、則,在老師講解時就會聽不懂,這將使你在做實驗時的難度加大,浪費做實驗的寶貴時間。如果你不清楚,在做實驗時才去摸索,這將使你極大地浪費時間,使你事倍功半。做實驗時,一定要親力親為,務必要將每個步驟,每個細節(jié)弄清楚,弄明白,實驗后,還要復習,思考,這樣,你的印象才深刻,記得才牢固,否則,過后不久你就會忘得一干二凈,這還不如不做。做實驗時,老師還會根據(jù)自己的親身體會,將一些課本上沒有的知識教給我們,拓寬我們的眼界,使我們認識到這門課程在生活中的應用是那么的廣泛。實驗的過程全是我們學生自己動手來完成的,這樣,我們就必須要弄懂實驗的原理。在這里我深深體會到理論對實踐的指導作用:懂實驗原理,而且體會到了實
18、驗的操作能力是靠自己親自動手,親自開動腦筋,親自去請教別人才能得到提高的。我們做實驗絕對不能人云亦云,要有自己的看法,這樣我們就要有充分的準備,若是做了也不知道是個什么實驗,那么做了也是白做。五 附錄主要源代碼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 / 跳轉到登錄頁面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ī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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型城鎮(zhèn)化建設項目合同樣本4篇
- 2025年度智能化廠房土地使用權轉讓合同4篇
- 二零二四年二手房買賣合同中貸款條款規(guī)范2篇
- 2025年度電子產(chǎn)品代銷及品牌授權合同4篇
- 2025年度復雜多條款智能交通管理系統(tǒng)研發(fā)與應用合同3篇
- 二零二五年度工程機械挖機租賃合同范本
- 二零二五年度金飾品抵押貸款合同
- 南京機電職業(yè)技術學院《冶金研究方法》2023-2024學年第一學期期末試卷
- 南京大學《工程地質(zhì)學》2023-2024學年第一學期期末試卷
- 南充文化旅游職業(yè)學院《會計信息系統(tǒng)模擬》2023-2024學年第一學期期末試卷
- 醫(yī)療護理員五級理論知識考核試題
- 法院執(zhí)行議價協(xié)議書模板
- 多感官交互對文化參與的影響
- 2024至2030年中國家庭維修行業(yè)發(fā)展前景預測及投資策略研究報告
- 文化旅游場所運營設備更新項目資金申請報告-超長期特別國債投資專項
- 【人教版】二年級數(shù)學上冊說課稿-第2課時 直角的認識
- JTG F40-2004 公路瀝青路面施工技術規(guī)范
- 成都市2022級(2025屆)高中畢業(yè)班摸底測試(零診)英語試卷(含答案)
- 江蘇省南京市玄武區(qū)2022-2023學年七年級下學期期末語文試題
- 《金屬非金屬地下礦山監(jiān)測監(jiān)控系統(tǒng)建設規(guī)范》
- 房建EPC項目施工部署及-物資、機械設備、勞動力投入計劃
評論
0/150
提交評論