下载此文档

进程调度实验报告.doc


文档分类:管理/人力资源 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
实验一进程调度程序模拟
实验目的
了解实验中进程调度时怎么进行的,按照调度的方式不同进程的执行顺序不同,有的算法适合短作业,有的适合高优先权等等。
程序设计过程
数据结构设计
name; // 进程名 ReachT; //到达时间 NeedT;//进程需要的时间 FinishT;//进程的结束时间
zhzh;//周转时间 dqzhzh;//带权周转时间 state; // 进程状态 PCB是进程的数组
实验结果及分析
程序运行情况
左图,先来先服务执行结果图,右图短作业优先执行结果
程序执行结果说明
对先来先服务是按服务时间到达的先后来调度的,所以执行的顺序是按照到达时间从小到大的顺序执行的为0,1,2,4,8,12,16,31,42,43,对应的进程名字3,2,1,5,9,8,6,0,7,4如左图所示。
对于短作业是先按照到达时间来排序,然后第一个到达的先执行因为别的程序还没有到达,从第二个开始就要看到达时间和作业的长短,作业短的先执行,如到达时间是31,2,1,0,43,4,16,42,12,8,第一个到达的是3所以先执行,然后结束时间是25,所以从25以前的时间中找到作业最短的执行。
实验收获和体会
通过实验将以前只会做题的过程转化为程序执行的过程,体会到了程序的执行过程,而且是随机产生的时间不是人为的控制,所以对进程调度的理解加深了,还巩固了以前学过的数据结构,和C语言的随机数的生成。
程序源代码
typedef struct process
{ int name; int ReachT; int NeedT;int FinishT;int zhzh;float dqzhzh;int state; }PCB;
PCB pcb[10];int c=45;int i,j;
void addp()
{ for(i=0;i<10;i++)
{ pcb[i].name=i;
pcb[i].ReachT=rand()%c;pcb[i].NeedT=rand()%c;pcb[i].FinishT=0;pcb[i].state=0;}
printf("\n name-reacht-needt-finisht-state \n");
for(i=0;i<10;i++)
{printf("%4d%8d%5d%7d%5d\n",pcb[i].name,pcb[i].ReachT,pcb[i].NeedT,pcb[i].FinishT,pcb[i].state);} } //显示初始化时的进程状况
sortofddshj()
{ PCB temp; //设立一个中间变量,用来存放交换变量是的中间存放单元
for (j=10;j>0;j--)
for(i=0;i<j-1;i++)
{ if(pcb[i].ReachT>pcb[i+1].ReachT)//将到达时间按照从小到大的时间排序
{temp= pcb[i];pcb[i]=pcb[i+1];pcb[i+1]=temp;}}}
sortofneedtime()
{ PCB temp; //用来存放交换两个变量时的中间变量
for(j=8;j>0;j--)
for(i=1;i<j+1;i++)
{if(pcb

进程调度实验报告 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人buhouhui915
  • 文件大小102 KB
  • 时间2018-04-24