实验二——模拟在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 }

总结:

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

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

posted @ 2016-04-30 10:20  44卢全浩  阅读(291)  评论(0编辑  收藏  举报