操作系統(tǒng)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一進(jìn)程管理_第1頁
操作系統(tǒng)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一進(jìn)程管理_第2頁
操作系統(tǒng)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一進(jìn)程管理_第3頁
操作系統(tǒng)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一進(jìn)程管理_第4頁
操作系統(tǒng)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)一進(jìn)程管理_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、、目的實(shí)驗(yàn)進(jìn)程管理進(jìn)程調(diào)度是處理機(jī)管理的核心內(nèi)容。 本實(shí)驗(yàn)要求編寫和調(diào)試一個(gè)簡(jiǎn)單的進(jìn)程調(diào)度程序。加深理解有關(guān)進(jìn)程控制塊、進(jìn)程隊(duì)列的概念,并體會(huì)和了解進(jìn)程調(diào)度算法的具體實(shí)施辦法。通過本實(shí)驗(yàn)、實(shí)驗(yàn)內(nèi)容及要求1設(shè)計(jì)進(jìn)程控制塊 PCB的結(jié)構(gòu)(PCB結(jié)構(gòu)通常包括以下信息:進(jìn)程名(進(jìn)程 輪轉(zhuǎn)時(shí)間片、進(jìn)程所占用的CPU時(shí)間、進(jìn)程的狀態(tài)、當(dāng)前隊(duì)列指針等。可根據(jù)實(shí)驗(yàn)的不同,內(nèi)容可以作適當(dāng)?shù)脑鰟h) 。為了便于處理,程序中的某進(jìn)程運(yùn)行時(shí)間以時(shí)間片為單位計(jì)算。各進(jìn)程的輪 轉(zhuǎn)時(shí)間數(shù)以及進(jìn)程需運(yùn)行的時(shí)間片數(shù)的初始值均由用戶給定。2、 系統(tǒng)資源(門rw),共有w類,每類數(shù)目為ri-rw。隨 機(jī)產(chǎn)生n進(jìn)程P(id,s(j,k

2、), t),0=i=n,0=j=m,0=k=dt 為總運(yùn)行時(shí)間,在運(yùn)行過程中,會(huì)隨機(jī)申請(qǐng)新的資源。3、 每個(gè)進(jìn)程可有三個(gè)狀態(tài)(即就緒狀態(tài)W、運(yùn)行狀態(tài) R等待或阻塞狀態(tài) B),并假設(shè)初始狀態(tài)為 就緒狀態(tài)。建立進(jìn)程就緒隊(duì)列。4、編制進(jìn)程調(diào)度算法:時(shí)間片輪轉(zhuǎn)調(diào)度算法本程序用該算法對(duì) n個(gè)進(jìn)程進(jìn)行調(diào)度,進(jìn)程每執(zhí)行一次,CPU時(shí)間片數(shù)加1,進(jìn)程還需要的時(shí)間片數(shù)減 1。在調(diào)度算法中,采用固定時(shí)間片(即:每執(zhí)行一次進(jìn)程,該進(jìn)程的執(zhí)行時(shí)間片數(shù)為已執(zhí)行了1個(gè)單位),這時(shí),CPU時(shí)間片數(shù)加1,進(jìn)程還需要的時(shí)間片數(shù)減1,并排列到就緒隊(duì)列的尾上。ID)、進(jìn)程優(yōu)先數(shù)、PCB結(jié)構(gòu)的三、實(shí)驗(yàn)環(huán)境操作系統(tǒng)環(huán)境: Window

3、s 系統(tǒng)。 編程語言: C#。四、實(shí)驗(yàn)思路和設(shè)計(jì)1、程序流程圖2、主要程序代碼/PCB 結(jié)構(gòu)體 struct pcb public int id; public int ra; public int rb; public int rc; public int ntime; public int rtime;/ 進(jìn)程 ID/ 所需資源/ 所需資源/ 所需資源A 的數(shù)量B的數(shù)量C的數(shù)量/ 所需的時(shí)間片個(gè)數(shù)/ 已經(jīng)運(yùn)行的時(shí)間片個(gè)數(shù)public char state; /進(jìn)程狀態(tài), W (等待)、R (運(yùn)行)、B (阻塞) /public int next;ArrayList hready = new

4、 ArrayList();ArrayList hblock = new ArrayList();Random random = new Random();/ArrayList p = new ArrayList();int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;/m 為要模擬的進(jìn)程個(gè)數(shù), n 為初始化進(jìn)程個(gè)數(shù)/r 為可隨機(jī)產(chǎn)生的進(jìn)程數(shù)( r=m-n )/a , b , c分別為A, B, C三類資源的總量/i為進(jìn)城計(jì)數(shù),i=1n/h 為運(yùn)行的時(shí)間片次數(shù), time1Inteval 為時(shí)間片大小 (毫秒)/ 對(duì)進(jìn)程進(jìn)行初始化,

