freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

最新進程模擬調(diào)度算法課程設計-資料下載頁

2025-06-24 01:16本頁面
  

【正文】 入進程的個數(shù): )。 scanf(%d,amp。n)。 create(n)。 prt()。}.短作業(yè)調(diào)度.算法思想 短作業(yè)優(yōu)先調(diào)度算法是指對短作業(yè)進行調(diào)度的算法。它從后備隊列總選擇一個或若干個運行時間最短的作業(yè),將他們調(diào)入內(nèi)存運行。.算法流程圖:開始輸入進程名就緒隊列空?結(jié)束 Y N按時間服務進行排序執(zhí)行程序短作業(yè)優(yōu)先算法流程圖.程序代碼include include include typedef struct node{ char name[10]。 /*進程名*/ int cputime。 /*占用cpu時間*/ int needtime。 /*要求運行時間*/ char state。 /*狀態(tài)*/ struct node *next。 /*指針*/}PCB。PCB *ready, *run, *finish。 //就緒、執(zhí)行、結(jié)束指針int N。 //進程數(shù)量void print() //輸出函數(shù){ PCB *p。 printf( NAME CPUTIME NEEDTIME STATUS\n)。 if(run != NULL) printf( %10s%10d%10d %c\n, runname, runcputime, runneedtime, runstate)。 /*輸出執(zhí)行的進程的信息*/ p=ready。 while(p != NULL) { printf( %10s%10d%10d %c\n, pname, pcputime, pneedtime, pstate)。 /*輸出就緒進程的信息*/ p=pnext。 } p=finish。 while(p != NULL) { printf( %10s%10d%10d %c\n, pname, pcputime, pneedtime, pstate)。 /*輸出結(jié)束隊列的信息*/ p=pnext。 } getchar()。 /*使用getchar()函數(shù)可以讓輸出時停留畫面, 等待人按回車繼續(xù)*/} void insert(PCB *q) /*插入新進程,把進程按進程到來時間大小排序*/{ PCB *p1,*s,*r。 int b。 s=q。 /*指針s指向新要插入的進程*/ p1=ready。 /*指針p1指向原來的進程隊列的隊首*/ r=p1。 /*使用指針r是指向p1前面的進程*/ b=1。 while((p1!=NULL)amp。amp。b) if(p1needtimesneedtime) { r=p1。 p1=p1next。 } /*新進程的開始時間大,則p1 指向下一個進程繼續(xù)比*/ else b=0。 if(r!=p1) { rnext=s。 snext=p1。 } /*新進程找到位置,插在r和p1之間*/ else { snext=p1。 ready=s。 } /*新進程的開始時間按最小,插在隊首,并修改就緒隊首ready指針*/} void create() { PCB *p。 int i。 ready=NULL。 run=NULL。 finish=NULL。 printf(Please enter the name and time of PCB:\n)。 /*輸入進程名、運行時間和開始時間*/ for(i=0。iN。i++) { p=(PCB *)malloc(sizeof(PCB))。 /*為新進程開辟空間*/ scanf(%s,pname)。 /*輸入進程名*/ scanf(%d,amp。pneedtime)。 /*輸入進程要求運行時間*/ pcputime=0。 pstate=39。W39。 /*表示就緒隊列中未在隊首先執(zhí)行,但也是就緒狀態(tài)*/ if (ready!=NULL) insert(p)。 /*就緒隊首不為NULL,插入新進程*/ else { /*否則先插在NULL前*/ pnext=ready。 ready=p。 } } printf( Display is going to start: \n)。 printf(***********************************************\n)。 print()。 getchar()。 run=ready。 /*隊列排好,run指向就緒隊列隊首*/ ready=readynext。 /*ready指向下一個進程*/ runstate=39。R39。 /*隊首進程的狀態(tài)為就緒*/}void SJF(){ while(run != NULL) { runcputime=runcputime+runneedtime。 runneedtime=0。 runnext=finish。 finish = run。 runstate=39。E39。 run = NULL。 if(ready != NULL) { run = ready。 runstate=39。R39。 ready=readynext。 } print()。 }}void main(){ printf(Please enter the total number of PCB:\n)。 scanf(%d,amp。N)。 create()。 /*模擬創(chuàng)建進程,并輸入相關(guān)信息*/ SJF()。 /*短作業(yè)優(yōu)先調(diào)度算法*/}.測試結(jié)果截圖及操作說明首先輸入2個控制進程快,分別命名s1和s2 。圖47所有作業(yè)都在隊列中,并都處于等待狀態(tài)圖48其中一個作業(yè)執(zhí)行完畢圖49所有進程執(zhí)行完畢三.測試分析 (進程),而不利于短作業(yè)(進程)。因為短作業(yè)運行時間很短,如果讓它等待較長時間才得到服務,那么,它的帶權(quán)周轉(zhuǎn)時間就會很高;先來先服務調(diào)度算法有利于CPU繁忙型的作業(yè),不利于I/O繁忙型的作業(yè),而目前大多數(shù)事務處理都屬于I/O繁忙型作業(yè)。 ,提高系統(tǒng)吞吐量。然而該算法對長作業(yè)不利,因為調(diào)度程序總是優(yōu)先調(diào)度那些短作業(yè),將導致長作業(yè)長期不被調(diào)度,該算法完全未考慮作業(yè)的緊迫程度,因而不能保證緊迫性作業(yè)會被及時處理,由于作業(yè)的長短只是根據(jù)用戶提供的估計執(zhí)行時間而定的,而用戶又可能有意無意地縮短其作業(yè)的估計運行時間,致使該算法不能真正做到短作業(yè)優(yōu)先調(diào)度; ,而那些優(yōu)先級較低的則可能長時間得不到調(diào)度;靜態(tài)優(yōu)先級調(diào)度算法簡單易行,系統(tǒng)開銷小,但是不太靈活,很可能出現(xiàn)低優(yōu)先級的作業(yè),長期得不到調(diào)度而等待的情況;靜態(tài)優(yōu)先級法僅適合于實現(xiàn)要求不太高的系統(tǒng)。動態(tài)優(yōu)先級調(diào)度算法比較靈活科學,可防止有一些進程一直得不到調(diào)度,也可防止有些進程長期壟斷處理機,但是需要花費相當多的執(zhí)行程序時間,因而花費的系統(tǒng)開銷比較大。 ,減少了進程的等待時間,但是時間片設得太短會導致過多的進程切換,降低了CPU效率;而設得太長又可能引起對短的交互請求的響應變差。將時間片設為100毫秒通常是一個比較合理的折衷 ; ,短作業(yè)優(yōu)先,時間片輪轉(zhuǎn)和優(yōu)先級調(diào)度算法的優(yōu)點,故多級反饋隊列調(diào)度對大多數(shù)進程調(diào)度來說是一種最佳的調(diào)度算法,但具體算法則應根據(jù)實際需求選擇。
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1