批處理作業(yè)調(diào)度(共6頁(yè))_第1頁(yè)
批處理作業(yè)調(diào)度(共6頁(yè))_第2頁(yè)
批處理作業(yè)調(diào)度(共6頁(yè))_第3頁(yè)
批處理作業(yè)調(diào)度(共6頁(yè))_第4頁(yè)
批處理作業(yè)調(diào)度(共6頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上批處理系統(tǒng)的作業(yè)調(diào)度1實(shí)驗(yàn)?zāi)康募由顚?duì)作業(yè)概念的理解;深入了解批處理系統(tǒng)如何組織作業(yè)、管理作業(yè)和調(diào)度作業(yè);2實(shí)驗(yàn)預(yù)備知識(shí)作業(yè)的概念;作業(yè)的創(chuàng)建;作業(yè)的調(diào)度。3實(shí)驗(yàn)內(nèi)容編寫程序完成批處理系統(tǒng)中的作業(yè)調(diào)度,要求采用響應(yīng)比高者優(yōu)先的作業(yè)調(diào)度算法。實(shí)驗(yàn)具體包括:首先確定作業(yè)控制塊的內(nèi)容,作業(yè)控制塊的組成方式;然后完成作業(yè)調(diào)度;最后編寫主函數(shù)對(duì)所作工作進(jìn)程測(cè)試。4提示與講解操作系統(tǒng)根據(jù)允許并行工作的道數(shù)和一定的算法從系統(tǒng)中選取若干作業(yè)把它們裝入主存儲(chǔ)器,使它們有機(jī)會(huì)獲得處理器運(yùn)行,這項(xiàng)工作被稱為“作業(yè)調(diào)度”。實(shí)現(xiàn)這部分功能的程序就是“作業(yè)調(diào)度程序”。作業(yè)調(diào)度的實(shí)現(xiàn)主要有兩個(gè)問(wèn)題,

2、一個(gè)是如何將系統(tǒng)中的作業(yè)組織起來(lái);另一個(gè)是如何進(jìn)行作業(yè)調(diào)度。為了將系統(tǒng)中的作業(yè)組織起來(lái),需要為每個(gè)進(jìn)入系統(tǒng)的作業(yè)建立檔案以記錄和作業(yè)相關(guān)的信息,例如作業(yè)名、作業(yè)所需資源、作業(yè)執(zhí)行時(shí)間、作業(yè)進(jìn)入系統(tǒng)的時(shí)間、作業(yè)信息在存儲(chǔ)器中的位置、指向下一個(gè)作業(yè)控制塊的指針等信息。這個(gè)記錄作業(yè)相關(guān)信息的數(shù)據(jù)塊稱為作業(yè)控制塊(JCB),并將系統(tǒng)中等待作業(yè)調(diào)度的作業(yè)控制塊組織成一個(gè)隊(duì)列,這個(gè)隊(duì)列稱為后備隊(duì)列。一個(gè)作業(yè)全部信息進(jìn)入系統(tǒng)后,就為其建立作業(yè)控制塊,并掛入后備隊(duì)列。當(dāng)進(jìn)行作業(yè)調(diào)度時(shí),從后備隊(duì)列中查找選擇作業(yè)。由于實(shí)驗(yàn)中沒(méi)有實(shí)際作業(yè),作業(yè)控制塊中的信息內(nèi)容只使用了實(shí)驗(yàn)中需要的數(shù)據(jù)。作業(yè)控制塊中首先應(yīng)該包括作業(yè)

3、名;其次是作業(yè)所需資源,根據(jù)需要,實(shí)驗(yàn)中只包括需要主存的大?。ú捎每梢苿?dòng)的動(dòng)態(tài)分區(qū)方式管理主存,作業(yè)大小就是需要主存的大?。⑿枰蛴C(jī)的數(shù)量和需要磁帶機(jī)的數(shù)量;采用響應(yīng)比作業(yè)調(diào)度算法,為了計(jì)算響應(yīng)比,還需要有作業(yè)的估計(jì)執(zhí)行時(shí)間、作業(yè)在系統(tǒng)中的等待時(shí)間;另外,指向下一個(gè)作業(yè)控制塊的指針必不可少。實(shí)驗(yàn)中,作業(yè)控制塊及隊(duì)列的數(shù)據(jù)結(jié)構(gòu)定義如下。typedef struct jcbchar name4; /作業(yè)名 int length; /作業(yè)長(zhǎng)度,所需主存大小 int printer; /作業(yè)執(zhí)行所需打印機(jī)的數(shù)量 int tape; /作業(yè)執(zhí)行所需磁帶機(jī)的數(shù)量 int runtime; /作業(yè)估計(jì)執(zhí)

