进程的调度算法

进程调度的核心就是决定 CPU 该让哪个进程跑、跑多久,不同的调度算法适合不同场景。

1)先来先服务 FCFS:谁先到就先让谁跑完,实现最简单。问题是如果前面来了个执行 10 秒的大任务,后面排着一堆只需要 10ms 的小任务,全都得干等着。

2)短作业优先 SJF:执行时间短的优先跑,能把平均等待时间压到最低。但问题是你得提前知道每个任务要跑多久,实际系统里这个数字很难拿到。还有个抢占式版本叫 SRTF,剩余时间最短的优先。

3)优先级调度:给每个进程打个优先级分数,分高的先跑。系统进程一般优先级比用户进程高。坑点是低优先级的任务可能永远排不上队,这叫饥饿。

4)时间片轮转 RR:每个进程跑一个固定时间片,比如 10ms,时间一到就切到下一个。Linux 桌面系统基本都用这个思路,能保证每个程序都有响应。

5)多级反馈队列 MLFQ:把上面几种算法揉在一起。新来的进程先扔高优先级队列,时间片短;如果一个时间片没跑完就往下降一级,时间片变长。短任务很快就能跑完出去,长任务慢慢沉到底层队列用大时间片跑。

6)最高响应比优先 HRRN:通过计算响应比来决定下一个被调度的进程,适合在批处理环境中平衡长短任务的等待时间,防止短任务过多导致长任务饥饿。

相关推荐
wd5i8kA8i4 小时前
自研多线程 SSH 极速文件传输助手(附 GitHub 源码)
运维·ssh·github
Boop_wu5 小时前
[Java 算法] 字符串
linux·运维·服务器·数据结构·算法·leetcode
m0_694845575 小时前
Dify部署教程:从AI原型到生产系统的一站式方案
服务器·人工智能·python·数据分析·开源
菱玖6 小时前
SRC常见漏洞情况分类
运维·安全·安全威胁分析
码云数智-大飞6 小时前
C++ RAII机制:资源管理的“自动化”哲学
java·服务器·php
SkyXZ~7 小时前
Jetson有Jtop,Linux有Htop,RDK也有Dtop!
linux·运维·服务器·rdkx5·rdks100·dtop
黑牛儿7 小时前
MySQL 索引实战详解:从创建到优化,彻底解决查询慢问题
服务器·数据库·后端·mysql
舒一笑8 小时前
一次“翻车”的部署,让我看清了技术、权力和职场的真相
运维·程序员·创业
starvapour8 小时前
Ubuntu系统下基于终端的音频相关命令
linux·ubuntu·音视频
杨云龙UP8 小时前
Oracle Data Pump实战:expdp/impdp常用参数与导入导出命令整理_20260406
linux·运维·服务器·数据库·oracle