操作系統(tǒng)實(shí)驗(yàn)報(bào)告-中南大學(xué)(共17頁(yè))_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告-中南大學(xué)(共17頁(yè))_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告-中南大學(xué)(共17頁(yè))_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告-中南大學(xué)(共17頁(yè))_第4頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告-中南大學(xué)(共17頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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ì)文檔-傾情為你奉上操作系統(tǒng)原理試驗(yàn)報(bào)告班級(jí): 學(xué)號(hào):姓名:實(shí)驗(yàn)一:CPU調(diào)度一、實(shí)驗(yàn)內(nèi)容 選擇一個(gè)調(diào)度算法,實(shí)現(xiàn)處理機(jī)調(diào)度。二、實(shí)驗(yàn)?zāi)康?多道系統(tǒng)中,當(dāng)就緒進(jìn)程數(shù)大于處理機(jī)數(shù)時(shí),須按照某種策略決定哪些進(jìn)程優(yōu)先占用處理機(jī)。本實(shí)驗(yàn)?zāi)M實(shí)現(xiàn)處理機(jī)調(diào)度,以加深了解處理機(jī)調(diào)度的工作。三、實(shí)驗(yàn)題目 1、設(shè)計(jì)一個(gè)按優(yōu)先權(quán)調(diào)度算法實(shí)現(xiàn)處理機(jī)調(diào)度的程序; 2、設(shè)計(jì)按時(shí)間片輪轉(zhuǎn)實(shí)現(xiàn)處理機(jī)調(diào)度的程序。四、實(shí)驗(yàn)要求PCB內(nèi)容: 進(jìn)程名/PID; 要求運(yùn)行時(shí)間(單位時(shí)間); 優(yōu)先權(quán); 狀態(tài): PCB指針;1、可隨機(jī)輸入若干進(jìn)程,并按優(yōu)先權(quán)排序;2、從就緒隊(duì)首選進(jìn)程運(yùn)行:優(yōu)先權(quán)-1/要求運(yùn)行時(shí)間-1 要求運(yùn)行時(shí)間