4、行時(shí)間 int waittime;/作業(yè)在系統(tǒng)中的等待時(shí)間 int next;/指向下一個(gè)作業(yè)控制塊的指針JCB /作業(yè)控制塊類型定義存放作業(yè)控制塊的區(qū)域:#define n 10/假定系統(tǒng)中可容納的作業(yè)數(shù)量為nJCB jobtable10;/作業(yè)表int jobcount;/系統(tǒng)內(nèi)現(xiàn)有作業(yè)數(shù)量將作業(yè)控制塊組織成一個(gè)隊(duì)列,實(shí)驗(yàn)中采用靜態(tài)鏈表的方式模擬作業(yè)的后備隊(duì)列,如圖2.1所示。作業(yè)隊(duì)列頭指針定義: int *head;圖2.1 采用響應(yīng)比高者優(yōu)先算法的作業(yè)調(diào)度程序的流程圖確定作業(yè)組織方式之后,就要開(kāi)始考慮如何進(jìn)行作業(yè)調(diào)度。盡管不同的計(jì)算機(jī)系統(tǒng)可以采用不同的調(diào)度原則和調(diào)度算法,但是都必須遵循

5、一個(gè)必要條件,即系統(tǒng)現(xiàn)有的尚未分配的資源可以滿足被選作業(yè)的資源要求。就是說(shuō),所有的作業(yè)調(diào)度都是按照一定的算法,從滿足必要條件的作業(yè)中選擇一部分作業(yè)裝入主存儲(chǔ)器。實(shí)驗(yàn)中,主存采用可移動(dòng)的動(dòng)態(tài)分區(qū)管理方法,即只要主存空閑區(qū)總和比作業(yè)大就可以滿足作業(yè)對(duì)主存的需求;對(duì)打印機(jī)和磁帶機(jī)這兩種獨(dú)占型設(shè)備采用靜態(tài)分配法,即作業(yè)執(zhí)行前必須獲得所需資源,并且執(zhí)行完才歸還。常用的作業(yè)調(diào)度算法有先來(lái)先服務(wù)算法、計(jì)算時(shí)間短的作業(yè)優(yōu)先算法、響應(yīng)比高者優(yōu)先算法、優(yōu)先數(shù)調(diào)度算法和均衡調(diào)度算法。實(shí)驗(yàn)中采用響應(yīng)比高者優(yōu)先算法,響應(yīng)比的定義為:響應(yīng)比=作業(yè)的等待時(shí)間/作業(yè)估計(jì)執(zhí)行時(shí)間采用響應(yīng)比高者優(yōu)先調(diào)度算法,進(jìn)行調(diào)度時(shí)必須計(jì)算出

6、系統(tǒng)中的所有滿足必要條件作業(yè)的響應(yīng)比;從中選擇響應(yīng)比最高的一個(gè)作業(yè)裝入主存儲(chǔ)器、分配資源,由于是實(shí)驗(yàn),所以就用將作業(yè)的作業(yè)控制塊出隊(duì),并輸出作業(yè)的作業(yè)名代替裝入主存儲(chǔ)器,同時(shí)修改系統(tǒng)的資源數(shù)量;用同樣方法選擇第二個(gè)、第三個(gè)直到不再有滿足必要條件的作業(yè)。采用響應(yīng)比高者優(yōu)先算法的作業(yè)調(diào)度程序流程圖如圖2.1所示。模擬程序中,首先要假設(shè)系統(tǒng)的資源情況,假設(shè)系統(tǒng)資源只有主存(memory)64MB(以KB為單位分配)、磁帶機(jī)(tape)4臺(tái)和打印機(jī)(printer)2臺(tái);然后,手工輸入某個(gè)時(shí)刻系統(tǒng)中的各個(gè)作業(yè)情況;最后進(jìn)行作業(yè)調(diào)度,并將結(jié)果輸出。5課外題將上述實(shí)驗(yàn)中的作業(yè)調(diào)度算法改為短作業(yè)優(yōu)先調(diào)度算法

