毫无疑问,最简单的 CPU 调度算法是先来先服务(FCFS)调度箅法。釆用这种方案,先请求 CPU 的进程首先分配到 CPU。
FCFS 策略可以通过 FIFO 队列容易地实现。当一个进程进入就绪队列时,它的 TCB 会被链接到队列尾部。当 CPU 空闲时,它会分配给位于队列头部的进程,并且这个运行进程从队列中移去。FCFS 调度代码编写简单并且理解容易。
FCFS 策略的缺点是,平均等待时间往往很长。假设有如下一组进程,它们在时间 0 到达,CPU 执行长度按 ms 计:

进程 执行时间
P1 24
P2 3
P3 3

如果进程按 P1、P2、P3 的顺序到达,并且按 FCFS 顺序处理,那么得到如下 Gantt 图所示的结果(这种 Gantt 图为条形图,用于显示调度情况,包括每个进程的开始与结束时间):

进程 P1 的等待时间为 0ms,进程 P2 的等待时间为 24ms,而进程 P3 的等待时间为 27ms。因此,平均等待时间为 (0 + 24 + 27)/3 = 171ms。不过,如果进程按 P2、P3、P1 的顺序到达,那么结果如以下 Gantt 图所示:

现在平均等待时间为 (6 + 0+3)/3 = 3ms。这个减少是相当大的。因此,FCFS 策略的平均等待时间通常不是最小,而且如果进程的 CPU 执行时间变化很大,那么平均等待时间的变化也会很大。

另外,考虑动态情况下的 FCFS 调度性能。假设有一个 CPU 密集型进程和多个 I/O 密集型进程。随着进程在系统中运行,可能发生如下情况:CPU 密集型进程得到 CPU,并使用它。在这段时间内,所有其他进程会处理完它们的 I/O,并转移到就绪队列来等待 CPU。当这些进程在就绪队列中等待时,I/O 设备空闲。最终,CPU 密集型进程完成 CPU 执行并且移到 I/O 设备。所有 I/O 密集型进程,由于只有很短的 CPU 执行,故很快执行完并移回到 I/O 队列。这时,CPU 空闲。之后,CPU 密集型进程会移回到就绪队列并分配到 CPU。再次,所有 I/O 进程会在就绪队列中等待 CPU 密集型进程的完成。由于所有其他进程都等待一个大进程释放 CPU,故称之为护航效果。与让较短进程先进行相比,这会导致 CPU 和设备的使用率降低。

护航效应说明:

也要注意,FCFS 调度算法是非抢占的。一旦 CPU 分配给了一个进程,该进程就会使用 CPU 直到释放 CPU 为止,即程序终止或是请求 I/O。FCFS 算法对于分时系统(每个用户需要定时得到一定的 CPU 时间)是特别麻烦的。允许一个进程使用 CPU 过长将是个严重错误。


结束!

