欢迎来到天天文库
浏览记录
ID:61499614
大小:104.00 KB
页数:13页
时间:2021-02-07
《操作系统-进程调度实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、程序中使用的数据结构及符号说明按优先数调度算法实现处理器调度的程序用C语言对其进程的数据结构进行定义如下:structPCB//定义进程的数据结构{charname[20];//进程的名称charpoint;//指针inttime;//要求运行时间intmath;//优先数charstate;//状态};使用的调度算法:voiddiaodu()//核心算法,进程调度算法{intg,h;structPCBY;for(g=0;g2、,如果优先级低,就进行交换{Y=P[g];P[g]=P[h];P[h]=Y;}}按时间片轮转法实现处理器调度的程序#definePCB_NUM10/*该程序包含十个PCB*/#defineEXAMPLES3/*该程序最多可模拟三个运行着的进程*//*定义进程控制块*/typedefstructpcb{structpcb*next;/*进程的下一个进程*/charname[20];/*进程的名字*/inttime;/*进程运行的时间*/}PCB;/*定义全局变量*/PCBpcbTable[PCB_NUM];/*进程控制表*/PCB*pc3、bCurrent=NULL;/*当前运行的进程*/PCB*pcbFree=NULL;/*空闲进程*/PCB*pcbReady=NULL;/*就绪进程*/PCB*pcbReadyRear=NULL;intcurrentProcesses=0;/*当前进程数*//*函数声明*/voidInitPcbTable();/*初始化进程表*/voidDisplayIdle();/*显示空闲队列*/intCreateProcesses();/*创建进程*/voidDisplayReadys();/*显示就绪进程*/voidRun();PCB*Sch4、edule();/*主函数*/voidmain()三、源程序及注释#includecharE;intm=5;//进程的数量structPCB//定义进程的数据结构{charname[20];//进程的名称charpoint;//指针inttime;//要求运行时间intmath;//优先数charstate;//状态};structPCBP[5]={//定义一个PCB结构的数组,用于存放五个进程{"p1",'k1',2,3,'R'},//分别对五个“进程”赋初值{"p2",'k4',3,5,'R'},{"p3",'k5、5',1,3,'R'},{"p4",'k3',2,4,'R'},{"p5",'k1',4,6,'R'}};voiddiaodu()//核心算法,进程调度算法{intg,h;structPCBY;for(g=0;g6、c",P[i].math,P[i].name,P[i].point,P[i].time,P[i].state);do{diaodu();printf("%s",P[0].name);P[0].time-2;//每进行一次调度之后,时间和优先级都减2P[0].math-2;if(P[0].time==0)//对运行时间进行判0,如果为0,则将其状态设为End{P[0].state='E';P[0].math=0;}for(i=0;i7、[i].math,P[i].name,P[i].point,P[i].time,P[i].state);}while(P[0].state!='E'8、9、P[1].state!='E'10、11、P[2].state!='E'12、13、P[3].state!='E'14、15、P[4].state!='E');}#include#include#include/*定义宏*/#definePCB_NUM10/*该程序包含十个PCB*/#defineEXAMPLES3/*该程序最多可模拟三个运行着的进程*/16、/*定义进程控制块*/typedefstructpcb{structpcb*next;/*进程的下一个进程*/charname[20];/*进程的名字*/inttime;/*进程运行的时间*/}PCB;/*定义全局变量*
2、,如果优先级低,就进行交换{Y=P[g];P[g]=P[h];P[h]=Y;}}按时间片轮转法实现处理器调度的程序#definePCB_NUM10/*该程序包含十个PCB*/#defineEXAMPLES3/*该程序最多可模拟三个运行着的进程*//*定义进程控制块*/typedefstructpcb{structpcb*next;/*进程的下一个进程*/charname[20];/*进程的名字*/inttime;/*进程运行的时间*/}PCB;/*定义全局变量*/PCBpcbTable[PCB_NUM];/*进程控制表*/PCB*pc
3、bCurrent=NULL;/*当前运行的进程*/PCB*pcbFree=NULL;/*空闲进程*/PCB*pcbReady=NULL;/*就绪进程*/PCB*pcbReadyRear=NULL;intcurrentProcesses=0;/*当前进程数*//*函数声明*/voidInitPcbTable();/*初始化进程表*/voidDisplayIdle();/*显示空闲队列*/intCreateProcesses();/*创建进程*/voidDisplayReadys();/*显示就绪进程*/voidRun();PCB*Sch
4、edule();/*主函数*/voidmain()三、源程序及注释#includecharE;intm=5;//进程的数量structPCB//定义进程的数据结构{charname[20];//进程的名称charpoint;//指针inttime;//要求运行时间intmath;//优先数charstate;//状态};structPCBP[5]={//定义一个PCB结构的数组,用于存放五个进程{"p1",'k1',2,3,'R'},//分别对五个“进程”赋初值{"p2",'k4',3,5,'R'},{"p3",'k
5、5',1,3,'R'},{"p4",'k3',2,4,'R'},{"p5",'k1',4,6,'R'}};voiddiaodu()//核心算法,进程调度算法{intg,h;structPCBY;for(g=0;g6、c",P[i].math,P[i].name,P[i].point,P[i].time,P[i].state);do{diaodu();printf("%s",P[0].name);P[0].time-2;//每进行一次调度之后,时间和优先级都减2P[0].math-2;if(P[0].time==0)//对运行时间进行判0,如果为0,则将其状态设为End{P[0].state='E';P[0].math=0;}for(i=0;i7、[i].math,P[i].name,P[i].point,P[i].time,P[i].state);}while(P[0].state!='E'8、9、P[1].state!='E'10、11、P[2].state!='E'12、13、P[3].state!='E'14、15、P[4].state!='E');}#include#include#include/*定义宏*/#definePCB_NUM10/*该程序包含十个PCB*/#defineEXAMPLES3/*该程序最多可模拟三个运行着的进程*/16、/*定义进程控制块*/typedefstructpcb{structpcb*next;/*进程的下一个进程*/charname[20];/*进程的名字*/inttime;/*进程运行的时间*/}PCB;/*定义全局变量*
6、c",P[i].math,P[i].name,P[i].point,P[i].time,P[i].state);do{diaodu();printf("%s",P[0].name);P[0].time-2;//每进行一次调度之后,时间和优先级都减2P[0].math-2;if(P[0].time==0)//对运行时间进行判0,如果为0,则将其状态设为End{P[0].state='E';P[0].math=0;}for(i=0;i7、[i].math,P[i].name,P[i].point,P[i].time,P[i].state);}while(P[0].state!='E'8、9、P[1].state!='E'10、11、P[2].state!='E'12、13、P[3].state!='E'14、15、P[4].state!='E');}#include#include#include/*定义宏*/#definePCB_NUM10/*该程序包含十个PCB*/#defineEXAMPLES3/*该程序最多可模拟三个运行着的进程*/16、/*定义进程控制块*/typedefstructpcb{structpcb*next;/*进程的下一个进程*/charname[20];/*进程的名字*/inttime;/*进程运行的时间*/}PCB;/*定义全局变量*
7、[i].math,P[i].name,P[i].point,P[i].time,P[i].state);}while(P[0].state!='E'
8、
9、P[1].state!='E'
10、
11、P[2].state!='E'
12、
13、P[3].state!='E'
14、
15、P[4].state!='E');}#include#include#include/*定义宏*/#definePCB_NUM10/*该程序包含十个PCB*/#defineEXAMPLES3/*该程序最多可模拟三个运行着的进程*/
16、/*定义进程控制块*/typedefstructpcb{structpcb*next;/*进程的下一个进程*/charname[20];/*进程的名字*/inttime;/*进程运行的时间*/}PCB;/*定义全局变量*
此文档下载收益归作者所有