最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

实验 短作业优先进程调度算法模拟

来源:动视网 责编:小OO 时间:2025-10-01 12:05:28
文档

实验 短作业优先进程调度算法模拟

实验短作业优先SJF进程调度算法模拟一、实验目的模拟单处理器系统的进程调度,采用短作业优先的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.二、实验内容#include#include#include#include#defineN5structPCB{进程名称到达时间运行时间完成时间intzhouzhuan_time;//周转时间带权周转时间boolfinished;//是否运行完成};//进程初始化structPCBpcb[N]=//进程输出函数voidoutput(
推荐度:
导读实验短作业优先SJF进程调度算法模拟一、实验目的模拟单处理器系统的进程调度,采用短作业优先的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.二、实验内容#include#include#include#include#defineN5structPCB{进程名称到达时间运行时间完成时间intzhouzhuan_time;//周转时间带权周转时间boolfinished;//是否运行完成};//进程初始化structPCBpcb[N]=//进程输出函数voidoutput(
实验   短作业优先SJF进程调度算法模拟

一、实验目的 

模拟单处理器系统的进程调度,采用短作业优先的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.

二、实验内容

#include

#include

#include

#include

#define  N  5

struct  PCB

{

 进程名称

 到达时间

 运行时间

 完成时间

    int  zhouzhuan_time;        //周转时间

 带权周转时间

    bool  finished;             //是否运行完成 

}; 

//进程初始化

struct  PCB  pcb[N]=

//进程输出函数

void  output()

 进程名 到达时间  运行时间  完成时间  周转时间  带权周转时间\\n");

     printf(" %s        %d         %d         %d         %d         %f\\n",pcb[i].name,pcb[i].arrive_time,pcb[i].run_time,pcb[i].finish_time,pcb[i].zhouzhuan_time,pcb[i].daiquan_time);

}

void  main()

    int  last_finishedPCB_index;    //记录上一次已经运行的进程的数组下标

// 运行第一个到达的进程  得到它的完成时间、周转时间等,并设置为已访问

//下面在剩下的进程中循环找出运行时间最小的进程,

//计算它的完成时间、周转时间等,并设置为已访问。

  先找出没有访问过的运行时间最小的进程的下标

        index=-1;

        min_time=100;

        for(j=0;j        {

         if(min_time>pcb[j].run_time&&pcb[j].finished==false)

         {

          min_time=pcb[j].run_time;

          index=j;

         }

        }

  运行找到的最短进程  得到它的完成时间、周转时间等,并设置为已访问

        pcb[index].zhouzhuan_time=pcb[index].finish_time-pcb[index].arrive_time;

        pcb[index].finished =true;

 

}

要求:

1. 认真阅读并理解上述程序,在实验报告中说明短作业优先调度算法中计算各进程的完成时间、周转时间思路。

2. 上面程序没有求每个进程的带权周转时间、平均周转时间,平均带权周转时间,能否加上,结果输出的格式按类似P90表4-2 输出。

3. 上面程序没有考虑某进程的运行时间最短,但它还没有到达的情况,请改写程序,将这种情况考虑进去,使程序正确。如进程信息如下:

struct  PCB  pcb[N]=

进程名到达时间运行时间完成时间周转时间
A0444
B1376
C251614
D202223
E44117
4. 附加: 将该程序和先来先服务程序合成一个程序,并提供菜单选择执行短作业优先或先来先服务?(提示: 进程的初始化、进程的输出、进程的排序等只要定义一个,将FCFS 、SJF 的计算完成时间、周转时间、带权周转时间等的功能做成两个函数,函数名建议为FCFS、SJF。在主函数中建立菜单进行调用。

实验报告书写

1.写出你对给出的程序的理解,可以包括学到了那些程序设计的语法或方法,以及算法的设计思想。

2.写出实验指导中要求部分是如何实现的,

3.上述部分不能只是抄写代码,要有说明。

附录:  先来先服务进程调度模拟程序

#include

#include

#include

#include

#define  N  5

struct  PCB

{

    char name[8];

    int  arrive_time;

    int  run_time;

    int finish_time;

    int  zhouzhuan_time;

};

int  total=0; 

struct  PCB  pcb[N],temp;

void  output()

{   

    printf("----------------------------------------------------------------------------------------------\\n");

    printf("进程名   到达时间  运行时间  完成时间  周转时间  \\n");

    printf("----------------------------------------------------------------------------------------------\\n");

for(int i=0;i    {

          printf(" %s        %d         %d         %d         %d        \\n",pcb[i].name,pcb[i].arrive_time,pcb[i].run_time,pcb[i].finish_time,pcb[i].zhouzhuan_time);

    }

    printf("----------------------------------------------------------------------------------------------\\n");

}

void  main()

{   

   

    int i,j;

for ( i=0;i    {

        printf("请输入进程名\\n" );

        scanf("%s",pcb[i].name);

        printf("请输入到达时间:");

        scanf("%d",&pcb[i].arrive_time);

        printf("请输入要运行时间");

        scanf("%d",&pcb[i].run_time);        

    }

for( i=0;i    {          printf("%s    ",pcb[i].name);

        printf("%d    ",pcb[i].arrive_time);

        printf("%d \\n",pcb[i].run_time);

    }

    pcb[0].finish_time=pcb[0].arrive_time+pcb[0].run_time;

    pcb[0].zhouzhuan_time=pcb[0].finish_time-pcb[0].arrive_time;

      for(i=1;i    {     

     

           

            pcb[i].finish_time=pcb[i-1].finish_time+pcb[i].run_time;

            pcb[i].zhouzhuan_time=pcb[i].finish_time-pcb[i].arrive_time;

     

    }   

    output();

}

文档

实验 短作业优先进程调度算法模拟

实验短作业优先SJF进程调度算法模拟一、实验目的模拟单处理器系统的进程调度,采用短作业优先的进程调度算法作为进程设计算法,以加深对进程的概念及进程调度算法的理解.二、实验内容#include#include#include#include#defineN5structPCB{进程名称到达时间运行时间完成时间intzhouzhuan_time;//周转时间带权周转时间boolfinished;//是否运行完成};//进程初始化structPCBpcb[N]=//进程输出函数voidoutput(
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top