2、=0時(shí),撤銷該進(jìn)程3、重新排序,進(jìn)行下輪調(diào)度4、最好采用圖形界面;5、可隨時(shí)增加進(jìn)程;6、規(guī)定道數(shù),設(shè)置后備隊(duì)列和掛起狀態(tài)。若內(nèi)存中進(jìn)程少于規(guī)定道數(shù),可自動(dòng)從后備隊(duì)列調(diào)度一作業(yè)進(jìn)入。被掛起進(jìn)程入掛起隊(duì)列,設(shè)置解掛功能用于將指定掛起進(jìn)程解掛入就緒隊(duì)列。7、每次調(diào)度后,顯示各進(jìn)程狀態(tài)。實(shí)驗(yàn)二:內(nèi)存管理一、實(shí)驗(yàn)內(nèi)容 主存儲(chǔ)器空間的分配和回收二、實(shí)驗(yàn)?zāi)康?幫助了解在不同的存儲(chǔ)管理方式下,應(yīng)怎樣實(shí)現(xiàn)主存空間的分配和回收。三、實(shí)驗(yàn)題目 在可變分區(qū)管理方式下,采用最先適應(yīng)算法實(shí)現(xiàn)主存空間的分配和回收。 四、實(shí)驗(yàn)要求1、自行假設(shè)主存空間大小,預(yù)設(shè)操作系統(tǒng)所占大小并構(gòu)造未分分區(qū)表; 表目?jī)?nèi)容:起址、長(zhǎng)度、狀態(tài)(

3、未分/空表目)2、結(jié)合實(shí)驗(yàn)一,PCB增加為: PID,要求運(yùn)行時(shí)間,優(yōu)先權(quán),狀態(tài),所需主存大小,主存起始位置,PCB指針3、采用最先適應(yīng)算法分配主存空間;4、進(jìn)程完成后,回收主存,并與相鄰空閑分區(qū)合并.1、Vo類說(shuō)明(數(shù)據(jù)存儲(chǔ)結(jié)構(gòu))進(jìn)程控制塊PCB的結(jié)構(gòu):Public class PCB /進(jìn)程控制塊PCB,代表一個(gè)進(jìn)程/進(jìn)程名,作為進(jìn)程的標(biāo)識(shí);private String name; /要求運(yùn)行時(shí)間,假設(shè)進(jìn)程運(yùn)行的單位時(shí)間數(shù);private int time; /賦予進(jìn)程的優(yōu)先權(quán),調(diào)度時(shí)總是選取優(yōu)先數(shù)小的進(jìn)程先執(zhí)行;private int priority; /狀態(tài),假設(shè)有“就緒”狀態(tài)(re

4、ady)、“運(yùn)行”狀態(tài)(running)、/“后備”狀態(tài)(waiting)、“掛起”狀態(tài)(handup)private String state; /進(jìn)程存放在table中的位置private int start; /進(jìn)程的大小private int length;/進(jìn)程是否進(jìn)入內(nèi)存, 1為進(jìn)入,0為未進(jìn)入private int isIn;/進(jìn)程在內(nèi)存中的起始位置private int base; /進(jìn)程的大小private int limit; /一些get和set方法以及構(gòu)造器 省略 ;2流程圖3.源程序核心代碼public void display()if(runningList.siz

5、e()>0)jt1.setValueAt(runningList.get(0).getName().trim(),0,0);jt1.setValueAt(runningList.get(0).getIsIn(),0,1);jt1.setValueAt(runningList.get(0).getTime(),0,2);jt1.setValueAt(runningList.get(0).getPriority(),0,3);jt1.setValueAt(runningList.get(0).getStart(),0,4);jt1.setValueAt(runningList.get(0).

6、getLength(),0,5);elsejt1.setValueAt("無(wú)進(jìn)程",0,0);jt1.setValueAt("進(jìn)行",0,1);jt1.setValueAt(null,0,2);jt1.setValueAt(null,0,3);jt1.setValueAt(null,0,4);jt1.setValueAt(null,0,5);/for(int i =0; i < readyList.size(); i+)jt2.setValueAt(readyList.get(i).getName().trim(),i,0);jt2.setValu

7、eAt(readyList.get(i).getIsIn(),i,1);jt2.setValueAt(readyList.get(i).getTime(),i,2);jt2.setValueAt(readyList.get(i).getPriority(),i,3);jt2.setValueAt(readyList.get(i).getStart(),i,4);jt2.setValueAt(readyList.get(i).getLength(),i,5);for(int j = readyList.size(); j < 6; j+)jt2.setValueAt(null,j,0);j

8、t2.setValueAt(null,j,1);jt2.setValueAt(null,j,2);jt2.setValueAt(null,j,3);jt2.setValueAt(null,j,4);jt2.setValueAt(null,j,5);/for(int i =0; i < waitingList.size(); i+)jt3.setValueAt(waitingList.get(i).getName().trim(),i,0);jt3.setValueAt(waitingList.get(i).getIsIn(),i,1);jt3.setValueAt(waitingList

9、.get(i).getTime(),i,2);jt3.setValueAt(waitingList.get(i).getPriority(),i,3);jt3.setValueAt(waitingList.get(i).getStart(),i,4);jt3.setValueAt(waitingList.get(i).getLength(),i,5);for(int j = waitingList.size(); j < 15; j+)jt3.setValueAt(null,j,0);jt3.setValueAt(null,j,1);jt3.setValueAt(null,j,2);jt

10、3.setValueAt(null,j,3);jt3.setValueAt(null,j,4);jt3.setValueAt(null,j,5);/for(int i =0; i < handupList.size(); i+)jt4.setValueAt(handupList.get(i).getName().trim(),i,0);jt4.setValueAt(handupList.get(i).getIsIn(),i,1);jt4.setValueAt(handupList.get(i).getTime(),i,2);jt4.setValueAt(handupList.get(i)

11、.getPriority(),i,3);jt4.setValueAt(handupList.get(i).getStart(),i,4);jt4.setValueAt(handupList.get(i).getLength(),i,5);for(int j = handupList.size(); j < 15; j+)jt4.setValueAt(null,j,0);jt4.setValueAt(null,j,1);jt4.setValueAt(null,j,2);jt4.setValueAt(null,j,3);jt4.setValueAt(null,j,4);jt4.setValu

