14|调度算法:操作系统中的进程是如何调度的?
黄清昊
该思维导图由 AI 生成,仅供参考
你好,我是微扰君。
之前我们已经学习了大部分常用的数据结构和一些经典的算法思想,从今天开始,我们将正式迈入算法在真实世界的应用,感受计算机先辈们在解决实际问题时天马行空的智慧之光。希望带给你思维乐趣的同时,也能给你解决实际工作里的问题带来一些启示。
就让我们从操作系统开始说起,作为计算机软件的基石,它是计算机软硬件交汇的关键所在。
当然,操作系统同样是一个非常大的话题,不同历史时期的操作系统都背负着不同的使命。发展至今,随便一个可用的操作系统都有几千万行的代码,上上下下用到的算法肯定也非常多,我们不可能全部涉及,这次会挑出几个关键的算法或者设计来讲解,包括:计算机进程调度算法、内存页面置换算法和日志文件系统。
我们今天要学习的就是进程调度算法,也就是 Process Scheduling Algorithms。
在许多中间件、语言设计甚至日常开发的业务系统中遇到问题时,我们常常会参考操作系统中成熟的解决办法,进程调度就是这样一种常常被借鉴的场景,在不少语言的线程或者协程机制的设计里都有应用。
那操作系统的进程调度到底是如何设计的呢?话不多说,我们开始今天的学习。
进程是什么?
在聊进程调度算法之前,我们先简单复习一些操作系统相关的基础概念。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了操作系统中的进程调度算法,包括FCFS、SJF和SRTF等。文章首先解释了进程的概念和状态分类,然后详细讨论了各种调度算法的特点和适用场景。其中,FCFS是最简单直接的非抢占式算法,但对短任务不公平;SJF则优先调度短任务,有助于降低平均周转时间;而SRTF在考虑IO情况下,进一步提高了调度的整体吞吐量。此外,文章还提到了抢占式调度和非抢占式调度的区别,以及不同调度算法在实时交互进程和普通进程中的应用。总的来说,本文为读者提供了对进程调度算法的基本了解,以及其在操作系统中的重要性。文章内容涵盖了技术性强、实用性强的进程调度算法,对读者快速了解文章概览具有重要意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《业务开发算法 50 讲》,新⼈⾸单¥59
《业务开发算法 50 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(4)
- 最新
- 精选
- 春风老是,SJF、SRTF怎么知道进程需要的执行时间
作者回复: 春风同学你好,你的这个问题非常不错! 事实上,我们没有办法直接知道任务的执行时间;但我们可以进行预测。 有一类技术叫做 Predict Burst Time ;感兴趣的话可以了解一下;大体分为动态预测和静态预测两种。
2022-01-126 - 林铭铭后面几种调度算法能不能也提供下伪代码或代码?
作者回复: 之后找机会补充~ 也欢迎提供PR到 github.com/wfnuser/Algorithms
2022-01-23 - Paul ShanDDL应该属于非抢占式算法,一种简单的做法是选择结束时间最早的任务调度。
作者回复: Earliest Deadline First 就是一种常用的按照DDL来排序的调度算法;当出现DDL更近的任务时,还是会抢占DDL更远的任务的CPU使用时间的哈。
2022-01-112 - 拓山SJF、SRTF算法可以用小顶堆算法来实现2023-08-10归属地:浙江
收起评论