1. 引言
在多进程环境下,虽然从概念上看,有多个进程在同时执行,但在单个cpu下,实际上任何时刻只能有一个进程处于执行状态。而其它进程处于非执行状态。那么就有一个需要解决的问题:我们是如何确定在任意时刻到底由哪个进程执行,哪些进程不执行呢?或者说我们是如何进程调度的呢?
1.1 进程调度定义
进程调度就是操作系统管理进程管理的一个重要组成部分。其任务是选择下一个要执行的进程。那么如何进行选择呢?要探明这一点,首先需要确定操作系统进程调度的目标是什么。有了目标,我们就知道选择什么样的进程调度算法最合适了。
通常情况下,程序使用cpu的模式有3种:
- CPU密集型:大部分时间在cpu上执行较长时间,接着进行短暂的输入,然后在cpu上进行较长时间间的运算。
- I/O密集型:程序大部分时间在进行输入输出,每次io后进行短暂的cpu执行。
- 平衡型/混合型:程序介于前两种模式之间
1.2 进程调度目标
2. 进程调度算法
2.1 先来先服务调度算法
2.2 时间片轮转调度算法
2.3 短任务优先调度算法
2.4 优先级调度算法
2.5 混合调度算法
2.6 其它调度算法
2.7 实时调度算法