操作系统实验2——进程调度算法的模拟实现

实验目的

1.本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。

2.利用程序设计语言编写算法,模拟实现先到先服务算法FCFS、轮转调度算法RR、最短作业优先算法SJF、优先级调度算法PRIOR、最短剩余时间优先算法SRTF。

3.进行算法评价,计算平均等待时间和平均周转时间。

实验内容及结果

1.先来先服务算法

操作系统实验2——进程调度算法的模拟实现_第1张图片

操作系统实验2——进程调度算法的模拟实现_第2张图片

操作系统实验2——进程调度算法的模拟实现_第3张图片

2.轮转调度算法

操作系统实验2——进程调度算法的模拟实现_第4张图片

3. 优先级调度算法

操作系统实验2——进程调度算法的模拟实现_第5张图片

4. 最短时间优先算法

操作系统实验2——进程调度算法的模拟实现_第6张图片

5. 最短剩余时间优先算法

操作系统实验2——进程调度算法的模拟实现_第7张图片

实验总结

在此次模拟过程中,将SRTF单独拿了出来用指针表示,而其余均用数组表示。

//
【Process.cpp代码如下:】
#include
#include
using namespace std;

class Process
{
public:
string ProcessName;  // 进程名字
 int Time;  //  进程需要时间
 int leval; //  进程优先级
 int LeftTime; // 进程运行一段时间后还需要的时间
}; 

void Copy ( Process proc1, Process proc2); // 把proc2赋值给proc1
void Sort( Process  pr[], int size) ; // 此排序后按优先级从大到小排列
void sort1(Process  pr[], int size) ; //  此排序后按需要的cpu时间从小到大排列
void Fcfs( Process pr[], int num, int Timepice); // 先来先服务算法
void TimeTurn( Process process[], int num, int Timepice); // 时间片轮转算法
void Priority( Process process[], int num, int Timepice); // 优先级算法

void main()
{  
 int a;
 cout<>a; 
const int Size =30;
 Process   process[Size] ;
 int num;
 int TimePice;  
cout<<" 输入进程个数:"<>num;
 cout<<" 输入此进程时间片大小: "<>TimePice;
for( int i=0; i< num; i++)
 {  
  string name;
  int CpuTime;
  int Leval;
  cout<<" 输入第"<< i+1<<" 个进程的名字、cpu时间和优先级:"<>name;
  cin>> CpuTime>>Leval;
  process[i].ProcessName =name;
  process[i].Time =CpuTime;
  process[i].leval =Leval;
  cout<0 && temp.levalsize/2;d--)
 {
  Process temp;
  temp=pr [d];
     pr [d] = pr [size-d-1];
  pr [size-d-1]=temp;
}  // 此排序后按优先级从大到小排列
}
/* 最短作业优先算法的实现*/
void sort1 ( Process  pr[], int size)  // 以进程时间从低到高排序
{//  直接插入排序
 for( int i=1;i0 && temp.Time < pr[j-1].Time )
  {
       pr[j] = pr[j-1];
   j--;
  }
    pr[j] = temp;
}  
}
/*  先来先服务算法的实现*/
void Fcfs( Process process[], int num, int Timepice)
{  // process[] 是输入的进程,num是进程的数目,Timepice是时间片大小
while(true)
 {
  if(num==0)
  {
   cout<<" 所有进程都已经执行完毕!"< 0)
    {
          cout< 0)
  {
    cout<

 选择调度算法:

  1: FCFS  2: 时间片轮换 3: 优先级调度 4: 最短作业优先 5: 最短剩余时间优先

1

 输入进程个数:

3

 输入此进程时间片大小:

10

 输入第1 个进程的名字、cpu时间和优先级:

P1 10 1

 输入第2 个进程的名字、cpu时间和优先级:

P2 10 2

 输入第3 个进程的名字、cpu时间和优先级:

P3 10 3

 ( 说明: 在本程序所列进程信息中,优先级一项是指进程运行后的优先级!! )

进程名字共需占用CPU时间  还需要占用时间  优先级   状态

 P1          10                 0                 0      运行

 P2          10                 10                 2      等待

 P3          10                 10                 3      等待

请按任意键继续. . .

 进程P1 已经执行完毕!

请按任意键继续. . .

 P2          10                 0                 1      运行

 P3          10                 10                 3      等待

请按任意键继续. . .

 进程P2 已经执行完毕!

请按任意键继续. . .

 P3          10                 0                 2      运行

请按任意键继续. . .

 进程P3 已经执行完毕!

请按任意键继续. . .

 所有进程都已经执行完毕!

Press any key to continue

  选择调度算法:

  1: FCFS  2: 时间片轮换 3: 优先级调度 4: 最短作业优先 5: 最短剩余时间优先

2

 输入进程个数:

2

 输入此进程时间片大小:

10

 输入第1 个进程的名字、cpu时间和优先级:

P1 10 1

 输入第2 个进程的名字、cpu时间和优先级:

P2 10 2

 ( 说明: 在本程序所列进程信息中,优先级一项是指进程运行后的优先级!! )

进程名字共需占用CPU时间  还需要占用时间  优先级   状态

 P1          10                 0                 0      运行

 P2          10                 10                 2      就绪

请按任意键继续. . .

 进程P1 已经执行完毕!

请按任意键继续. . .

 P2          10                 0                 1      运行

请按任意键继续. . .

 进程P2 已经执行完毕!

请按任意键继续. . .

 所有进程都已经执行完毕!

Press any key to continue

  选择调度算法:

  1: FCFS  2: 时间片轮换 3: 优先级调度 4: 最短作业优先 5: 最短剩余时间优先

2

 输入进程个数:

2

 输入此进程时间片大小:

10

 输入第1 个进程的名字、cpu时间和优先级:

P1 10 1

 输入第2 个进程的名字、cpu时间和优先级:

P2 10 2

 ( 说明: 在本程序所列进程信息中,优先级一项是指进程运行后的优先级!! )

进程名字共需占用CPU时间  还需要占用时间  优先级   状态

 P1          10                 0                 0      运行

 P2          10                 10                 2      就绪

请按任意键继续. . .

 进程P1 已经执行完毕!

请按任意键继续. . .

 P2          10                 0                 1      运行

请按任意键继续. . .

 进程P2 已经执行完毕!

请按任意键继续. . .

 所有进程都已经执行完毕!

Press any key to continue

  选择调度算法:

  1: FCFS  2: 时间片轮换 3: 优先级调度 4: 最短作业优先 5: 最短剩余时间优先

2

 输入进程个数:

2

 输入此进程时间片大小:

10

 输入第1 个进程的名字、cpu时间和优先级:

P1 10 1

 输入第2 个进程的名字、cpu时间和优先级:

P2 10 2

 ( 说明: 在本程序所列进程信息中,优先级一项是指进程运行后的优先级!! )

进程名字共需占用CPU时间  还需要占用时间  优先级   状态

 P1          10                 0                 0      运行

 P2          10                 10                 2      就绪

请按任意键继续. . .

 进程P1 已经执行完毕!

请按任意键继续. . .

 P2          10                 0                 1      运行

请按任意键继续. . .

 进程P2 已经执行完毕!

请按任意键继续. . .

 所有进程都已经执行完毕!

Press any key to continue

你可能感兴趣的:(本科课程设计与各类作业汇总,算法,c++,开发语言)