新版操作系統(tǒng)實驗報告_第1頁
新版操作系統(tǒng)實驗報告_第2頁
新版操作系統(tǒng)實驗報告_第3頁
新版操作系統(tǒng)實驗報告_第4頁
新版操作系統(tǒng)實驗報告_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

操作系統(tǒng)試驗匯報院系:專業(yè):班級:學(xué)號:姓名:指導(dǎo)老師:進程調(diào)度的模擬與內(nèi)存管理試驗?zāi)康脑诓捎枚嗟莱绦蛟O(shè)計的系統(tǒng)中,往往有若干個進程同步處在就緒狀態(tài)。當(dāng)就續(xù)進程個數(shù)不小于處理器數(shù)時,就必須根據(jù)某種方略來決定哪些進程優(yōu)先占用處理器。試驗?zāi)M實現(xiàn)處理機調(diào)度,以加深理解處理機調(diào)度的工作,并體會優(yōu)先級和時間片輪轉(zhuǎn)調(diào)度算法的詳細實行措施。協(xié)助理解在不一樣的存儲管理方式下,應(yīng)怎樣實現(xiàn)主存空間的分派和回收。二、試驗規(guī)定1、可隨機輸入若干進程,并按優(yōu)先權(quán)排序;2、從就緒隊首選進程運行:優(yōu)先權(quán)-1/規(guī)定運行時間-1規(guī)定運行時間=0時,撤銷該進程3、重新排序,進行下輪調(diào)度。4、可隨時增長進程;5、規(guī)定道數(shù),設(shè)置后備隊列和掛起狀態(tài)。若內(nèi)存中進程少于規(guī)定道數(shù),可自動從后備隊列調(diào)度一作業(yè)進入。被掛起進程入掛起隊列,設(shè)置解掛功能用于將指定掛起進程解掛入就緒隊列。6、每次調(diào)度后,顯示各進程狀態(tài)。7、自行假設(shè)主存空間大小,預(yù)設(shè)操作系統(tǒng)所占大小并構(gòu)造未分分區(qū)表;表目內(nèi)容:起址、長度、狀態(tài)(未分/空表目)8、結(jié)合以上試驗,PCB增長為:{PID,規(guī)定運行時間,優(yōu)先權(quán),狀態(tài),所需主存大小,主存起始位置,PCB指針}9、采用最先適應(yīng)算法分派主存空間;10、進程完畢后,回收主存,并與相鄰空閑分區(qū)合并。11、采用圖形界面;三、試驗內(nèi)容選擇一種調(diào)度算法,實現(xiàn)處理機調(diào)度。1、設(shè)計一種按優(yōu)先權(quán)調(diào)度算法實現(xiàn)處理機調(diào)度的程序;2、設(shè)計準(zhǔn)時間片輪轉(zhuǎn)實現(xiàn)處理機調(diào)度的程序。3、主存儲器空間的分派和回收。在可變分區(qū)管理方式下,采用最先適應(yīng)算法實現(xiàn)主存空間的分派和回收。四、試驗原理該模擬系統(tǒng)采用java語言實現(xiàn),要實現(xiàn)的功能有新建進程、進程調(diào)度、掛起進程、解掛進程、刪除進程,道數(shù)和時間片大小可以由顧客自己調(diào)整,有兩種調(diào)度方略:按優(yōu)先權(quán)調(diào)度和準(zhǔn)時間片輪轉(zhuǎn)調(diào)度。每個進程也許有5種狀態(tài):新建(new)、就緒(ready)、運行(running)、阻塞(waiting)、掛起(suspend)。每個狀態(tài)均有一種隊列用來寄存處在該狀態(tài)的進程,不一樣的調(diào)度方略采用不一樣的隊列實現(xiàn)。當(dāng)創(chuàng)立進程時,假如內(nèi)存中的進程數(shù)還沒到達規(guī)定道數(shù),則將新建進程插入就緒隊列,假如內(nèi)存中進程數(shù)已經(jīng)到達規(guī)定道數(shù),則插到后備隊列,后備隊列中的進程的狀態(tài)為new。CPU每次調(diào)度時都從就緒隊列中取進程,在進程執(zhí)行過程中假如下一種操作時IO操作,則將進程插入到waiting隊列。在系統(tǒng)運行過程中可以執(zhí)行進程掛起操作,但執(zhí)行的掛起操作時系統(tǒng)自動暫停運行,在彈出窗口選擇要掛起的進程后,將選中的進程從本來的隊列中刪除并插入到掛起隊列。進行解掛操作時將選中的進程從掛起隊列中刪除并插入該進程本來所處的隊列。按優(yōu)先級調(diào)度:當(dāng)選擇按優(yōu)先權(quán)調(diào)度時,所有隊列都采用優(yōu)先隊列,優(yōu)先隊列采用一種有序鏈表實現(xiàn),進程的優(yōu)先權(quán)值越大代表優(yōu)先級越高,優(yōu)先隊列中的進程按優(yōu)先權(quán)從大到小排列,當(dāng)新進程插入時根據(jù)該進程的優(yōu)先權(quán)插入到隊列中的合適位置,插入后保持隊列按優(yōu)先權(quán)從大到小排列,假如新進程與隊列中某個進程優(yōu)先權(quán)值相等,則該新進程插到那個進程背面,以遵照先來先服務(wù)的規(guī)則。當(dāng)要從隊列中取出進程時總是取隊列中第一種進程,由于該進程的優(yōu)先級最高。準(zhǔn)時間片輪轉(zhuǎn)調(diào)度:當(dāng)選擇準(zhǔn)時間片輪轉(zhuǎn)調(diào)度時,所有隊列都采用先進先出隊列,先進先出隊列采用一種一般單向鏈表實現(xiàn),當(dāng)新進程插入時插入到隊列的末尾,當(dāng)要取進程時取隊首進程,這樣就實現(xiàn)了先進先出。內(nèi)存管理該試驗基于試驗一完畢,關(guān)鍵是內(nèi)存的分派和回收,在試驗一的基礎(chǔ)上增長內(nèi)存管理部分,在新建進程的時候增長一種輸入內(nèi)存大小的輸入框,在進程進入內(nèi)存時要分派內(nèi)存,在進程銷毀時要回收內(nèi)存,假如進入內(nèi)存時內(nèi)存局限性,則將進程插入到后備隊列等待下次調(diào)度。系統(tǒng)維護一種內(nèi)存表,每個表項代表一種空間,每個空間保留了該空間的起始地址和空間大小以及空間使用狀態(tài)。初始時只有一種空間,當(dāng)CPU啟動時要分派內(nèi)存,內(nèi)存分派采用最先適應(yīng)算法。回收內(nèi)存時假如有相鄰空閑空間,則要進行空閑空間合并。五、部分源程序publicclassdata{privateStringname;etIsIn()==0) { for(inti=0;i<();i++) { if(i).getLimit()>=(0).getLength()) { (0).setStart(i).getBase()); (0).setIsIn(1); if(i).getLimit()==(0).getLength()) { update1(unAssignList,i); } else { (i).setBase(i).getBase()+(0).getLength()); (i).setLimit(i).getLimit()(0).getLength()); } break; } } } } if()>0) { for(intj=0;j<();j++) { if(j).getIsIn()==0) { for(inti=0;i<();i++) { if(i).getLimit()>=(j).getLength()) { (j).setStart(i).getBase()); (j).setIsIn(1); if(i).getLimit()==(j).getLength()) { update1(unAssignList,i); } else { (i).setBase(i).getBase()+(j).getLength()); (i).setLimit(i).getLimit()(j).getLength()); } break; } } } } } }移除內(nèi)存publicvoidputOutMemory(ArrayList<Data>list,intnum) { (num).setIsIn(0); booleanflag1=false; booleanflag2=false; for(inti=0;i<();i++) { if(i).getBase()==(num).getLength()+(num).getStart())) { (i).setBase(num).getStart()); (i).setLimit(num).getLength()+(i).getLimit()); flag1=true; break; } } for(inti=0;i<();i++) { if((i).getBase()+(i).getLimit())==(num).getStart()) { if(!flag1) { (i).setLimit(num).getLength()+(i).getLimit()); flag2=true; break; } else { (i).setLimit(i).getLimit()+(i+1).getLimit()); update1(unAssignList,i+1); } } } if(flag1||flag2) {} else { inti=0; while(i).getBase()<(num).getStart()) { i++; } Data_Memorydata=newData_Memory(); (num).getStart()); (num).getLength()); (); for(intj=0;j<i;j++) { (j)); } (data); for(intj=i;j<();j++) { (j)); } (); for(intj=0;j<();j++) { (j)); } } }對內(nèi)存管理調(diào)度的操作privateclassMyRendererextendsDefaultListCellRenderer { publicComponentgetListCellRendererComponent(JListlist,Objectvalue,intindex,booleanisSelected,booleancellHasFocus) { (list,value,index,isSelected,cellHasFocus); setBackground; for(inti=0;i<();i++) { for(intj=(i).getBase()+6;j<(i).getLimit()+(i).getBase()+6;j++) { if(index==j) { setBackground;etTime()==0) (); (); for(inti=0;i<();i++) { if(i).getTime()>0) { (i)); } } (); for(inti=0;i<();i++) { (i)); (i).setState("ready"); } etState("ready"); } etState("running"); update(readyList,0); if()>0) { (0)); (5).setState("ready"); } update(waitingList,0); } } elseetState("running"); ()-1).setState("ready"); (0)); update(readyList,0); } } putInMemory(); sub(); display(); (); } publicvoidPManager() { if()>0) if(0).getTime()==0) (); (); for(inti=0;i<();i++) { if(i).getTime()>0) { (i)); } } (); for(inti=0;i<();i++) { (i)); (i).setState("ready"); } intj=0; intm=(); for(;m<6&&j<();m++,j++) { (getFirstW(waitingList)-1)); (m).setState("ready"); update(waitingList,getFirstW(waitingList)-1); } etState("running"); update(readyList,getFirstW(readyList)-1); if()>0) { (getFirstW(waitingList)-1)); ()-1).setState("ready"); } update(waitingList,getFirstW(waitingList)-1); } } else { if()>0) { booleanflag=false; inta=(0).getPriority(); intb=(getFirstW(readyList)-1).getPriority(); if(a>b) { (); (getFirstW(readyList)-1)); flag=true; } if(flag) { (0).setState("ready"); (0)); (); (0)); (0

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論