当前位置: 首页 > article >正文

操作系统面试必问:FCFS、SJF、HRRN调度算法到底怎么算?一个例子讲透

操作系统面试必问FCFS、SJF、HRRN调度算法实战解析在计算机操作系统的面试中进程调度算法几乎是必考的核心知识点。无论是校招笔试还是技术面谈面试官都喜欢用给定一组进程的到达时间和服务时间请计算不同调度算法下的完成时间和周转时间这类题目来考察候选人对操作系统原理的理解深度。本文将用同一组进程数据手把手带你演练FCFS、SJF、HRRN三种经典调度算法的完整计算过程帮你建立清晰的解题框架。1. 理解进程调度的基本概念进程调度是操作系统内核的核心功能之一它决定了CPU资源如何分配给多个竞争执行的进程。一个优秀的调度算法需要在公平性和效率之间找到平衡点同时考虑响应时间和吞吐量等关键指标。关键术语解析到达时间(Arrival Time): 进程进入就绪队列的时间点服务时间(Serve Time): 进程需要占用CPU执行的总时间完成时间(Finish Time): 进程结束执行的时间点周转时间(Turnaround Time): 完成时间减去到达时间带权周转时间(Weighted Turnaround Time): 周转时间与服务时间的比值提示带权周转时间反映了进程的相对等待成本数值越小表示调度效率越高我们以这组进程数据为例贯穿全文演示计算过程进程到达时间服务时间A03B26C44D65E822. 先来先服务(FCFS)调度算法详解FCFS(First Come First Serve)是最直观的调度策略就像超市收银台排队一样严格按照进程到达的顺序分配CPU资源。2.1 FCFS算法执行流程初始化维护一个时间线变量current_time初始为0调度规则选择当前已到达但未执行的进程中到达时间最早的如果多个进程同时到达通常按输入顺序处理计算步骤进程开始执行时间 max(进程到达时间, 前一个进程完成时间)完成时间 开始执行时间 服务时间周转时间 完成时间 - 到达时间带权周转时间 周转时间 / 服务时间2.2 实例计算过程让我们用表格形式展示FCFS算法的完整计算过程进程到达时间服务时间开始时间完成时间周转时间带权周转时间A030331.0B263971.17C4491392.25D651318122.4E821820126.0执行时间线可视化0-3:A | 3-9:B | 9-13:C | 13-18:D | 18-20:E2.3 FCFS算法的特点分析优势实现简单调度开销小对所有进程公平无饥饿现象劣势平均等待时间较长本例中为8.6对短作业不友好如进程E的带权周转时间高达6.0可能导致CPU和I/O设备利用率低下注意FCFS算法在进程到达顺序不理想时可能出现护航效应(Convoy Effect)即长进程阻塞后方短进程的执行3. 短作业优先(SJF)调度算法深度剖析SJF(Shortest Job First)算法试图优化系统平均周转时间优先执行预计运行时间短的进程。3.1 SJF算法的两种变体非抢占式SJF一旦进程开始执行就运行到完成抢占式SJF(又称最短剩余时间优先)当新进程到达时如果其服务时间比当前执行进程的剩余时间短则抢占CPU本文重点讲解非抢占式SJF的实现。3.2 SJF算法执行步骤初始状态所有进程标记为未调度current_time 0调度时机每当CPU空闲时初始时或进程完成时选择策略从已到达的未调度进程中选择服务时间最短的计算指标同FCFS算法3.3 实例计算过程让我们逐步计算SJF调度下的各项指标第一轮调度current_time0就绪进程A选择A执行完成时间3第二轮调度current_time3已到达进程B(到达时间2)、C(到达时间4还未到)只有B就绪选择B执行完成时间9第三轮调度current_time9已到达未调度进程C、D、E比较服务时间C(4)、D(5)、E(2)选择E执行虽然E到达时间是8但当前时间已到9完成时间11第四轮调度current_time11剩余进程C(4)、D(5)选择C执行完成时间15第五轮调度current_time15剩余进程D选择D执行完成时间20最终结果表格进程到达时间服务时间开始时间完成时间周转时间带权周转时间A030331.0B263971.17E8291131.5C441115112.75D651520142.8执行时间线0-3:A | 3-9:B | 9-11:E | 11-15:C | 15-20:D3.4 SJF算法优劣分析优势理论上能提供最小的平均周转时间特别适合短作业繁多的场景劣势长作业可能饥饿本例中D进程最后执行需要预知或估算进程运行时间实际系统中难以精确获取实现复杂度高于FCFS4. 高响应比优先(HRRN)调度算法实战HRRN(Highest Response Ratio Next)算法试图平衡等待时间和服务时间克服FCFS和SJF的某些缺点。4.1 响应比计算公式响应比(RR) (等待时间 服务时间) / 服务时间 1 (等待时间 / 服务时间)其中等待时间 current_time - 到达时间4.2 HRRN算法执行流程初始状态current_time0所有进程未调度调度时机CPU空闲时初始或进程完成时选择策略计算所有已到达未调度进程的响应比选择响应比最高的进程执行指标计算同前两种算法4.3 实例逐步计算第一轮调度current_time0只有A到达选择A执行完成时间3第二轮调度current_time3就绪进程B(到达时间2)计算响应比B的等待时间3-21RR11/6≈1.17选择B执行完成时间9第三轮调度current_time9就绪进程C(到达时间4)、D(到达时间6)、E(到达时间8)计算各进程响应比C: 等待时间9-45RR15/42.25D: 等待时间9-63RR13/51.6E: 等待时间9-81RR11/21.5选择响应比最高的C执行完成时间13第四轮调度current_time13就绪进程D、E计算响应比D: 等待时间13-67RR17/52.4E: 等待时间13-85RR15/23.5选择E执行虽然服务时间短但响应比更高完成时间15第五轮调度current_time15剩余进程D选择D执行完成时间20最终结果表格进程到达时间服务时间开始时间完成时间周转时间带权周转时间A030331.0B263971.17C4491392.25E82131573.5D651520142.8执行时间线0-3:A | 3-9:B | 9-13:C | 13-15:E | 15-20:D4.4 HRRN算法特点总结优势兼顾了等待时间和服务时间长作业随着等待时间增加响应比会上升避免了饥饿平均周转时间通常优于FCFS劣势每次调度都需要计算所有就绪进程的响应比开销较大仍然需要预知服务时间5. 三种算法综合对比与面试技巧通过同一组进程数据的计算我们可以直观比较三种算法的表现性能指标对比表算法平均周转时间平均带权周转时间最大带权周转时间FCFS8.62.566.0(E)SJF7.61.842.8(D)HRRN8.02.143.5(E)面试常见问题解析如何选择调度算法批处理系统SJF或HRRN交互式系统时间片轮转或多级反馈队列实时系统优先级调度SJF为什么能提供最小平均周转时间数学上可以证明通过交换论证任何非SJF的调度顺序通过交换相邻的逆序对都能减少平均周转时间HRRN中响应比公式的设计原理分子体现公平性等待时间分母体现效率服务时间形式为(等待服务)/服务而非等待/服务确保数值≥1面试实战建议遇到调度算法题先明确是哪种调度策略画时间线图可以帮助理清思路计算时注意检查进程到达时间与当前时间的关系可以先用简单例子验证算法理解是否正确

