操作系统 作业调度的三种方式 c++实现(代码加结果)

代码实现的算法有三种,第一种是短作业优先(Short Job First)算法,第二种是先来先服务(First Come First Served)算法,第三种是高响应比优先调度(Highest Response Ration Next)算法。最下方会有代码结果截图。

 

代码如下,

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string>
#include<iostream>
#include<time.h>
#include<Windows.h>
using namespace std;
#define MAX_SIZE 6
struct Job {
    int id;
    double run_time;
    double arrive_time;//ms
    double wait_time;//ms
    double level;
    string state;//{ "ready","running","finished" };
};
Job job[MAX_SIZE];
Job queue[MAX_SIZE];
Job queue1[MAX_SIZE];
Job temp;
int n;
void CreateJob();
void FCFServed();
void ShortJobFirst();
void HRRN();
void Print();
int main() {
    cin >> n;
    CreateJob();
    Print();
    //FCFServed();
    //ShortJobFirst();
    HRRN();
    system("pause");
    //return 0;
}
void Print() {
    for (int i = 0; i < n; i++) {
        cout << "ID" << "  " << "RUNTIME" << "  " << "ARRIVINGTIME" << endl;
        cout << job[i].id << "     ";
        cout << job[i].run_time << "          ";
        cout << job[i].arrive_time << endl;
    }
    cout << endl;
}
void CreateJob() {
    for (int i = 0; i < MAX_SIZE; i++) {
        job[i].id = -1;
    }
    for (int i = 0; i < MAX_SIZE; i++) {
        queue[i].id = -1;
    }//INIT
    for (int i = 0; i < MAX_SIZE; i++) {
        queue1[i].id = -1;
    }//INIT
    for (int i = 0; i < n; i++) {
        job[i].id = i;
        cin >> job[i].run_time >> job[i].arrive_time;
        job[i].state = "";
    }
    for (int i = 0; i < n; i++) {//冒泡
        for (int j = 0; j <n - i - 1; j++) {
            if (job[j].arrive_time > job[j + 1].arrive_time) {
                temp.id = job[j].id;
                temp.arrive_time = job[j].arrive_time;
                temp.run_time = job[j].run_time;
                job[j].id = job[j + 1].id;
                job[j].arrive_time = job[j + 1].arrive_time;
                job[j].run_time = job[j + 1].run_time;
                job[j + 1].id = temp.id;
                job[j + 1].arrive_time = temp.arrive_time;
                job[j + 1].run_time = temp.run_time;
            }
        }
    }
}
void FCFServed() {
    int p = 0, p1 = 0;
    double starttime = 0;
    double finishtime = 0;
    cout << "Starting the FCFS..." << endl;
    cout << endl;
    cout << "JobId  " << "arrive_time  " << "run_time  " << "start_time  " << 
  • 5
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值