版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
操作系統(tǒng)試驗匯報院系:信息科學與工程學院專業(yè):計算機科學與技術(shù)班級:學號:姓名:指導(dǎo)老師:進程調(diào)度的模擬與內(nèi)存管理試驗?zāi)康脑诓捎枚嗟莱绦蛟O(shè)計的系統(tǒng)中,往往有若干個進程同步處在就緒狀態(tài)。當就續(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è)計準時間片輪轉(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)度和準時間片輪轉(zhuǎn)調(diào)度。每個進程也許有5種狀態(tài):新建(new)、就緒(ready)、運行(running)、阻塞(waiting)、掛起(suspend)。每個狀態(tài)均有一種隊列用來寄存處在該狀態(tài)的進程,不一樣的調(diào)度方略采用不一樣的隊列實現(xiàn)。當創(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)度:當選擇按優(yōu)先權(quán)調(diào)度時,所有隊列都采用優(yōu)先隊列,優(yōu)先隊列采用一種有序鏈表實現(xiàn),進程的優(yōu)先權(quán)值越大代表優(yōu)先級越高,優(yōu)先隊列中的進程按優(yōu)先權(quán)從大到小排列,當新進程插入時根據(jù)該進程的優(yōu)先權(quán)插入到隊列中的合適位置,插入后保持隊列按優(yōu)先權(quán)從大到小排列,假如新進程與隊列中某個進程優(yōu)先權(quán)值相等,則該新進程插到那個進程背面,以遵照先來先服務(wù)的規(guī)則。當要從隊列中取出進程時總是取隊列中第一種進程,由于該進程的優(yōu)先級最高。準時間片輪轉(zhuǎn)調(diào)度:當選擇準時間片輪轉(zhuǎn)調(diào)度時,所有隊列都采用先進先出隊列,先進先出隊列采用一種一般單向鏈表實現(xiàn),當新進程插入時插入到隊列的末尾,當要取進程時取隊首進程,這樣就實現(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)。初始時只有一種空間,當CPU啟動時要分派內(nèi)存,內(nèi)存分派采用最先適應(yīng)算法?;厥諆?nèi)存時假如有相鄰空閑空間,則要進行空閑空間合并。五、部分源程序publicclassdata{privateStringname;//進程的名字privateinttime;//規(guī)定的時間總和privateintpriority;//進程的優(yōu)先權(quán),值越大優(yōu)先級越高privateStringstate;//進程的狀態(tài)privateintstart;privateintlength;//進程所占的內(nèi)存空間privateintisIn;//進程所需內(nèi)存大小進程各項變量的初始化publicvoidsetName(Stringname){=name;}publicvoidsetPriority(intpriority){this.priority=priority;}publicvoidsetState(Stringstate){this.state=state;}publicStringgetName(){return();}publicintgetPriority(){return(this.priority);}publicStringgetState(){return(this.state);}publicvoidsetTime(inttime){this.time=time;}publicintgetTime(){return(this.time);}publicvoidsetLength(intlength){this.length=length;}publicintgetLength(){return(this.length);}publicvoidsetStart(intstart){this.start=start;}publicintgetStart(){return(this.start);}publicvoidsetIsIn(intisIn){this.isIn=isIn;}publicintgetIsIn(){return(this.isIn);}刪除列表中第幾種數(shù)據(jù)publicvoidupdate(ArrayList<Data>list,intnum){sList.clear();for(inti=0;i<list.size();i++){if(i!=num){sList.add(list.get(i));}}list.clear();for(inti=0;i<sList.size();i++){list.add(sList.get(i));}}publicvoidupdate1(ArrayList<Data_Memory>list,intnum){sList1.clear();for(inti=0;i<list.size();i++){if(i!=num){sList1.add(list.get(i));}}list.clear();for(inti=0;i<sList1.size();i++){list.add(sList1.get(i));}}放入內(nèi)存publicvoidputInMemory(){if(runningList.size()>0){ if(runningList.get(0).getIsIn()==0) { for(inti=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()) { update1(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(intj=0;j<readyList.size();j++) { if(readyList.get(j).getIsIn()==0) { for(inti=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(unAssignList,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)存publicvoidputOutMemory(ArrayList<Data>list,intnum){list.get(num).setIsIn(0);booleanflag1=false;booleanflag2=false;for(inti=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.get(i).getLimit()); flag1=true; break; }}for(inti=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; } else { unAssignList.get(i).setLimit(unAssignList.get(i).getLimit()+unAssignList.get(i+1).getLimit()); update1(unAssignList,i+1); } }}if(flag1||flag2){}else{ inti=0; while(unAssignList.get(i).getBase()<list.get(num).getStart()) { i++; } Data_Memorydata=newData_Memory(); data.setBase(list.get(num).getStart()); data.setLimit(list.get(num).getLength()); sList1.clear(); for(intj=0;j<i;j++) { sList1.add(unAssignList.get(j)); } sList1.add(data); for(intj=i;j<unAssignList.size();j++) { sList1.add(unAssignList.get(j)); } unAssignList.clear(); for(intj=0;j<sList1.size();j++) { unAssignList.add(sList1.get(j)); } }}對內(nèi)存管理調(diào)度的操作privateclassMyRendererextendsDefaultListCellRenderer{publicComponentgetListCellRendererComponent(JListlist,Objectvalue,intindex,booleanisSelected,booleancellHasFocus){ super.getListCellRendererComponent(list,value,index,isSelected,cellHasFocus); setBackground(Color.gray); for(inti=0;i<unAssignList.size();i++) { for(intj=unAssignList.get(i).getBase()+6;j<unAssignList.get(i).getLimit()+unAssignList.get(i).getBase()+6;j++) { if(index==j) { setBackground(Color.white);//當沒有內(nèi)容變?yōu)榘咨? } } } returnthis;}}publicvoidtimeManager(){//去掉time==0的,從waiting隊列加入新的進程,排序,調(diào)整waitingList加入runningLIst//去掉time==0的if(runningList.size()>0)if(runningList.get(0).getTime()==0)runningList.clear();sList.clear();for(inti=0;i<readyList.size();i++){if(readyList.get(i).getTime()>0){sList.add(readyList.get(i));}}readyList.clear();for(inti=0;i<sList.size();i++){readyList.add(sList.get(i));readyList.get(i).setState("ready");}//從waiting隊列加入新的進程intj=0;intm=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();for(inti=j;i<waitingList.size();i++){sList.add(waitingList.get(i)); }waitingList.clear();for(inti=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");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("running");readyList.get(readyList.size()-1).setState("ready");runningList.add(readyList.get(0));update(readyList,0);}}putInMemory();sub();display();jtf1.grabFocus();}publicvoidPManager(){ if(runningList.size()>0) if(runningList.get(0).getTime()==0) runningList.clear(); sList.clear(); for(inti=0;i<readyList.size();i++) { if(readyList.get(i).getTime()>0) { sList.add(readyList.get(i)); } } readyList.clear(); for(inti=0;i<sList.size();i++) { readyList.add(sList.get(i)); readyList.get(i).setState("ready"); } intj=0; intm=readyList.size(); for(;m<6&&j<waitingList.size();m++,j++) { readyList.add(waitingList.get(getFirstW(waitingList)-1)); readyList.get(m).setState("ready"); update(waitingList,getFirstW(waitingList)-1); } //調(diào)整waitingList //加入runningLIst if(runningList.size()==0) { if(readyList.size()>0) { runningList.add(readyList.get(getFirstW(readyList)-1)); runningList.get(0).setState("running"); update(readyList,getFirstW(readyList)-1); if(waitingList.size()>0) { readyList.add(waitingList.get(getFirstW(waitingList)-1)); readyList.get(readyList.size()-1).setState("ready"); } update(waitingList,getFirstW(waitingList)-1); } } else { if(readyList.size()>0) { booleanflag=false; inta=runningList.get(0).getPriority(); int
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生院便民服務(wù)制度
- 衛(wèi)生院反詐工作制度
- 鎮(zhèn)級衛(wèi)生院控煙勸阻制度
- 衛(wèi)生計生委調(diào)研工作制度
- 衛(wèi)生站流動人口管理制度
- 魚攤販衛(wèi)生管理制度
- 饅頭店衛(wèi)生管理制度
- 新冠肺炎衛(wèi)生室制度
- 商市場衛(wèi)生管理制度
- 學校各項衛(wèi)生制度
- 融資管理辦法國資委
- GB/T 45870.1-2025彈簧測量和試驗參數(shù)第1部分:冷成形圓柱螺旋壓縮彈簧
- 倉庫物料儲存知識培訓課件
- 數(shù)字化轉(zhuǎn)型下的人力資源管理創(chuàng)新-洞察及研究
- 門診部醫(yī)保內(nèi)部管理制度
- (高清版)DB62∕T 2637-2025 道路運輸液體危險貨物罐式車輛 金屬常壓罐體定期檢驗規(guī)范
- 化糞池清掏疏通合同范本5篇
- 物理學(祝之光) 靜電場1學習資料
- 個人項目投資協(xié)議合同范例
- 全球科普活動現(xiàn)狀及發(fā)展趨勢
- 2024年重慶市中考語文考試說明
評論
0/150
提交評論