12、eAt(null,j,5);jl1.setCellRenderer(new MyRenderer();for(int i = 0; i < unAssignList.size(); i+)System.out.print(unAssignList.get(i).getBase()+" ");System.out.println(unAssignList.get(i).getLimit();System.out.println("one");System.out.println();/時(shí)間和優(yōu)先級(jí)減一 public void sub() if(run

13、ningList.size()>0&&runningList.get(0).getIsIn()=1) runningList.get(0).setTime(runningList.get(0).getTime()-1); if(runningList.get(0).getPriority()>=1)runningList.get(0).setPriority(runningList.get(0).getPriority()-1); if(runningList.get(0).getTime()<0) runningList.get(0).setTime(0);

14、 if(runningList.get(0).getTime()=0) putOutMemory(runningList,0); public void sub1() if(runningList.size()>0&&runningList.get(0).getIsIn()=1) runningList.get(0).setTime(runningList.get(0).getTime()-1);if(runningList.get(0).getTime()=0) putOutMemory(runningList,0); if(runningList.get(0).get

15、Priority()<15) if(runningList.get(0).getPriority()>=1)runningList.get(0).setPriority(runningList.get(0).getPriority()-1); / public class MyRunnable implements Runnable public void run() while(true)timeManager();try Thread.sleep(1000); catch(InterruptedException ex) /自動(dòng)調(diào)度/ public class MyRunnab

16、le1 implements Runnable public void run() while(true)PManager(); try Thread.sleep(1000); catch(InterruptedException ex) /得到list中優(yōu)先權(quán)最高的/ public int getFirstW(ArrayList<Data> list) if(list.size()>0) int min = 0; for(int i = 1;i<list.size();i+ ) if(list.get(min).getPriority() > list.get(

17、i).getPriority() min = i; min+; return min; else return 0; / /刪除列表中第幾個(gè)數(shù)據(jù)/ / public void update(ArrayList<Data> list, int num) sList.clear();for(int i = 0; i < list.size(); i+)if(i != num)sList.add(list.get(i);list.clear();for(int i = 0; i < sList.size();i+)list.add(sList.get(i); public v

18、oid update1(ArrayList<Data_Memory> list, int num) sList1.clear();for(int i = 0; i < list.size(); i+)if(i != num)sList1.add(list.get(i);list.clear();for(int i = 0; i < sList1.size();i+)list.add(sList1.get(i); / /放入內(nèi)存/ / public void putInMemory() if(runningList.size()>0) if(runningList.

19、get(0).getIsIn()=0) for(int i = 0; i < unAssignList.size(); i+) if(unAssignList.get(i).getLimit() >= runningList.get(0).getLength() runningList.get(0).setStart(unAssignList.get(i).getBase(); runningList.get(0).setIsIn(1); if(unAssignList.get(i).getLimit() = runningList.get(0).getLength() updat

20、e1(unAssignList,i); else unAssignList.get(i).setBase(unAssignList.get(i).getBase()+runningList.get(0).getLength(); unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-runningList.get(0).getLength(); break; if(readyList.size()>0) for(int j = 0; j < readyList.size(); j+) if(readyList.get

21、(j).getIsIn()=0) for(int i = 0; i < unAssignList.size(); i+) if(unAssignList.get(i).getLimit() >= readyList.get(j).getLength() readyList.get(j).setStart(unAssignList.get(i).getBase(); readyList.get(j).setIsIn(1); if(unAssignList.get(i).getLimit() = readyList.get(j).getLength() update1(unAssign

22、List,i); else unAssignList.get(i).setBase(unAssignList.get(i).getBase()+readyList.get(j).getLength(); unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()-readyList.get(j).getLength(); break; / /移除內(nèi)存/ / public void putOutMemory(ArrayList<Data> list, int num) list.get(num).setIsIn(0); bo

23、olean flag1 = false; boolean flag2 = false; for(int i = 0; i < unAssignList.size(); i+) if(unAssignList.get(i).getBase() = (list.get(num).getLength()+list.get(num).getStart() unAssignList.get(i).setBase(list.get(num).getStart(); unAssignList.get(i).setLimit(list.get(num).getLength()+unAssignList.

24、get(i).getLimit(); flag1 = true; break; for(int i = 0; i < unAssignList.size(); i+) if(unAssignList.get(i).getBase()+unAssignList.get(i).getLimit() = list.get(num).getStart() if(!flag1) unAssignList.get(i).setLimit(list.get(num).getLength()+unAssignList.get(i).getLimit(); flag2 = true; break; els

25、e unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()+unAssignList.get(i+1).getLimit(); update1(unAssignList,i+1); if(flag1 | flag2) else int i = 0; while(unAssignList.get(i).getBase()<list.get(num).getStart() i+; Data_Memory data = new Data_Memory(); data.setBase(list.get(num).getStart()

26、; data.setLimit(list.get(num).getLength(); sList1.clear(); for(int j = 0; j < i; j+) sList1.add(unAssignList.get(j); sList1.add(data); for(int j = i; j < unAssignList.size(); j+) sList1.add(unAssignList.get(j); unAssignList.clear(); for(int j = 0; j < sList1.size(); j+) unAssignList.add(sLi

27、st1.get(j); / / /JLIST private class MyRenderer extends DefaultListCellRenderer public Component getListCellRendererComponent(JList list, Object value,int index, boolean isSelected, boolean cellHasFocus) super.getListCellRendererComponent(list, value, index, isSelected,cellHasFocus); setBackground(C

28、olor.gray); for(int i = 0; i < unAssignList.size(); i+) for(int j = unAssignList.get(i).getBase() ; j < unAssignList.get(i).getLimit()+unAssignList.get(i).getBase(); j+) if(index = j) setBackground(Color.white);/當(dāng)沒(méi)有內(nèi)容變?yōu)榘咨?return this; / / public void timeManager() /去掉time=0的,從waiting隊(duì)列加入新的進(jìn)程,排

29、序,調(diào)整waitingList加入runningLIst/去掉time=0的if(runningList.size()>0)if(runningList.get(0).getTime()=0)runningList.clear();sList.clear();for(int i = 0; i < readyList.size(); i+)if(readyList.get(i).getTime()>0)sList.add(readyList.get(i);readyList.clear();for(int i =0; i < sList.size();i+)readyLi

30、st.add(sList.get(i);readyList.get(i).setState("ready");/從waiting隊(duì)列加入新的進(jìn)程int j = 0;int m = readyList.size();for(; m < 6 && j < waitingList.size(); m+,j+)readyList.add(waitingList.get(j);readyList.get(m).setState("ready");/sort(readyList);/調(diào)整waitingListsList.clear();f

31、or(int i = j; i < waitingList.size(); i+)sList.add(waitingList.get(i);waitingList.clear();for(int i =0; i < sList.size();i+)waitingList.add(sList.get(i);/加入runningLIstif(runningList.size()=0)if(readyList.size()>0)runningList.add(readyList.get(0);runningList.get(0).setState("running&quo

32、t;);update(readyList,0);if(waitingList.size()>0)readyList.add(waitingList.get(0);readyList.get(5).setState("ready");update(waitingList,0);else /if(runningList.size()>0)if(readyList.size()>0)readyList.add(runningList.get(0);runningList.clear();readyList.get(0).setState("runnin

33、g");readyList.get(readyList.size()-1).setState("ready");runningList.add(readyList.get(0);update(readyList,0);putInMemory();sub();display();jtf1.grabFocus(); public void PManager() if(runningList.size()>0) if(runningList.get(0).getTime()=0) runningList.clear(); sList.clear(); for(in

34、t i = 0; i < readyList.size(); i+) if(readyList.get(i).getTime()>0) sList.add(readyList.get(i); readyList.clear(); for(int i =0; i < sList.size();i+) readyList.add(sList.get(i); readyList.get(i).setState("ready"); /從waiting隊(duì)列加入新的進(jìn)程 int j = 0; int m = readyList.size(); for(; m < 6 && j < wai

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論