操作系统
1、课程设计的目的
实现处理器的调度算法
2、课程设计的要求
实现先来先服务,短作业优先,时间片轮转,高相应比优先中的三种
3、课程设计的题目
选择语言实现上述算法的三种,并按照一定的格式输出开始时间,结束时间,周转时间,平均周转,带全周转时间。
实现界面操作,在同一个程序中实现三个算法。
/*
0. 不限制道数的多道程序系统中,有4个作业进入系统
0.0 字符串转换时间
0.1 还是需要一个副本比较好
1. 先来先服务算法就是一个简单的就绪队列
2. 时间片算法与高响应比算法都需要引入时间片(时间片的大小设置为1)
3. 最后就是界面的划分
*/
#include<iostream>
#include<string>
#include<Windows.h>
using namespace std;
//进程的相关信息
struct Pro {
string Name; //作业名
string time_in; //作业进入时间
int time_run; //作业需要占用CPU时间
int time_sy; //作业剩余时间
int time_start; //作业开始运行时间
int time_out; //作业结束时间
int pro_zz; //进程周转时间
Pro(string Name, string time_in, int time_run, bool flag_run, int pro_zz)
{
this->Name = Name;
this->time_in = time_in;
this->time_run = time_run;
this->pro_zz = pro_zz;
this->time_sy = this->time_run;
}
Pro() {}
};
//进程队列的大小,count队列的作业数
Pro arr[10]; //进程副本
Pro arrs[10]; //进程原件
int pro_count = 5;
const int Time_start = 10 * 60;
void FB()
{
for (int i = 0; i < pro_count; ++i)
{
arr[i] = arrs[i];
arr[i].pro_zz = arr[i].time_start = arr[i].time_out = 0;
arr[i].time_sy = arr[i].time_run;
}
}
//四种算法:
void Fifo(); //先来先服务
void Sjf(); //短作业优先
void Fcfs(); //高响应比优先
void Time(); //时间片轮转算法
void Alter(); //修改进程队列
int Show(); //主界面
void Display();
//重载函数:实现格式转换
int time_z(string time); //开始时间-》整型时间
void time_z(int itime); //开始时间+周转时间-》结束时间
int main()
{
//进程的初始化
arrs[0] = { "job1","10:00",5 ,false,0 };
arrs[1] = { "job2","10:05",20,false ,0 };
arrs[2] = { "job3","10:10",25,false ,0 };
arrs[3] = { "job4","10:40",35,false ,0 };
arrs[4] = { "job5","10:55",15 ,false ,0 };
arrs[5] = { "job6","11:00",10 ,false ,0 };
bool flag = true;
while (flag)
{
system("CLS");
int ser_num = Show();
switch (ser_num)
{
case 1:Fifo(); break;
case 2:Sjf(); break;
case 3:Time(); brea