先来先服务调度(FCFS)算法及优缺点相关推荐

  1. 1.2.7存储结构-磁盘管理:磁盘移臂调度算法、先来先服务(FCFS)、最短寻道时间优先(SSTF)、扫描算法(SCAN)、循环扫描(CSCAN)

    1.2.7存储结构-磁盘管理:磁盘移臂调度算法.先来先服务(FCFS).最短寻道时间优先(SSTF).扫描算法(SCAN).循环扫描(CSCAN) 先来先服务(FCFS) 最短寻道时间优先(SSTF) ...

  2. 调度算法先来先服务(FCFS)、最短作业优先(SJF)和最高响应比优先(HRRN)算法

    一.调度算法 (一)先来先服务(FCFS,First Come First Serve) 例题:各进程到达就绪队列的时间.需要的运行时间如下表所示.使用先来先服务调度算法,计算各进程的等待时间.平均等 ...

  3. Java操作系统进程调度算法——先来先服务(FCFS)算法

    Java操作系统进程调度算法--先来先服务(FCFS)算法 Java操作系统进程调度算法--先来先服务(FCFS)算法 文章目录 Java操作系统进程调度算法--先来先服务(FCFS)算法 前言 一. ...

  4. 操作系统进程(作业)调度常见算法详解

    一.进程调度的原因 在操作系统中,由于进程综述多于处理机,它们必然竞争处理机.为了充分利用计算机系统中的CPU资源,让计算机系统能够多快好省地完成我们让它做的各种任务,所以需要进行进程调度. 二.进程 ...

  5. CPU调度算法——FCFS算法/SJF算法/优先级调度算法/RR算法

    文章目录 一.先来先服务(FCFS)调度算法 二.最短作业优先(SJF)算法 1. 非抢占式SJF 2. 抢占式SJF 三.优先级调度算法 1. 非抢占式优先级调度算法 2. 抢占式优先级调度算法 四 ...

  6. 操作系统:磁盘调度算法FCFS算法(c语言)

    实验题目: 磁盘调度算法FCFS算法 实验内容: 磁盘访问序列和磁头起始位置(自己输入数据),采用SSTF磁盘调度算法,求平均寻道长度. 实验目的: 本课程设计的目的是通过磁盘调度算法设计一个磁盘调度 ...

  7. 处理机调度算法模拟实验——FCFS算法,SJF调度算法

    处理机调度算法模拟实验 一.实验目的 本实验模拟在单处理机情况下的处理机调度算法,用某种编程语言实现先来先服务和最短作业优先调度算法的模拟. 二.实验原理 1.先来先服务调度算法原理: 先来先服务调度 ...

  8. 操作系统之先来先服务(FCFS)实现代码

    完成与:2013.12.11 实验步骤: 1. 算法的思想 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度.采用FCFS算法,每次从后备队列中选择一个或 ...

  9. 机器学习常见的分类算法的优缺点

    1. 前言 在机器学习中,种类最多的一类算法要属很类算法,本文对机器学习中的各种分类算法的优缺点做一个总结. 2. 贝叶斯分类法 2.1 优点 所需估计的参数少,对于缺失数据不敏感. 有着坚实的数学基 ...

最新文章

  1. 【Laravel】只保留Auth::routes()的登录,关闭Auth::routes()的注册、重置密码、验证路由
  2. 忘记mysql登录密码怎么办
  3. 康奈尔ECE MEng项目拒信+1 哈哈哈
  4. PR值:PagePank算法
  5. java猜拳游戏代码_Java实现简单猜拳游戏
  6. 程序员修神之路--高并发系统设计负载均衡架构
  7. pythonjson序列化_Python Json序列化与反序列化的示例
  8. SpringBoot三招组合拳,手把手教你打出优雅的后端接口
  9. 并行程序设计导论_C程序设计导论
  10. 各省简称 拼音 缩写_近50个拼音/英文缩写合集 (一)
  11. 新华字典电子版_《新华字典》不收[王莹]字考证
  12. PostgreSQL10.1-CN-v0.1.chm中文手册
  13. 五金机械行业外贸管理软件解决方案
  14. Pina Colada Song现实版
  15. 快手公布于香港联交所主板上市计划详情,拟融资394.77亿港元
  16. python基础教程读书笔记_《Python基础教程》读书笔记10
  17. 2021年软考时间阶段
  18. 网吧管理系统C语言作业,C语言课程设计-网吧管理系统.doc
  19. 集群通信TIPC协议
  20. C# Lambda 表达式

热门文章

  1. 读后有感!吴军博士的新书《见识》
  2. 如何从德州仪器官网得到protel(AD)库文件(原理图和封装)
  3. 一图掌握项目管理的核心工具WBS工作分解结构,PM必备技能
  4. java获取零时区时间戳
  5. hana数据库导入到oracle,SAP HANA SLT 将Oracle表 数据同步到HANA数据库
  6. 马云的演讲,非常喜欢。
  7. SOSO平台部产品总监聊产品经理这一行
  8. 实施工程师常用linux命令,Linux运维工程师:30道面试题整理
  9. VDP部署图解及注册失败处理
  10. Ubuntu16.04+Cuda9.1+Cudnn7.5+Anaconda3(Python3.6)+opencv3.4.1+caffe编译安装(多坑已排!)