相关文章:

操作系统面试必问:FCFS、SJF、HRRN调度算法到底怎么算?一个例子讲透

操作系统面试必问:FCFS、SJF、HRRN调度算法实战解析 在计算机操作系统的面试中,进程调度算法几乎是必考的核心知识点。无论是校招笔试还是技术面谈,面试官都喜欢用"给定一组进程的到达时间和服务时间,请计算不同调度算法下的…...

科技向善:我们可以用技术为社会做些什么?

科技向善:我们可以用技术为社会做些什么? 在数字化浪潮席卷全球的今天,科技已不仅仅是提升效率的工具,更成为推动社会进步的重要力量。从人工智能到大数据,从区块链到物联网,技术的快速发展为人类生活带来…...

【Java Loom响应式转型终极指南】:20年架构师亲授3大性能跃迁关键点,错过再等5年?

第一章:Java Loom响应式转型的底层逻辑与时代必然性在高并发、低延迟、资源敏感型服务日益成为云原生基础设施标配的今天,Java传统线程模型正面临根本性挑战。每个 OS 线程默认占用 1MB 栈空间,且受限于内核调度粒度与上下文切换开销&#xf…...

PowerToys终极指南:5个技巧解决Windows效率工具常见问题

PowerToys终极指南:5个技巧解决Windows效率工具常见问题 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/PowerTo…...

AgentCPM研报助手效果实测:生成高质量行业趋势分析

AgentCPM研报助手效果实测:生成高质量行业趋势分析 1. 引言:当AI遇见专业研报写作 在金融投资、市场研究和学术分析领域,撰写深度研究报告一直是一项耗时费力的工作。传统流程需要分析师花费数天时间收集数据、整理资料、分析趋势&#xff…...

StarUML 6.0.1 永久授权与汉化一体化解决方案(含自动补丁工具)