5、建立就緒數(shù)組、阻塞數(shù)組。public void input()/ 對(duì)進(jìn)程進(jìn)行初始化,建立就緒隊(duì)列、阻塞隊(duì)列 a = ; b = ;c = ; a1 = a; b1 = b; c1 = c;r = m - n; time1Inteval = ;= time1Inteval;for (i = 1; i = 0 & (b - = 0 & (c - = 0) a = a - ; b = b - ; c = c - ;加入就緒隊(duì)列= W; (jincheng);/ else= B;(jincheng);/加入阻塞隊(duì)列當(dāng)前進(jìn)程狀態(tài):/ 從數(shù)組起始地址開始輸出該數(shù)組的內(nèi)容 public void disp(

6、ArrayList list)ArrayList list1 = new ArrayList(); list1 = list;if 0)for (int j = 0; j ; j+) pcb p = (pcb)list1j;Hrn); elsernt該隊(duì)列中沒有進(jìn)程! rn);/ 輸出就緒數(shù)組和阻塞數(shù)組的信息 public void outputall()CPU 運(yùn)行了: + () + 次rn);rn* 當(dāng)前就緒隊(duì)列的信息!進(jìn)程ID進(jìn)程狀態(tài) A資源數(shù)B資源數(shù)C資源數(shù) 所需時(shí)間片 已運(yùn)行時(shí)間片); disp(hready);* 當(dāng)前就阻塞列的信息! *);進(jìn)程ID進(jìn)程狀態(tài) A資源數(shù)B資源數(shù) C資

7、源 所需時(shí)間片已運(yùn)行時(shí)間片);disp(hblock);/ 運(yùn)行就緒數(shù)組的頭進(jìn)程,運(yùn)行一個(gè)時(shí)間片,輪轉(zhuǎn)一個(gè)時(shí)間片,時(shí)間片輪轉(zhuǎn)調(diào)度算法 public void running()ArrayList hready1 = new ArrayList(); hready1 = hready; pcb p1 = new pcb(); p1=(pcb)hready10;=R; = + 1;h=h+1;rn當(dāng)前正在運(yùn)行進(jìn)程ID是:+ + rn);rn進(jìn)程ID進(jìn)程狀態(tài) A資源數(shù)B資源數(shù)C資源數(shù) 所需時(shí)間片已運(yùn)行時(shí)間片rn);+ + + + + + + + + + if =的進(jìn)程已經(jīng)完成! rn); a = a

8、 + ;b = b + ;c = c + ;(0); else=W;(p1);(0);/ 檢測(cè)當(dāng)前資源數(shù)目是否滿足阻塞數(shù)組里進(jìn)程的需求 public void testblock()ArrayList hblock1 = new ArrayList();hblock1 = hblock;for (int m = 0; m = 0) & (b - = 0) & (c -= 0)=W;(p1); a = a - ; b = b - ;c = c - ;ID 號(hào)為: + + 的進(jìn)程由阻塞隊(duì)列轉(zhuǎn)入就緒隊(duì)列 rn); (m);m-;/ 檢測(cè)是否有新的進(jìn)程產(chǎn)生,隨機(jī)產(chǎn)生新進(jìn)程 public void te

9、stnew()int t;if (r0)/r 為隨機(jī)產(chǎn)生的進(jìn)程數(shù)目t = (9) + 1;if (t = 0 & (c -= 0)所需時(shí)間片數(shù): + ; if (a - = 0 & (b - c = c - ;= W; 進(jìn)程狀態(tài)為: + ;(jincheng);/ 加入就緒隊(duì)列 資源滿足新進(jìn)程請(qǐng)求,該進(jìn)程進(jìn)入就緒隊(duì)列rn); else= B;(jincheng);/ 加入阻塞隊(duì)列進(jìn)程狀態(tài)為: + ; 資源不滿足新進(jìn)程請(qǐng)求,該進(jìn)程進(jìn)入阻塞隊(duì)列rn);r = r - 1;/ 系統(tǒng)三類資源變化情況的顯示public void rescore()/ 系統(tǒng)三類資源變化情況的顯示if (a a1) = (

10、); if (a = 0 & a b1) = (); if (b = 0 & b c1) = (); if (c = 0 & c 0)outputall(); running(); testblock(); testnew(); rescore(); else= false;= ();= ();= ();rnrn);/ 計(jì)時(shí)器觸發(fā)時(shí)間片輪轉(zhuǎn)調(diào)度算法private void timer1_Tick(object sender, EventArgs e) runFcfs();/ 開始模擬按鈕單擊執(zhí)行函數(shù)private void button1_Click(object sender, EventA

11、rgs e) runmain();= false;= false;= false;= false;= false;= false;= false;= false;= false;= false;/ 清除屏幕按鈕單擊執(zhí)行函數(shù)private void button2_Click(object sender, EventArgs e) 一 HH一 HH一 HHHHHHHHHHHHHH= true; = true; = true; = true; = true; = true;= true;/ 運(yùn)行的主函數(shù) public void runmain() input();= true ;1匪進(jìn)程管理0岡資

