操作系统-处理机调度-先来先服务算法(FCFS)

2024-03-17 09:20

本文主要是介绍操作系统-处理机调度-先来先服务算法(FCFS),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include <iostream>
#include <string.h>
#include <iomanip>struct job {char name[10];      //作业的名字int reachtime;      //作业到达系统时间int starttime;       //作业开始时间int needtime;       //作业服务时间int runtime;        //作业周转时间int endtime;        //作业结束时间int flag;           //作业完成标志char state; 		//作业状态,一开始都默认为就绪double dqzz_time;    //带权周转时间
};/* 排序算法: 按作业到达系统时间进行排序,最早到达的排在最前面*/
void sort(struct job jobs[50],int n) {int i=0,j=0;char t_name[10];int t_time;for(i=0; i<n; i++) { //按作业到达系统时间进行排序,最早到达的排在最前面for(j=i; j<n; j++) { //按作业到达系统时间进行排序,最早到达的排在最前面if(jobs[j].reachtime<jobs[i].reachtime) {//把到达时间早的赋值到t_timet_time=jobs[j].reachtime;jobs[j].reachtime=jobs[i].reachtime;jobs[i].reachtime=t_time;//把到达时间早的赋值到t_timet_time=jobs[j].needtime;jobs[j].needtime=jobs[i].needtime;jobs[i].needtime=t_time;strcpy(t_name,jobs[j].name);strcpy(jobs[j].name,jobs[i].name);strcpy(jobs[i].name,t_name);//在t_name数组中排序}}}
}/*  先来先服务算法  */
void fcfs(struct job jobs[50],int n) {int i=0;int nowtime=0;//系统时间for(i=0; i<n; i++) {if(nowtime<jobs[i].reachtime) {jobs[i].starttime=jobs[i].reachtime;} else  jobs[i].starttime=nowtime;jobs[i].state='R';  //运行状态:runningjobs[i].endtime=jobs[i].starttime+jobs[i].needtime;   //结束时间jobs[i].runtime=jobs[i].endtime-jobs[i].reachtime;   //周转时间jobs[i].dqzz_time=double(jobs[i].runtime)/jobs[i].needtime; //带权周转时间nowtime=jobs[i].endtime; //更新当前时间jobs[i].state='F';}
}/* 输入作业的开始条件:作业名、到达时间、服务时间 */
void input(struct job jobs[50],int n) {int i;printf("请输入各作业的信息(格式:作业名 到达时间 服务时间):\n");for(i=0; i<n; i++) {scanf("%s",jobs[i].name); //作业名scanf("%d",&jobs[i].reachtime);//到达时间scanf("%d",&jobs[i].needtime);//运行(服务时间)时间}printf("\n");
}/*  输出打印   每项作业的各种信息 */
void print(struct job jobs[50],int n) {int i;double avertime;double dqzz_avertime;int sum_runtime=0;double  sum_time=0.00;printf("作业名  到达时间 开始时间  运行时间 完成时间 周转时间 带权周转时间\n");for(i=0; i<n; i++) {printf("%s       %2d        %2d        %2d       %2d        %2d        %.2f\n",jobs[i].name,jobs[i].reachtime,jobs[i].starttime,jobs[i].needtime,jobs[i].endtime,jobs[i].runtime,jobs[i].dqzz_time);sum_runtime=sum_runtime+jobs[i].runtime;sum_time=sum_time+jobs[i].dqzz_time;}avertime=sum_runtime*1.0/n;dqzz_avertime=sum_time*1.000/n;printf("平均周转时间:%.2f \n",avertime);printf("平均带权周转时间:%.3f \n",dqzz_avertime);printf("\n");
}int main() {struct job jobs[50]= {};int n; //n个作业printf("请输入作业个数:");scanf("%d",&n);input(jobs,n);//输入功能:输入作业的初始条件sort(jobs,n); //排序算法:按照作业到达时间排序,先到达的排在前面,由小到大排序fcfs(jobs,n);//先来先服务算法printf("先来先服务(FCFS)调度算法运行结果:\n");print(jobs,n);//输出功能:输出打印作业的各项信息}

这篇关于操作系统-处理机调度-先来先服务算法(FCFS)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818533

相关文章

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