1. StarUML 6.0.1 永久授权与汉化方案概述 StarUML作为一款轻量级的UML建模工具,在6.0.1版本中引入了更完善的类型支持和性能优化。但对于国内用户而言,官方高昂的订阅费用和纯英文界面始终是两大使用门槛。本文将介绍一种通过Python脚本实现的一体化解决…...

如何通过智能数据分析实现工业级PID参数优化策略?

如何通过智能数据分析实现工业级PID参数优化策略? 【免费下载链接】PIDtoolbox PIDtoolbox is a set of graphical tools for analyzing blackbox log data 项目地址: https://gitcode.com/gh_mirrors/pi/PIDtoolbox 面对工业控制系统中PID参数整定的复杂挑战…...

3分钟从文档到演示文稿:PPTAgent智能生成完整指南

3分钟从文档到演示文稿:PPTAgent智能生成完整指南 【免费下载链接】PPTAgent An Agentic Framework for Reflective PowerPoint Generation 项目地址: https://gitcode.com/gh_mirrors/pp/PPTAgent 你是否还在为制作演示文稿而烦恼?PPTAgent是一款…...

CVPR 2024最佳学生论文Mip-Splatting:手把手教你从零配置环境到跑通第一个3D场景

CVPR 2024最佳学生论文Mip-Splatting:从零配置环境到跑通第一个3D场景 当3D Gaussian Splatting遇上抗锯齿技术,CVPR 2024最佳学生论文Mip-Splatting为实时神经渲染领域带来了突破性进展。不同于传统方法在视角变化时出现的走样问题,这项技术…...

黑苹果触摸板终极配置指南:从卡顿到流畅的完整解决方案

黑苹果触摸板终极配置指南:从卡顿到流畅的完整解决方案 【免费下载链接】Hackintosh Hackintosh long-term maintenance model EFI and installation tutorial 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintosh 还在为黑苹果触摸板的生硬操作而烦恼吗…...

Python爬虫新手必看:Image-Downloader搭配ChromeDriver的完整配置指南(附常见报错解决)

Python爬虫实战:Image-Downloader与ChromeDriver的深度配置手册 当你第一次尝试用Python爬取网页图片时,是否曾被各种环境配置问题搞得焦头烂额?作为过来人,我完全理解那种看着满屏报错信息却无从下手的挫败感。本文将带你深入理解…...

如何永久保存微信聊天记录?WeChatMsg数据自主管理完整指南

如何永久保存微信聊天记录?WeChatMsg数据自主管理完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…...

高精度智慧校园安防场景图像识别 校园安全预警系统 校园安防设备智能化识别 深度学习YOLO与校园数字化智能化应用第10393期

数据集 README一、数据集核心信息项目详情类别数量及中文名称9 类(大型构件、门禁、应急门、一键报警、防撞设施、通讯工具、入侵检测、金属探测器、电视)数据总量7000 条数据集格式YOLO 格式最重要应用价值1. 支撑校园安防场景下的目标检测算法训练&…...

3个步骤实现Zotero笔记与Obsidian双向同步:告别手动复制粘贴

3个步骤实现Zotero笔记与Obsidian双向同步:告别手动复制粘贴 【免费下载链接】zotero-better-notes Everything about note management. All in Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-better-notes Zotero-Better-Notes的Markdown双向…...

Lumafly:空洞骑士模组管理器的完整使用指南与技巧分享

Lumafly:空洞骑士模组管理器的完整使用指南与技巧分享 【免费下载链接】Lumafly A cross platform mod manager for Hollow Knight written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/lu/Lumafly Lumafly是一款专为《空洞骑士》玩家设计的跨平…...

Anthropic超级模型Mythos引发全球金融安全震荡

Mythos模型引发2万亿美元SaaS市场浩劫短短一年内,SaaS市场遭遇了一场前所未有的浩劫,近2万亿美元的财富凭空蒸发。这一切源于Anthropic发布的Claude Opus和一系列Agent工具,直接引发了企业软件股(SaaS)的暴跌。长期以来…...

Fish Speech 1.5实操手册:API返回JSON结构解析与错误码处理最佳实践

Fish Speech 1.5实操手册:API返回JSON结构解析与错误码处理最佳实践 1. 引言:为什么需要关注API返回结构? 当你第一次调用Fish Speech 1.5的API时,可能会遇到这样的困惑:返回的JSON数据里各个字段代表什么&#xff1…...

郭老师-如何判断一个人有没有领导力