7、重新完成上述工作。6參考程序#include "string.h"#define n 10/假定系統(tǒng)中可容納的作業(yè)數(shù)量為n typedef struct jcb char name4;/作業(yè)名 int length;/作業(yè)長(zhǎng)度,所需主存大小 int printer;/作業(yè)執(zhí)行所需打印機(jī)的數(shù)量 int tape;/作業(yè)執(zhí)行所需磁帶機(jī)的數(shù)量 int runtime;/作業(yè)估計(jì)執(zhí)行時(shí)間 int waittime;/作業(yè)在系統(tǒng)中的等待時(shí)間 int next;/指向下一個(gè)作業(yè)控制塊的指針 JCB;/作業(yè)控制塊類型定義 int head; /作業(yè)隊(duì)列頭指針定義 int tape,pri

8、nter; long memory; JCB jobtablen;/作業(yè)表 int jobcount=0;/系統(tǒng)內(nèi)現(xiàn)有作業(yè)數(shù)量 shedule( ) /作業(yè)調(diào)度函數(shù) float xk,k; int p,q,s,t; do p=head; q=s=-1; k=0; while(p!=-1) if(jobtablep.length<=memory&&jobtablep.tape<=tape&&jobtablep.printer<=printer) /系統(tǒng)可用資源是否滿足作業(yè)需求 xk=(float)(jobtablep.waittime)/jobt

9、ablep.runtime; if(q=0|xk>k)/滿足條件的第一個(gè)作業(yè)或者作業(yè)q的響應(yīng)比小于作業(yè)p的響應(yīng)比 k=xk;/記錄響應(yīng)比 q=p; t=s; /if /if s=p; p=jobtablep.next;/指針p后移 /while if(q!=-1) if(t=-1)/是作業(yè)隊(duì)列的第一個(gè) head=jobtablehead.next; else jobtablet.next=jobtableq.next; /為作業(yè)q分配資源:分配主存空間;分配磁帶機(jī);分配打印機(jī) memory=memory-jobtableq.length; tape=tape-jobtableq.tape

10、; printer=printer-jobtableq.printer; printf("選中作業(yè)的作業(yè)名:%sn",); while(q!=-1); /作業(yè)調(diào)度函數(shù)結(jié)束main( ) char name4; int size,tcount,pcount,wtime,rtime; int p; /系統(tǒng)數(shù)據(jù)初始化 memory=65536; tape=4; printer=2; head=-1; printf("輸入作業(yè)相關(guān)數(shù)據(jù)(以作業(yè)大小為負(fù)數(shù)停止輸入):n"); /輸入數(shù)據(jù),建立作業(yè)隊(duì)列 printf("輸入作業(yè)名

11、、作業(yè)大小、磁帶機(jī)數(shù)、打印機(jī)數(shù)、等待時(shí)間、估計(jì)執(zhí)行時(shí)間n"); scanf("%s%d%d %d %d %d",name,&size,&tcount,&pcount,&wtime,&rtime); while(size!=-1) /創(chuàng)建JCB if(jobcount<n)p=jobcount; else printf("無(wú)法再創(chuàng)建作業(yè)n"); break; jobcount+; /填寫該作業(yè)相關(guān)內(nèi)容 strcpy(,name); jobtablep.length=size; jobtablep.printer=pcount; jobtablep.tape=tcount; jobtablep.runtime=rtime; jobtablep.waittime=wtime; /掛入作業(yè)隊(duì)列隊(duì)首 jobtablep.next=head; head=p; / 輸入一個(gè)作業(yè)數(shù)據(jù) printf("

溫馨提示

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