处理机调度实验c语言,操作系统实验处理机调度C语言实现
操作系統實驗處理機調度C語言實現
下載提示(請認真閱讀)1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內容而直接下載帶來的問題本站不予受理。
2.下載的文檔,不會出現我們的網址水印。
3、該文檔所得收入(下載+內容+預覽)歸上傳者、原創作者;如果您是本文檔原作者,請點此認領!既往收益都歸您。
文檔包含非法信息?點此舉報后獲取現金獎勵!
下載文檔到電腦,查找使用更方便
20
積分
還剩頁未讀,繼續閱讀
關?鍵?詞:操作系統
實驗
處理機
調度
語言
實現
資源描述:
#include#include#include #include#define N 20
#define MAX 100
typedef struct PCB //pcb進程控制塊定義
{
int num[N]; //進程序號
char name[10]; //進程名
char state; //進程狀態
int tijiaotime; //進程到達時間
int runtime; //進程開始時間
int finishtime; //進程結束時間
int needtime; //服務時間
int pro;//進程優先級
struct PCB *next; //鏈接指針 指向下個作業的
}pcb;
struct PCB *head_input;
struct PCB *head_run;
struct PCB *head_run_pre;
unsigned long current; //記錄系統當前時間的變量
int time=10000,n; //計時器
pcb *head=NULL,*p,*q;
void getInfo() //創建進程
{
int num;
printf("\n請輸入要建立的進程個數:");
scanf("%d",&n);
for(num=0;numnum,&p->name,&p->tijiaotime,&p->needtime);
if(p->tijiaotime < time) time=p->tijiaotime;
q->next=p;
p->runtime=0;
p->finishtime=0;
p->next=NULL;
p->state=W;
q=p;
}
}
// *********************1.先來先服務調度算法*******************************
void run_fcfo(pcb *p1)//定義先來先到服務的算法
{
time = p1->tijiaotime > time? p1->tijiaotime:time;
p1->runtime=time;
printf("\n現在時間是%d,開始運行進程%s\n",time,p1->name);
time+=p1->needtime;
p1->state=F;
p1->finishtime=time;
printf("進程名 開始時間 所需時間 結束時間\n");
printf("%s %d %d %d ",p1->name,p1->runtime,p1->needtime,p1->finishtime);
}
void fcfo()//定義運行進程函數
{
int i,j,t;
for(j=0;jtijiaotimestate==W)
{
t=p->tijiaotime;
q=p; //標記當前未完成的進程
}
p=p->next;
}
run_fcfo(q);
}
}
// ************************2.優先級調度服務算法************************************
int readydata()
{ //建立就緒隊列
if(head_input->next==NULL)
{
return 0;
}
struct PCB *p1=head_input->next,*pmax,*p2;
int maxpro=0xffff;
pmax=p1;
p2=head_input;
while(p1!=NULL)
{
if(p1->propro;
head_run_pre=p2;
pmax=p1;
}
p2=p1;
p1=p1->next;
}
head_run=pmax;
head_run_pre->next=head_run->next;
return 1;
}
void runprocess() //運行進程函數
{
head_run->runtime-=10;
head_run->pro++;
struct PCB *p1,*p2;
printf("時間片的大小 %d",current);
current+=10;
printf(" %s 開始\n",head_run->name);
printf("時間片的大小 %d",current);
printf(" %s 結束\n",head_run->name);
if(head_run->runtime<=0)
{//判斷進程是否運行結束
}
else
{
p1=head_input;
p2=head_input->next;
p1->next=head_run;
head_run->next=p2;
}
}
int readyprocess()
{
while(1)
{
if(readydata()==0)
return 0;
else runprocess();
}
}
void Init()
{
head_input=new PCB;
head_input->next=NULL;
current=0;
int numpro;
printf("請重新輸入要建立的進程個數:");
scanf("%d",&numpro);
printf("請依次輸入 進程名 運行時間 優先級\n");
for(int i=0;iname);
scanf("%d",&p1->runtime);
scanf("%d",&p1->pro);
p1->state=C;
p1->next=NULL;
struct PCB *p2=head_input->next;
head_input->next=p1;
p1->next=p2;
}
}
// ************************3.時間片輪轉調度服務算法************************************
void shijianpian()
{int b,i,X,t,k;
int a[MAX];//存放進程的剩余時間
int cnt[MAX];//存放進程調度次數
printf("請輸入進程數:");
scanf("%d",&X);
printf("\n請輸入時間片t大小:");
scanf("%d",&t);
printf("\n請依次輸入各個進程的服務時間");
for(i=0;i=t)
{
a[i]-=t;
b+=t;
cnt[i]=cnt[i]+1;
printf("\n\t%d\t\t%d\t\t%d\t\t%d",i+1,cnt[i],b,a[i]);
}
else
{
b=b+a[i];
cnt[i]=cnt[i]+1;
a[i]=0;
printf("\n\t%d\t\t%d\t\t%d\t\t%d",i+1,cnt[i],b,a[i]);
}
else continue;
}
for(i=0;i=X)
k=0;
}
}
void main()
{
printf(" *******************************");
printf("\n 1. 按先來先到服務調度的算法模擬\n");
printf(" *******************************");
getInfo();
fcfo();
printf("\n *******************************");
printf("\n 2. 按優先級調度的算法模擬\n");
printf("\n *******************************\n");
Init();
readyprocess();
printf("\n *******************************");
printf("\n 3. 按時間片輪轉調度的算法模擬\n");
printf(" *******************************\n");
shijianpian();
printf(" \n");
}
展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
?
人人文庫網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:操作系統實驗處理機調度C語言實現
鏈接地址:https://www.renrendoc.com/p-79168893.html
總結
以上是生活随笔為你收集整理的处理机调度实验c语言,操作系统实验处理机调度C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽油种类?
- 下一篇: C语言函数到.h文件,求助C语言大佬 ,