作业调度算法-先到先服务(FCFS)
关于先到先服务算法,我这里只陈述几个要点:
1.为什么缩写是FCFS?
first-come first-served,先到先服务。
2.FCFS算法中优先级的评定标准?
优先级根据等待时间来确定,等待时间越长,优先级越高,越优先执行。
3.为什么说等待时间越长FCFS算法调度作业的优先级越高?
这个问题开始挺纠结我的,不晓得大家有没有纠结过,给大家做一个比喻,当前一个饭店处于爆满状态(处理机调度作业此时处于忙碌状态),而此时还有好多顾客去吃饭(有好多新的作业进入调度队列),先到的顾客肯定比后到的顾客已经等待的时间要长,因此一旦有位子自然先到的顾客先入座,就是这样。
下面给出FCFS算法的执行模拟:
#include <bits/stdc++.h>using namespace std;
#define max(x, y) x >= y ? x : y
#define min(x, y) x <= y ? x : y#define INF 0x3f3f3f3fconst int maxn = 105;//作业调度的最大数量/*作业控制块的数据结构*/
typedef struct job_control_block
{int priority; //作业优先级int runtime; //作业预计运行时间int Count; //作业执行计数器int waitime; //等待时间} JCB;int font, rear; //调度队列指针
JCB *Queue[maxn]; //作业调度队列
int number; //队列中的作业数
long Time; //模拟时钟/*添加辅助延时函数*/
void Delay()
{for (int i = 0; i < 100000; i++)for (int j = 0;j < 10000; j++) ;
}/*各参数初始化*/
void init()
{font = rear = 0;number = 0;Time = 0;
}/*作业运行器*/
void RunningJob(JCB *job)
{job->Count = 0; //作业计数器归零while (job->Count <= job->runtime) job->Count++; //执行作业delete job; //释放该作业
}/*建立作业*/
void MakeJob(int num, JCB *job)
{for (int i = 0; i < num; i++) {job = new JCB;job->runtime = 10000 + rand() % 10001; //随机化作业的运行时间(10000——20000)job->priority = number;Queue[rear] = job;rear = (rear + 1) % maxn;number++;}
}/*作业调度函数*/
void RunJob()
{while (number > 0) {cout << "Job is running..." << endl;while (Queue[font]->Count <= Queue[font]->runtime) Queue[font]->Count++;Delay(); //延时等待(为了使作业运行显式化)cout <<"Job is finished!" << endl;delete Queue[font];font = (font + 1) % maxn;number--;}
}int main()
{init();while (Time < LONG_MAX) {JCB *job = NULL;int num = rand() % 5; //随机产生作业数量(0——4个)cout << "Creat Jobs number = " << num << endl;MakeJob(num, job); //随机创建num个进程并加入作业调度队列RunJob(); //按照FCFS的执行思路调度作业Time++;}return 0;
}
执行结果:
作业调度算法-先到先服务(FCFS)相关推荐
- 操作系统实验 作业调度算法 先来先服务FCFS调度算法
作业调度算法 先来先服务FCFS调度算法 作业调度的原理: 非抢占调度 把作业从外存调入内存 作业调度算法: 先来先服务FCFS 短作业优先SJF 静态优先级调度 高响应比优先调度 实验原理 作业调度 ...
- 3.处理机调度——作业调度算法与进程调度算法
1.作业调度与进程调度算法 作业调度算法: 先来先服务调度算法(FCFS) 短作业优先调度算法(SJF) 优先级调度算法 高响应比优先调度算法 进程调度算法: 先来先服务调度算法(FCFS) 短进程优 ...
- 操作系统实验六:作业调度算法模拟
一.实验目的 (1)掌握周转时间.等待时间.平均周转时间等概念及其计算方法. (2)理解五种常用的进程调度算法(FCFS.SJF.HRRF.HPF.RR),区分算法之间的差异性,并用C语言模拟实现各算 ...
- 操作系统进程调度算法(FCFS、SJF、高响应比)
进程调度算法(FCFS.SJF.高响应比) 一.算法描述 1.先来先服务(FCFS)调度算法 (1)FCFS是最简单的调度算法,该算法可用于作业调度,也可用于进程调度. (2)算法规则:系统按照作业到 ...
- 【操作系统】调度算法(FCFS、SJF、HRRN、RR、优先级调度、多级反馈队列)
目录 1. 批处理.分时.实时系统 1. 批处理系统 2. 分时系统 3. 实时系统 2. 处理机调度级别 2.1 高级调度(作业调度) 2.2 中级调度 2.3 低级调度(进程调度) 3. 调度算法 ...
- Java操作系统进程调度算法——先来先服务(FCFS)算法
Java操作系统进程调度算法--先来先服务(FCFS)算法 Java操作系统进程调度算法--先来先服务(FCFS)算法 文章目录 Java操作系统进程调度算法--先来先服务(FCFS)算法 前言 一. ...
- Hadoop集群三种作业调度算法介绍
Hadoop集群中有三种作业调度算法,分别为FIFO,公平调度算法和计算能力调度算法 先来先服务(FIFO) Hadoop中默认的调度器FIFO,它先按照作业的优先级高低,再按照到达时间的先后选择被执 ...
- 作业调度算法--高响应比优先 操作系统_处理器管理_编程题
操作系统_处理器管理_编程题 作业调度算法–高响应比优先 输入N个作业,输入每个的作业名字,到达的时间,服务的时间,根据高响应比优先算法,计算出每个作业的完成的时间,周转的时间,带权周转的时间(其中保 ...
- 作业调度算法--短作业优先 操作系统_处理器管理_编程题
操作系统_处理器管理_编程题 作业调度算法–短作业优先 输入N个作业,输入每个的作业名字,到达的时间,服务的时间,根据短作业优先算法,计算出每个作业的完成的时间,周转的时间,带权周转的时间(其中保留2 ...
最新文章
- 【宋红康学习日记11】Object类与equals方法
- 讲你肯定能懂的机器学习多维极值求解
- SWIG,C#沟通C++的桥梁
- 示廓灯——也就是前后位置等开启方法 还有该死的刮水器是长这样的
- 深入浅出C/C++中的正则表达式库(二)——Boost.Regex
- C语言复合赋值运算符
- 直播源码网站,自定制配置页面布局和写法
- 计算机考研专业课王道,王道论坛,专注于计算机考研的点点滴滴!
- chap10 图像分割(数字图像处理/冈萨雷斯)
- 木材材积表快速计算器_原木材积计算器
- Revisiting Time Series Outlier Detection: Definitions and Benchmarks
- 手机黑圆点怎么打_输入法:外国人名字中间的点(实心小黑点)怎么打出来?...
- 218分照样可以成为同声传译研究生3
- MySQL Sending data 查询数据慢
- 程序媛为了万圣节PARTY可谓是别出心裁,她居然cos了一只bug
- 发明专利名称的撰写原则和技巧总结
- SIM卡在手机中的主要作用
- Linux操作系统与Shell编程
- 教室计算机广播控制,小学智能广播系统(模拟广播)系统解决方案
- 再添新彩!忆享科技成为腾讯蓝鲸智云官方服务商