进程调度模拟程序

#include<stdio.h>

#define N 10

typedef struct process  

{

   char name;

   int arrive;

   int prio;

   int needTime;

   char state;

  

}Process;

Process a[N];

void input(Process a[],int n){              

    int i;

   for(i=0;i<n;i++)

   {

          printf("请输入%d个进程的进程名:",i+1);

          scanf("%c",&a[i].name);

          printf("请输入%d个进程的优先级:",i+1);

        scanf("%d",&a[i].prio);

        printf("请输入%d个进程的到达时间:",i+1);

        scanf("%d",&a[i].arrive);

          printf("请输入%d个进程的需要时间:",i+1);

          scanf("%d",&a[i].needTime);

          a[i].state=‘r‘;

        getchar();

          printf("\n");

   }

}

void sort(Process a[],int n)              

{

   int i,j;

   Process temp;

   for(i=0;i<n;i++)

      for(j=i;j<n;j++)

      {

             if(a[j].prio>a[i].prio)

             {

                    temp=a[j];

                    a[j]=a[i];

                    a[i]=temp;

             }

             if(a[j].prio==a[i].prio) 

             {

                    if(a[j].arrive<a[i].arrive)

                    {

               temp=a[j];

                    a[j]=a[i];

                    a[i]=temp;

                    }

             }

      }

}

void output(Process a[],int n)           

{

   int i;

   printf("进程排序结果:\n");

    printf("********************************\n");

   printf("进程名\t优先级\t到达\t需要\n");

   for(i=0;i<n;i++)

        printf("%c\t%d\t%d\t%d\t%c\n",a[i].name,a[i].prio,a[i].arrive,a[i].needTime,a[i].state);

    printf("********************************\n");

}

void running(Process a[],int n)

{

   int i;

    for(i=0;i<n;i++)

   {

      while(a[i].needTime!=0)

      {

            printf("按任意键继续\n");

            fflush(stdin);

            getchar();

         a[i].needTime=a[i].needTime-1;

            a[i].prio=a[i].prio-1;

            if(a[i].needTime==0)

            {

                   a[i].state=‘f‘;

            }

          printf("现在执行的进程信息:\n");

         printf("进程名\t优先级\t需要\n");

         printf("%c\t%d\t%d\t%c\n",a[i].name,a[i].prio,a[i].needTime,a[i].state);

         printf("********************************\n");

            sort(a,n);

            output(a,n);

      }

   }

}

main()

{

   int n;

   printf("你想输入多少个进程:");

   scanf("%d",&n);

   getchar();

   input(a,n);

   sort(a,n);

   running(a,n);

}

时间: 2024-08-07 09:12:48

进程调度模拟程序的相关文章

实验三 、进程调度模拟程序

实验三.进程调度模拟程序 专业 网络工程   姓名 方俊晖 学号 201406114309 一.        实验目的 通过本实验可以加深对有关进程控制块.进程队列的概念的进一步理解. 二.        实验内容和要求 1.进程PCB的结构体定义 2.定义结构体 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行的结果 三.        实验方法.步骤及结果测试 #include<stdio.h> #include<stdlib.h> #include<stri

实验三 进程调度模拟程序

一.实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解.     二.实验内容和要求 设计一个有 N个进程并发执行的进程调度模拟程序. 进程调度算法:采用最高优先级优先的调度算法(即把处理机分配给优先级最高的进程)和先来先服务(若优先级相同)算法.动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定规则修改优先数.例如:在进程获得一次CPU后就将其优先数减少1,并且进程等待的时间超过某一时限(2个时间片时间)时增加其优先数等. (1).  每个进

实验三&#160;进程调度模拟程序

实验三 进程调度模拟程序 专业:物联网工程   姓名:黄淼  学号:201306104145 一. 实验目的和要求 目的: 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 实验要求 设计一个有 N(N不小于5)个进程并发执行的进程调度模拟程序. 进程调度算法:“时间片轮转法”调度算法对N个进程进行调度. 二.实验内容 完成两个算法(简单时间片轮转法.多级反馈队列调度算法)的设计.编码和调试工作,完成实验报告. 1) 每个进程有一个进程控制块(PCB)表示.进程控制块包含

