淘小兔

一、实验目的 
在批处理系统、分时系统和实时系统中,进程数目一般都大于处理机的个数,导致各个进程互相争夺处理机。这就需要进程调度程序按照相应的调度方式和调度算法,从处于就绪状态的诸多进程中选择一个进程将处理机分配给它,使之执行。 
本实验利用高级语言编写和调试进程调度程序,模拟进程调度的过程,从而加深对进程概念和进程调度算法的理解,帮助学生加深了解处理器调度的工作。

二、实验内容 
1. 设计有五个进程并发执行的模拟调度程序,每个程序由一个PCB表示。 
2. 模拟调度程序可任选两种调度算法实现。 
3. 程序执行中应能在屏幕上显示出各种进程的状态变化。 
4. 实验过后书写实验报告。

三、实验方法 
算法一:先来先服务(First Come First Served,FCFS)调度算法

  1. 算法设计思路

    因为先来先服务调度算法只考虑每个作业的到达时间,所以我们将所有作业的到达时间进行排序,然后依次进行作业即可

  2. 程序中主要的数据结构和函数说明 
    程序主要使用了c++标准模板库中的sort排序函数,其中自定义了compare比较函数,并以每个作业的到达时间为关键字从小到大排序

  3. 主要模块 
    因为算法比较简单,除了compare比较函数外,其余的内容我都包含在主函数中,主要有数据的输入,对数据的处理和计算以及数据的输出三块内容

四、源程序代码

#include"iostream"#include"algorithm"using namespace std;struct node{    string name;    double arr;   //到达时间    double ing;   //运行时间}ai[100];bool compare(node a,node b){    return a.arr<b.arr;}int main(){    int n;    cout<<"请输入进程个数:";    cin>>n;    cout<<"请输入"<<n<<"个进程的名字、到达时间、运行时间"<<endl;    for(int i=0;i<n;i++)    {        cin>>ai[i].name>>ai[i].arr>>ai[i].ing;    }    sort(ai,ai+n,compare);    cout<<"进程名 \t到达时间\t运行时间\t开始时间\t结束时间\t周转时间\t带权周转时间"<<endl;    double sta=ai[0].arr;    for(int i=0;i<n;i++)    {        double jiesu=sta+ai[i].ing;        double zhouz=jiesu-ai[i].arr;        double Dzhouz=zhouz/ai[i].ing;        cout<<endl;        cout<<ai[i].name<<"\t";        cout<<ai[i].arr<<"\t\t";        cout<<ai[i].ing<<"\t\t";        cout<<sta<<"\t\t";        cout<<jiesu<<"\t\t";        cout<<zhouz<<"\t\t";        cout<<Dzhouz<<endl;        sta=jiesu>ai[i+1].arr?jiesu:ai[i+1].arr;    }}

五、程序运行结果及分析 

1. 运行结果

先来先服务调度算法(First Come First Served,FCFS)

 
2. 结果分析 

与预期的结果一致,初步认定算法实现

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看内容!

如何获取密码?

 

点击下载