如何判断一个人有没有领导力 ——从魅力到思想力的四重修炼“真正的领导力, 不在于个人魅力, 而在于—— 带领团队做出成绩, 赢得信任, 并拥有清晰的战略思想。”🌿 领导力的核心, 是绩效导向, …...

告别盲调!用VCS+DVE命令行(UCLI)高效调试SystemVerilog测试平台

高效调试SystemVerilog测试平台的命令行艺术:VCSUCLI实战指南 在数字芯片验证领域,调试环节往往占据工程师70%以上的工作时间。当面对包含数十万行代码的复杂测试平台时,传统的图形界面调试方式就像用放大镜观察星空——虽然清晰但效率低下。…...

【SITS2026权威发布】:全球首个大模型工程化成熟度模型(LMM-Maturity™ v1.0)正式落地,你的团队达标第几级?

第一章:SITS2026发布:大模型工程化成熟度模型 2026奇点智能技术大会(https://ml-summit.org) SITS2026(Software Intelligence & Trustworthiness Scale 2026)是首个面向大模型全生命周期的工程化成熟度评估框架&#xff0c…...

JFlashV7.52反读失败问题解决-Timeout while checking target RAM, RAMCode did not respond in time.

使用JFlash 软件 对GD32F407VET6芯片反读时提示错误Timeout while checking target RAM, RAMCode did not respond in time;如下图:2、options->Project setting --> MCU --> Target RAM settings 检查RAM设置, Size 改为128&#…...

SDC实战解析 —— 复杂时钟树约束中的互斥与条件分析

1. 复杂时钟树约束的核心挑战 在芯片设计中,时钟树就像人体血液循环系统一样重要。想象一下,如果心脏跳动节奏紊乱,全身器官都会出问题。同样,当时钟信号不能准确同步到达各个寄存器时,整个芯片就会"心律不齐&quo…...

季节主题作品展:LiuJuan20260223Zimage模型生成“春夏秋冬”四时美景

季节主题作品展:LiuJuan20260223Zimage模型生成“春夏秋冬”四时美景 最近在尝试用AI模型进行艺术创作,发现了一个挺有意思的模型——LiuJuan20260223Zimage。它特别擅长处理带有文化意境和自然主题的画面。为了测试它的能力,我决定让它挑战…...

GitHub中文化插件:如何让全球开发者平台真正属于中文用户?

GitHub中文化插件:如何让全球开发者平台真正属于中文用户? 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 对于…...

Hunyuan-MT-7B应用案例:如何用它搭建企业内部多语言翻译平台

Hunyuan-MT-7B应用案例:如何用它搭建企业内部多语言翻译平台 1. 企业多语言翻译的痛点与解决方案 在全球化的商业环境中,企业经常面临多语言沟通的挑战。无论是跨国业务往来、多语言文档处理,还是内部员工交流,语言障碍都可能成…...

【LaTeX】高效写作指南:(三)VSCode与SumatraPDF的LaTeX环境完美配置

1. 为什么选择VSCodeSumatraPDF组合 第一次接触LaTeX时,我用过各种编辑器:从老牌的TeXworks到功能复杂的TeXstudio,最后发现VSCodeSumatraPDF这个组合才是真正的生产力神器。VSCode的轻量级特性让它启动速度飞快,而SumatraPDF的极…...

GPUStack 在华为昇腾 I A 服务器上的保姆级部署指南参

开发个什么Skill呢? 通过 Skill,我们可以将某些能力进行模块化封装,从而实现特定的工作流编排、专家领域知识沉淀以及各类工具的集成。 这里我打算来一次“套娃式”的实践:创建一个用于自动生成 Skill 的 Skill,一是用…...

Deneyap Mikrofon库:ICS-40619数字麦克风的Arduino I²C驱动详解

1. 项目概述Deneyap Mikrofon 是一款专为 Deneyap 教育开发平台设计的 Arduino 兼容库,面向 ICS-40619 数字 MEMS 麦克风模组。该库并非通用音频处理框架,而是聚焦于嵌入式场景下对 ICS-40619 的低开销、确定性、可移植性 IC 接口抽象。其核心价值在于将…...

Windows苹果设备驱动安装难题的终极解决方案

Windows苹果设备驱动安装难题的终极解决方案 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mirrors/ap/Apple-Mobile…...

STM32开发者必看:Openocd烧录全流程详解(附Keil生成bin文件技巧)

STM32开发者必看:Openocd烧录全流程详解(附Keil生成bin文件技巧) 在嵌入式开发领域,STM32系列微控制器因其出色的性能和丰富的生态而广受欢迎。对于开发者而言,掌握高效可靠的烧录工具是提升开发效率的关键一环。Openo…...