实验二、进程调度模拟程序1.0

一.    实验目的 用C语言模拟进程调度程序,以加深对进程的概念及进程调度算法的理解. 二.    实验内容及要求 设计一个有 N个进程并发执行的进程调度模拟程序. 进程调度算法: (1)  先来先服务调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. (2)  优先级调度算法,为每个作业设置一个优先级,调度之前先比较各作业的优先级,优先数高者优先调度,若优先级相同则用先来先服务算法. 1)每个进程有一个进程控制块(PCB)表示.进程控制块包含如下信息:进程名.

实验三、进程调度模拟程序2.0

一.    实验目的 用C语言模拟进程调度程序,以加深对进程的概念及进程调度算法的理解. 二.    实验内容及要求 设计一个有 N个进程并发执行的进程调度模拟程序. 1.模拟进程数据的生成 用户选择输入每个进程的到达时间,所需运行时间,进程的运行时间以时间片为单位. 2.模拟调度程序的功能 按照模拟数据的到达时间和所需运行时间,能分别执行以下调度算法: FCFS SRTF HRRF RR 3.显示每种算法下各进程的调度执行顺序. 4.计算各进程的开始执行时间,各作业的完成时间,周转时间和带权周

实验二 进程调度模拟程序

1. 实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 2.  实验要求 设计一个有 N个进程并发执行的进程调度模拟程序. 进程调度算法:采用最高优先级优先的调度算法(即把处理机分配给优先级最高的进程)和先来先服务(若优先级相同)算法. (1).  每个进程有一个进程控制块(PCB)表示.进程控制块包含如下信息:进程名.优先级.到达时间.需要运行时间.已用CPU时间.进程状态等等. (2).  进程的优先级及需要的运行时间可以事先人为地指定,进程的运行时间以时间

[操作系统]实验三 进程调度模拟程序

实验三进程调度模拟程序 专业:商软一班   姓名:黄冠锋 学号:201406114134 1.实验目的和要求 1.1. 实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 1.2.实验要求 1.2.1例题:设计一个有 N个进程并发执行的进程调度模拟程序. 进程调度算法:采用最高优先级优先的调度算法(即把处理机分配给优先级最高的进程)和先来先服务(若优先级相同)算法. (1).  每个进程有一个进程控制块(PCB)表示.进程控制块包含如下信息:进程名.优先级.到达时

12.3 实验三 进程调度模拟程序

  实验三 进程调度模拟程序 13物联网   201306104126  谢秋有 1. 目的和要求 实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 实验要求 设计一个有 N(N不小于5)个进程并发执行的进程调度模拟程序. 进程调度算法:“时间片轮转法”调度算法对N个进程进行调度. 2. 实验内容 完成两个算法(简单时间片轮转法.多级反馈队列调度算法)的设计.编码和调试工作,完成实验报告. 1) 每个进程有一个进程控制块(PCB)表示.进程控制块包含如下信息:进

实验三 进程调度模拟程序2.0

一.实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 二.实验要求 设计一个有 N个进程并发执行的进程调度模拟程序. 1.模拟进程数据的生成,允许用户选择输入每个进程所需运行时间,进程的运行时间以时间片为单位. 2. 模拟调度程序的功能 2.1 按照模拟数据的到达时间和所需运行时间,能分别执行以下调度算法. FCFS SJ HRRN RR 2.2 显示每种算法下各进程的调度执行顺序. 2.3计算各进程的开始执行时间,各作业的完成时间,周转时间和带权周转时间(周转

实验三、进程调度模拟程序

实验三进程调度模拟程序 专业:商软一班   姓名:董婷婷 学号:201406114105 1.实验目的和要求 1.1. 实验目的 用高级语言完成一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 1.2.实验要求 1.2.1例题:设计一个有 N个进程并发执行的进程调度模拟程序. 进程调度算法:采用最高优先级优先的调度算法(即把处理机分配给优先级最高的进程)和先来先服务(若优先级相同)算法. (1).  每个进程有一个进程控制块(PCB)表示.进程控制块包含如下信息:进程名.优先级.到达时