設(shè)計并實現(xiàn)一個模擬進(jìn)程狀態(tài)轉(zhuǎn)換及其相應(yīng)PCB組織結(jié)構(gòu)變化的程序_第1頁
設(shè)計并實現(xiàn)一個模擬進(jìn)程狀態(tài)轉(zhuǎn)換及其相應(yīng)PCB組織結(jié)構(gòu)變化的程序_第2頁
設(shè)計并實現(xiàn)一個模擬進(jìn)程狀態(tài)轉(zhuǎn)換及其相應(yīng)PCB組織結(jié)構(gòu)變化的程序_第3頁
設(shè)計并實現(xiàn)一個模擬進(jìn)程狀態(tài)轉(zhuǎn)換及其相應(yīng)PCB組織結(jié)構(gòu)變化的程序_第4頁
設(shè)計并實現(xiàn)一個模擬進(jìn)程狀態(tài)轉(zhuǎn)換及其相應(yīng)PCB組織結(jié)構(gòu)變化的程序_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 實驗一:熟悉Linux系統(tǒng)實驗?zāi)康模鹤孕芯幹颇M程序,通過形象化的狀態(tài)顯示,使學(xué)生理解進(jìn)程的概念、進(jìn)程之間的狀態(tài)轉(zhuǎn)換及其所帶來的PCB內(nèi)容 、組織的變化,理解進(jìn)程與其PCB間的一一對應(yīng)關(guān)系。實驗要求:設(shè)計并實現(xiàn)一個模擬進(jìn)程狀態(tài)轉(zhuǎn)換及其相應(yīng)PCB組織結(jié)構(gòu)變化的程序;獨(dú)立設(shè)計、編寫、調(diào)試程序;程序界面應(yīng)能反映出在模擬條件下,進(jìn)程之間狀態(tài)轉(zhuǎn)換及其對應(yīng)的PCB組織的變化。進(jìn)程的狀態(tài)模型(三狀態(tài)、五狀態(tài)、七狀態(tài)或其它)可自行選擇運(yùn)行Running就緒Ready等待BlockedjDispatchkTimeoutlEventWaitmEventOccurs基本狀態(tài)間的轉(zhuǎn)換代碼書寫要規(guī)范,要適當(dāng)?shù)丶尤胱⑨?/p>

2、;鼓勵在實驗中加入新的觀點(diǎn)或想法,并加以實現(xiàn);認(rèn)真進(jìn)行預(yù)習(xí),完成預(yù)習(xí)報告;實驗完成后,要認(rèn)真總結(jié),完成實驗報告。程序流程圖:說明(1)上為運(yùn)行結(jié)果,x<y>:x為進(jìn)程號;y為進(jìn)程結(jié)束剩余時間片。 (2)程序中使用隊列數(shù)據(jù)結(jié)構(gòu),并以結(jié)構(gòu)體process(進(jìn)程)作為隊列元素。 (3) 程序自動進(jìn)行時間片分配,但每次運(yùn)行一個進(jìn)程前需要進(jìn)行阻塞判斷,由操作員手動輸入。 (4)程序在等待隊列中進(jìn)程小于4時,自動將阻塞隊列中的進(jìn)程釋放出來。 程序源代碼:#include<iostream>#include<queue>#include<windows.h>u

3、sing namespace std;struct process int id; int hp; process() process(int a,int b) id=a; hp=b; ; queue<process> re,bl,ru; int main() void show(queue<process> re,queue<process> ru,queue<process> bl); process p1(1,2),p2(2,1),p3(3,1),p4(4,3),p5(5,2),p6(6,1); re.push(p1); re.push(p

4、2); re.push(p3); bl.push(p4); bl.push(p5); bl.push(p6); process x;char ch;int n; cout<<"初始化中." Sleep(2000); cout<<"." Sleep(2000); cout<<"."<<endl<<endl; show(re,ru,bl); cout<<endl<<"開始執(zhí)行!"<<endl<<endl; whi

5、le(!re.empty() x=re.front(); re.pop(); ru.push(x); x=ru.front(); show(re,ru,bl); cout<<endl<<"是否阻塞?(y/n)"<<endl; ch=getchar(); getchar(); if(ch='y') x=ru.front(); ru.pop(); bl.push(x); else if(ch='n') x.hp-; ru.front().hp=x.hp; if(x.hp!=0) x=ru.front(); ru

6、.pop(); re.push(x); else ru.pop(); else cout<<"輸入有誤"<<endl; n=re.size(); while(n<4) if(bl.empty()break; x=bl.front(); bl.pop(); re.push(x); n+; return 0; void show(queue<process> re,queue<process> ru,queue<process> bl) cout<<"運(yùn)行任務(wù):" process

7、y; if(ru.empty()cout<<"空"<<endl; else y=ru.front(); ru.pop(); cout<<y.id<<"("<<y.hp<<")"<<endl; cout<<"隊列中的任務(wù):" if(!re.empty() while(!re.empty() y=re.front(); re.pop(); cout<<y.id<<"("<<y.hp<<") " else cout<<"空" cout<<endl<<"阻塞中的任務(wù):" if(!bl.empty() while(!bl.empty() y=bl.front(); bl.pop(); co

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論