进程的调度算法

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

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

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

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

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

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

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

相关推荐
Decay__3 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子5 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
HideF5 小时前
Linux
linux·服务器·网络
万联WANFLOW5 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
Ruiery7 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
乌恩大侠8 小时前
从 AI-RAN 到 AI Agent:基于 NVIDIA Nemotron 构建 5G/6G 智能网络故障诊断系统
服务器·人工智能·5g·o-ru·ai-ran·电信大模型
Decay__9 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
丰锋ff10 小时前
压缩命令笔记
linux
江华森10 小时前
数据中心基础设施运维实战:概述与实验环境搭建
运维
迪菲赫尔曼10 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测