实验二——模拟在CPU中的进程调度(改稿)

一、        实验目的

通过本实验可以加深对有关进程控制块、进程队列的概念的进一步理解。

二、        实验内容和要求

1.进程PCB的结构体定义

2.定义结构体

3.输入进程序列

4.排序(按到位时间)

5.输出进程运行的结果

三、        实验代码及结果测试

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3
 4 #define wait 0
 5 #define run 1
 6 #define max 1000
 7
 8 typedef struct pcb{
 9     char name[max];
10     int cputime;
11     char state;
12 }pcb;
13
14 void input(pcb data[],int count);
15 void output(pcb data[],int count);
16
17 main(){
18     pcb data[max];
19     int count;
20     printf("input the data number:");
21     scanf("%d",&count);
22     input(data,count);
23     output(data,count);
24     return 0;
25 }
26
27 void input(pcb data[],int count){
28     int i;
29     for(i=0;i<count;i++){
30         printf("input the %d name:\n",i+1);
31         scanf("%s",&data[i].name);
32         printf("input the %d time:\n",i+1);
33         scanf("%d",&data[i].cputime);
34     }
35     for(i=0;i<count;i++){
36         data[i].state=wait;
37     }
38     printf("the data are:\n");
39     printf("   name     usetime     state\n");
40     for(i=0;i<count;i++){
41         printf("%10s %10d %5d\n",data[i].name,data[i].cputime,data[i].state);
42     }
43 }
44
45 void output(pcb data[],int count){
46     int i;
47     int j;
48     pcb temp;
49     for(i=0;i<count-1;i++){
50         for(j=i+1;j<count;j++){
51             if(data[j].cputime<data[i].cputime)
52             {
53                 temp=data[j];
54                 data[j]=data[i];
55                 data[i]=temp;
56             }
57         }
58     }
59     printf("the work is:\n");
60     for(i=0;i<count;i++)
61     {
62         printf("%10s %10d %5d\n",data[i].name,data[i].cputime,data[i].state);
63     }
64 }

总结:

已对模拟的进程进行使用时间的排序;

尚未对进程的优先级排序;

时间: 2024-10-13 23:22:34

实验二——模拟在CPU中的进程调度(改稿)的相关文章

实验二——模拟在CPU中的进程调度(初稿)

一.        实验目的 通过本实验可以加深对有关进程控制块.进程队列的概念的进一步理解. 二.        实验内容和要求 1.进程PCB的结构体定义 2.定义结构体 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行的结果 三.        实验代码及结果测试 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 #define wait 0 5 #define run 1 6 #define max 100 7 8 type

实验二-模拟在CPU中的优先级调度

一.        实验目的 通过本实验可以加深对有关进程控制块.进程队列的概念的进一步理解. 二.        实验内容和要求 1.进程PCB的结构体定义 2.定义结构体 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行的结果 三.        实验代码及结果测试 1 #include<stdio.h> 2 #include<stdlib.h> 3 #define MAX 100 4 /*定义进程结构体*/ 5 typedef struct pcb { 6 char

【操作系统】实验二 模拟作业调度

一.目的和要求 1. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 2.实验要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 作业调度算法: 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 拓展内容: 每个作业的到达时间和所需运行时间随机数生产:

实验二进程调度模拟程序

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

操作系统实验二(调度算法模拟-先进先出-时间片轮转法-优先服务调度算法)

实验二 进程调度 一.     实验目的 1.       理解进程运行的并发性. 2.       理解处理器的三级调度. 3.       掌握先来先服务的进程调度算法. 4.       掌握短进程优先的进程调度算法. 5.       掌握时间片轮转的进程调度算法. 二.     实验设备 1.     安装windows或者linux操作系统的PC机 2.     C程序编译环境 三.     实验内容 用c语言编程模拟实现至少一个操作系统的常见进程调度算法.常见的进程调度算法有先来先

1111实验二 作业调度模拟实验

实验二.作业调度模拟实验 物联网工程 张怡 201306104149 一.实验目的  (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.实验内容和要求 1.至少用三种调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业. 2) 短作业优先 (SJF) 调度算法,优先调度要求运行时间最短的作业. 3) 响应比高者优先(HRRN)调度算法,为每个作业设置一个优先权(响应比),调度之前先计算各作业的优先权,优先数高

实验二 作业调度模拟实验

实验二.作业调度模拟实验 13物联网  201306104148 李小娜 一. 实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二. 实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序. 单道批处理系统的作业调度程序.作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所运行的时间等因素. 作业调度算法: 1) 采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间

实验二 用C语言表示进程的调度

实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行的结果 三.程序 #include<stdio.h>#include<malloc.h>#include<time.h> /*定义一个Course类型的结构体*/typedef struct queue{ int number; int intime; int runnin

实验二、作业调度模拟程序实验 (已修改格式)

实验二.作业调度模拟程序实验 专业:计算机科学与技术网络工程   姓名:陈玉婷  学号201306114132 一.实验目的 (1)加深对作业调度算法的理解: (2)进行程序设计的训练. 二.实验内容和要求 用高级语言编写一个或多个作业调度的模拟程序. 作业调度算法:1)采用先来先服务(FCFS)调度算法,即按作业到达的先后次序进行调度.总是首先调度在系统中等待时间最长的作业.2)短作业优先 (SJF) 调度算法,优先调度要求运行时间最短的作业.3)响应比高者优先(HRRN)调度算法,为每个作业