




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上實驗一、處理器調(diào)度【實習目的】在采用多道程序設(shè)計的系統(tǒng)中,往往有若干個進程同時處于就緒狀態(tài)。當就緒進程個數(shù)大于處理器數(shù)時,就必須依照某種策略來決定哪些進程優(yōu)先占用處理器。本實習模擬在單處理器情況下的處理器調(diào)度,幫助學生加深了解處理器調(diào)度的工作。【實習內(nèi)容】選擇一個調(diào)度算法,實現(xiàn)處理器調(diào)度【實習題目】設(shè)計一個按時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度的程序。要求:(1) 假定系統(tǒng)有五個進程,每個進程用一個進程控制塊PCB來代表。進程控制塊的格式為:l 進程名作為進程的標識。l 指針進程按順序排成循環(huán)隊列,用指針指出下一個進程的進程控制塊的首地址,最后一個進程的指針指出第一個進程的進程
2、控制塊首地址。l 要求運行時間假設(shè)進程需要運行的單位時間數(shù)。l 已運行時間假設(shè)進程已經(jīng)運行的單位時間數(shù),初始值為“0”。l 狀態(tài)有兩種狀態(tài),“就緒”和“結(jié)束”,初始狀態(tài)都為“就緒”,用“R”表示。當一個進程運行結(jié)束后,它的狀態(tài)為“結(jié)束”,用“E”表示。(2)本實習是模擬處理器調(diào)度的功能,所以,對被選中的進程并不實際的啟動運行,而是執(zhí)行:已運行時間+1來模擬進程的一次運行,表示進程已經(jīng)運行過一個單位的時間。(3) 在所設(shè)計的程序中應(yīng)有顯示或打印語句,能顯示或打印每次選中進程的進程名以及運行一次后進程隊列的變化。【程序中使用的數(shù)據(jù)結(jié)構(gòu)及符號說明】1 進程控制塊PCB的結(jié)構(gòu)typedef struc
3、t node char name2; /進程名 int roundtime; /輪轉(zhuǎn)時間片 int runnedtime; /已運行時間 int needtime; /還需運行時間 int count; /計數(shù)器 char state; /進程狀態(tài) struct node *next; /鏈指針PCB;2 主要程序塊Void show();輸出就緒隊列的基本信息Void insert();插入函數(shù)PCB *del();刪除節(jié)點Void create();創(chuàng)建進程PCBVoid roundtime();時間片論算法函數(shù)Void main();主函數(shù)3 特殊符號說明定義以下幾個結(jié)構(gòu)體,令其內(nèi)容初值
4、為空。PCB *ready=NULL; /隊頭指針(等待調(diào)用)PCB *run=NULL; /記錄正在運行的結(jié)點的指針PCB *end=NULL; /記錄已經(jīng)運行完成的結(jié)點的指針PCB *tail=NULL; /隊尾指針【流程圖】輸入進程的基本信息:進程名和時間片初始化進程的其他信息:已經(jīng)運行時間為0,還需時間為總運行時間,計數(shù)器為0,指針為空輸出進程基本信息:show()運行時間片論算法:roundtime()Ready=NULL?YESNO修改進程的基本信息。狀態(tài)改為Y運行時間加1剩余時間減1計數(shù)器加1剩余時間為0NO狀態(tài)改為EYES計數(shù)器置0狀態(tài)改為R節(jié)點到最后輸出基本信息結(jié)束開始【源程
5、序】#include#include#include#includetypedef struct node char name2; /進程名 int roundtime; /輪轉(zhuǎn)時間片 int runnedtime; /已運行時間 int needtime; /還需運行時間 int count; /計數(shù)器 char state; /進程狀態(tài) struct node *next; /鏈指針PCB;PCB *ready=NULL; /隊頭指針(等待調(diào)用)PCB *run=NULL; /記錄正在運行的結(jié)點的指針PCB *end=NULL; /記錄已經(jīng)運行完成的結(jié)點的指針PCB *tail=NULL;
6、 /隊尾指針int n;/*輸出就緒進程隊列*/ void show() PCB *p=ready; /p指向頭指針 if(ready!=NULL) printf(進程名 已運行時間 還需時間 計數(shù)器 時間片 狀態(tài)n); while(p!=NULL) printf( %s %d %d %d %d %cn,p-name,p-runnedtime,p-needtime, p-count,p-roundtime,p-state);p=p-next; /*插入函數(shù)*/void insert(PCB *p) if(tail!=NULL)tail-next=p;tail=p;if(ready=NULL)r
7、eady=p;/*出隊*/PCB *del()PCB *p=ready;ready=ready-next;if(ready=NULL)tail=NULL;p-next=NULL;return p;/*創(chuàng)建進程PCB*/void create() PCB *p;int i,time;char name2;printf(輸入進程名和要求運行的時間:n);for(i=0;iname,name); p-runnedtime=0; /已運行時間開始為0p-needtime=time; /還需要的時間為總時間 p-count=0; /計數(shù)器初值為0p-state=R; /進程初始狀態(tài)為readyp-rou
8、ndtime=1; /時間片論時間為1p-next=NULL; /預處理結(jié)點與隊列斷開,若沒有運行完成,則插入到隊尾;否則就視為刪除insert(p);printf(nnn); printf(*n); printf( 進程信息 n); printf(*n);show();/*時間片輪轉(zhuǎn)法算法*/void roundtime()PCB *tial=NULL;int k=1; /記錄運行次數(shù)while(ready!=NULL) run=del(); run-runnedtime=run-runnedtime+1;run-needtime=run-needtime-1;run-count=run-c
9、ount+1;if(run-needtime=0) /*運行完時將其變?yōu)橥瓿蓱B(tài),插入完成隊列*/ printf(nnn*第%d次運行結(jié)果*n,k);printf(進程%s已完成!n,run-name); end=run; end-state=E;elseif(run-count=run-roundtime) /*如果時間片到*/ printf(n*第%d次運行結(jié)果*n,k);run-count=0; /*記數(shù)器置零*/ run-state=R;/*將進程插入到就緒隊列中等待輪轉(zhuǎn)*/insert(run);k+;show();void main()printf(nn);printf( *n);printf( *時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度*n); printf( *nnnn); printf(輸入創(chuàng)建進程數(shù)目:);scanf(%d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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ù)合同樣本
- 商鋪租賃合同樣本:門面租賃全新范本
- 寒假臨時工雇傭合同書樣本
- 游戲品牌代言合同樣本
- 長租公寓租賃合同全文
- 新媒體廣告推廣合同模板
- 辦公室簡單裝修合同范本
- 個人貸款合同電子版模板
- 企業(yè)間的戰(zhàn)略合作框架合同范本
- 課件人物插圖小學生
- 培訓中的基本學習原理-課件
- 現(xiàn)代文閱讀《有聲電影》答案詳細解析
- 銷售合同模板英文銷售合同模板
- 大學計算機基礎(chǔ)(Windows10+Office2016)PPT完整全套教學課件
- 精素材:描寫植物的好詞好句好段
- 【高中語文】《登岳陽樓》課件17張+統(tǒng)編版高中語文必修下冊
- 華師大版八年級數(shù)學下冊全冊教案
- 四下語文學情分析-2
- 家園合作培養(yǎng)幼兒勞動行為習慣的行動研究
- 中國的能源安全 課件
- 鄭州市某路雨水污水改造工程施工組織設(shè)計
評論
0/150
提交評論