12、徹孌化載心資源頊化替況立土進(jìn)程ID : 1g蟄資硯數(shù)I : 3昕需T費(fèi)鎭數(shù)目:3 祈帝時(shí)間片數(shù):1 當(dāng)前講建伏畜:V 立應(yīng)程JD : E 祈壽礦鎭數(shù)目:4 祈SE岐詛數(shù)a : G 昕歳資誼數(shù)a ; I 祈需時(shí)間片擻:q 魚前進(jìn)S優(yōu)態(tài):卅 丟生逆證ID : 3 昕需熾詛數(shù)目:3 祈罰瓚liS數(shù)目;I 祈需數(shù)目: 祈需時(shí)間片謝:4 當(dāng)前進(jìn)程対| = 一CTU運(yùn)行了 : 0次*!艸*則當(dāng)前就緒臥列的信息? *K*K*# 進(jìn)程IT進(jìn)程後態(tài)傲譜數(shù)所希時(shí)問片已運(yùn)訂時(shí)問片1I3231藝L40140(杯艸*當(dāng)前就凰塞?II的信息? *逬程IU試程狀態(tài)瀕妙瞞曲敬C資瀉所希時(shí)間F LS運(yùn)行旳問片3 B31540當(dāng)

13、罰正在運(yùn)冇逬程1魂1a驗(yàn) S程狀態(tài) 礦鴻數(shù)R費(fèi)攜數(shù)C費(fèi)源數(shù)所需吋間片巳運(yùn)行時(shí)間片檯擬的遊程總塾簾源E的總資通匚的總埶時(shí)1問片抵度開始梗擬i潘陵13、運(yùn)行界面和運(yùn)行結(jié)果界面中,可以任意設(shè)定需要模擬的進(jìn)程總數(shù)(如5),初始化進(jìn)程個(gè)數(shù)(如 3),還有A、B C三類資源的總數(shù)(如 10、10、10)。為了方便顯示,還可以設(shè)定時(shí)間片的長度(如 500毫秒)。除此之外, 在運(yùn)行過程中,所有的資源都是隨機(jī)生成的,并且其中新進(jìn)程的產(chǎn)生也是隨機(jī)的,但是產(chǎn)生的進(jìn)程總數(shù) 不會(huì)多于開始設(shè)定的模擬的進(jìn)程總數(shù),以防止不斷產(chǎn)生新進(jìn)程,程序不斷運(yùn)行。在顯示窗口的上方,還 會(huì)實(shí)時(shí)顯示資源的變化情況,方便對(duì)運(yùn)行的觀察。當(dāng)運(yùn)行結(jié)束后,可以通過工具欄中的顯示選項(xiàng)中的保 存結(jié)果按鈕,將結(jié)果保存成txt文件格式,方便運(yùn)行后的結(jié)果分析。五、心得體會(huì)本次實(shí)驗(yàn),我的任務(wù)是設(shè)計(jì)一個(gè)允許n個(gè)進(jìn)程并發(fā)運(yùn)行的進(jìn)程管理模擬系統(tǒng)。該系統(tǒng)包括有簡(jiǎn)單的進(jìn)程控制、同步與通訊機(jī)構(gòu),系統(tǒng)在運(yùn)行過程中能顯示各進(jìn)程的狀態(tài)及有關(guān)參數(shù)的變化情況,從而觀察 諸進(jìn)程的運(yùn)行過程及系統(tǒng)的管理過程,我是用C#寫的,在我的電腦能夠運(yùn)行通過,雖不能盡善盡美,也基本能實(shí)現(xiàn)老師的要求。兩個(gè)星期的實(shí)驗(yàn),雖然時(shí)間有點(diǎn)短,但我也收獲不少,這次實(shí)驗(yàn),加深了我對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論