當前位置:
首頁 > 知識 > C加加模擬進程調度時間片輪轉演算法

C加加模擬進程調度時間片輪轉演算法


今天給大家帶來的是關於C++模擬進程調度時間片輪轉演算法,大家可以看一下,評論一下哪些地方有不足之處或者哪裡有問題


#include"stdio.h"


#include"stdlib.h"


#include


using namespace std;

#define ready 1


#define run 2


struct pcb


{


char name[10];


int priority; /*進程的優先順序*/


int state; /*進程的狀態:可以有運行和就緒*/


int needtime; /*進程需要運行的時間*/


int runtime;


int time; /*進程已運行的時間*/

struct pcb *next; /*指向下一個進程PCB的指針*/


};


typedef struct pcb PCB;


PCB *head=NULL;


void create() /*此函數用於創建進程隊列*/


{


PCB *p, *q;


int n,i;


printf("請輸入要創建的進程的數量:");


scanf("%d",&n);

head=(PCB *)malloc(sizeof(PCB));


p=head;


for(i=1;i


{


q=(PCB*)malloc(sizeof(PCB));


p->next=q;


p=q;


printf("
請輸入 NO.%d 個進程的標識符:",i);


scanf("%s",&p->name);


printf("請輸入進程的優先順序:");

scanf("%d",&p->priority);


printf("請輸入進程所需的時間:");


scanf("%d",&p->needtime);


p->state=ready;


p->runtime=0;


p->next=NULL;


}


}


void lunzhuan () /*時間片輪轉*/


{

PCB *p,*q,*r;


int time;


printf("請輸入時間片大小:
");


scanf("%d",&time);


for(p=head->next;p->next;p=p->next)


r=p;


while(head->next)


{


p=head->next; /*選出就緒隊列的第一個進程*/


p->state=run;

printf("
正在運行的進程是:
"); /*輸出該進程的信息*/


printf("%s ",p->name);


printf("state: 運行 ");


printf("needtime: %d ",p->needtime);


printf("runtime: %d
",p->needtime);


q=head->next;


if(p->needtime-p->runtimetime) /*時間片內,進程運行結束否*/


{


p->runtime=p->needtime;


printf("runtime:%d
",p->runtime);

}


else


{


p->runtime=p->runtime+p->time;


printf("runtime:%d
",p->runtime);


}


q=p->next;


if(q!=NULL) /*輸出就緒隊列中的進程信息*/


printf("就緒隊列是:
");


else

printf("就緒隊列為空!
");


while(q)


{


printf("%s ",q->name);


printf("state: 就緒 ");


printf("needtime:%d ",q->needtime);


printf("runtime:%d ",q->runtime);


printf("
");


q=q->next;


}

if(p->runtime==p->needtime)


{


delete(head,p);


}


else


{


head->next=p->next;


r->next=p;


r=p;


r->state=ready;


r->next=NULL;


}


}


}


void main()


{


cout


create();


if(head==NULL || head->next==NULL)


printf("就緒隊列沒有進程,請先創建進程
");


else


lunzhuan();


}



C加加模擬進程調度時間片輪轉演算法



想要一起學習C++的可以加裙二四八八九四四三零,裙內有各種資料滿足大家,歡迎加裙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

C語言你不可以錯過的8個經典題目
C語言圖形的那些事兒
Linux下C語言的幾道經典面試題
C語言入門只需如此簡單
C語言基礎——結構體

TAG:C加加 |

您可能感興趣

MIT新調度演算法可以減少3成的計程車
調度機、數字程式控制調度機哪個廠家比較好
用AI技術來調度計程車 對於市場需求預測精度高
程式控制數字調度機申甌數字程式控制調度機熱賣
豐田正測試一種新的計程車調度系統 可預測乘客需求
58速運訂單調度架構演進(一)
改進的兩跳中繼網路比例公平調度
MIT新論文:這個調度優化演算法讓紐約計程車數量減少了1/3
調整小米手機CPU調度機制,保證流暢提高續航!
調度機、應急數字調度機哪個廠家好
申甌礦用防爆調度機本安程式控制調度機熱賣
為她趕考,鐵路臨時調度一輛列車
Linux系統篇-進程的管理與調度
基於北斗的應急救援調度平台建設項目通過驗收
調度機、應急指揮調度機哪個牌子比較好
礦用調度機、申甌礦用程式控制調度機售賣
分散式深度學習的兩種集群管理與調度的實現方式簡介
新能源電力系統的多時間尺度魯棒調度與區間無功電壓控制
如何高效排查日均調度量超兩百萬次的重複調度問題?
索尼與多公司合作成立合資公司,將推出基於AI技術的計程車調度業務