运行结果:

#include<iostream>
#include<queue>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;class PCB{public:string name;// 进程名称int priority;//进程优先级double arrive_time;//到达时间double service_time;//服务时间string state;//进程状态 run:运行 finish:完成double finish_time;//完成时间double turnround_time;//周转时间double w_turnround_time;//带权周转时间double aver_turnround_time;// 平均周转时间double aver_w_turnround_time;// 平均带权周转时间
};int n_process;//进程数量
vector<PCB> PCB_vector;//pcb数组 负责排序,,给queue传参数
queue<PCB> PCB_queue;//pcb队列 核心算法void Pri(){cout << endl << "*******************************" << endl;cout << "进程名   ";for (int i = 0; i < PCB_vector.size(); i++){PCB t_pcb = PCB_vector.at(i);cout << " " << t_pcb.name;}cout << endl << "到达时间:";for (int i = 0; i < PCB_vector.size(); i++){PCB t_pcb = PCB_vector.at(i);cout << " " << t_pcb.arrive_time;}cout << endl << "服务时间:";for (int i = 0; i < PCB_vector.size(); i++){PCB t_pcb = PCB_vector.at(i);cout << " " << t_pcb.service_time;}cout << endl << "*******************************" << endl;
}void Pri(int time_slice){cout << endl << "********************" << "时间片: " << time_slice << " ********************";cout << endl << endl;cout << "进程名   ";for (int i = 0; i < PCB_vector.size(); i++){PCB t_pcb = PCB_vector.at(i);cout << " " << t_pcb.name;}cout << endl << "完成时间:";for (int i = 0; i < PCB_vector.size(); i++){PCB t_pcb = PCB_vector.at(i);cout << " " << t_pcb.finish_time;}cout << endl << "周转时间:";for (int i = 0; i < PCB_vector.size(); i++){PCB t_pcb = PCB_vector.at(i);cout << " " << t_pcb.turnround_time;}cout << endl << "带权周转时间:";for (int i = 0; i < PCB_vector.size(); i++){PCB t_pcb = PCB_vector.at(i);cout << " " << t_pcb.w_turnround_time;}cout << endl << "****************************************" << endl;
}bool static mysort(PCB a, PCB b){return a.arrive_time < b.arrive_time;
}int main(){cout << "请输入进程数量: ";cin >> n_process;cout << "请输入进程(name,arrive_time,service_time)" << endl;PCB t_pcb;for (int i = 0; i < n_process; i++){cin >> t_pcb.name >> t_pcb.arrive_time >> t_pcb.service_time;t_pcb.aver_turnround_time = 0;//初始化t_pcb.aver_w_turnround_time = 0;t_pcb.finish_time = 0;t_pcb.turnround_time = 0;t_pcb.w_turnround_time = 0;PCB_queue.push(t_pcb);PCB_vector.push_back(t_pcb);}Pri();int runtime = 0;//运行时间PCB_vector.clear();//清空数组while (!PCB_queue.empty()){PCB c_pcb = PCB_queue.front();runtime += c_pcb.service_time;c_pcb.finish_time = runtime;c_pcb.turnround_time = c_pcb.finish_time - c_pcb.arrive_time;c_pcb.w_turnround_time = c_pcb.turnround_time / c_pcb.finish_time;PCB_vector.push_back(c_pcb);PCB_queue.pop();//出队}Pri(1);//输出该时间片结果return 0;
}

FCFS进程调度算法相关推荐

  1. 【操作系统 - 1】先来先服务FCFS和短作业优先SJF进程调度算法

    操作系统系列 学习至此,发现很多学了但很久没用的知识,久而久之,慢慢遗忘.等哪天还需要的话,却发现已经忘得差不多了,即使整理了文档(word等),还是得从头再学一遍.读研第一学期,发现很多东西都可以从 ...

  2. 进程调度算法——C++实现 [ FCFS,SJF,HPR,HRN + 开源代码 + 详细解析 ]

    ✅ (原创,库存,第100篇博客,纪念一下) 文章目录 零.动态演示图 一.实现原理 二.实现内容: 三.算法流程图: 3.1 先来先服务算法(FCFS)的流程图: 3.2 最短作业优先算法(SJF) ...

  3. 操作系统实验二——进程调度算法(FCFS、RR)

    目录 进程调度算法 FCFS算法代码 RR算法代码 进程调度算法 FCFS算法代码 #include <stdio.h> #include <string.h> #includ ...

  4. 进程调度算法FCFS和RR

    一. 实验题目 本次试验要求编写的是进程调度中的FCFS算法和RR算法(轮转法). FCFS算法:最简单的CPU调度算法,采取先到先服务的规则,不存在进程优先级之说,也不管进程服务时间的长短,只有前面 ...

  5. 进程调度c语言 fcfs,计算机进程调度算法FCFS、RR、SJF的实现

    调度算法,在Linux环境下用C语言编写程序,模拟FCFS.RR.SJF等进程调度算法,以及利用信号量等方法解决哲学家就餐问题. 在主进程中,创建 20 个子线程,分别模拟进程调度算法FCFS.RR. ...

  6. fcfs和sjf java_Java简单实现进程调度算法 FCFS和SJF

    import java.text.DecimalFormat; import java.util.LinkedList; import java.util.List; import java.util ...

  7. java实现fcfs_JAVA从入门到精通之实现进程调度算法 FCFS

    本篇教程探讨了JAVA从入门到精通之实现进程调度算法 FCFS,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. < FCFS类(主类) 只有calc()中涉及了算法,ini ...

  8. 《操作系统》实验一:先来先服务FCFS和短作业优先SJF进程调度算法

    [实验题目]:先来先服务FCFS和短作业优先SJF进程调度算法 [实验学时]:4学时 [实验目的] 通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变.进程调度的策略及对系统性能的评价方法. ...

  9. 计算机操作原理进程调度算法---先来先服务,短进程优先(C语言)

    目录 先来先服务调度算法: 短进程优先调度算法: 两种进程调度算法优缺点 思维导图 程序代码: 先来先服务调度算法: 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可 ...

最新文章

  1. 一封绝妙的情书 An Ingenious Love Letter
  2. 突然明白了如何看待细枝末节
  3. php 结果集 json,在PHP中提取JSONP结果集
  4. Python稳基修炼的经典案例12(计算机二级、初学者必会的字符文件处理)
  5. CSS显示:内联vs内联块[重复]
  6. LVM逻辑卷管理@设备、格式、摩、引导自己主动安装一个完整的章节
  7. html 链接 vf,VFP中超链接实现方法
  8. matlab 加随机数,随机数加上100:Matlab
  9. 物联公司网页设计制作 简单静态HTML网页作品 静态企业网页作业成品 学生网站模板
  10. OEM 13c 监控RAC部署
  11. k8s+docker集群整合搭建(完整版)
  12. running_mean和running_var
  13. java中获得词根的方法_分析在各大考纲词汇中同时拥有前缀后缀和词根的词(一)...
  14. 用python按比例调整图片尺寸
  15. C# arcengine 属性快速浏览
  16. Android HorizontalScrollView 水平滑动 在listview上面动态添加图片
  17. 什么是 ARPU 为什么你应该关心 ARPU?
  18. ifconfig 发现RX dropped 数字比较大的理解
  19. SecureCRT和SecureFX用法
  20. 从大盘数据看A股是否为政策市

热门文章

  1. 《香帅金融学讲义》读书笔记
  2. 【分享】仿东软OA协同办公服务管理源码
  3. ubuntu docker dm_task_run failed error
  4. 服务器电池维修,服务器电池电量低判断方法
  5. css调整标签内背景图片的大小和位置
  6. 计算机网络 | 网络互联技术与设备
  7. 从Dinic到ISAP,从余流推进到最高标号的预留推进HLPP(究极最大流算法)
  8. 宝藏网站!机器学习概念可视化;LeetCode面试必看清单;104个Python数据科学实战项目;必应超清壁纸;前沿论文 | ShowMeAI资讯日报
  9. STM32F103 中断优先级理解
  10. PCIe4.0的Add-in-Card(AIC)金手指layout建议