前面我们已经总结了process的一些基本信息,进程是程序运行的一个基本单位。当进程运行的时候,需要占用CPU,如果当多个进程需要运行的时候,我们该怎么安排这些进程占用CPU呢? 这就是我今天要总结的CPU调度了
在正式讨论CPU调度策略之前,我们先来看看CPU调度我们会考虑哪几个方面的因素:
- turnaround时间(周转时间):任务完成时间 - 任务到达时间
- 响应时间:任务开始运行时间 - 任务到达时间
- 公平性
- 整体性能
在介绍每一种CPU调度策略之后,我会从这四个方面来分析调度策略的优点和缺点;
FIFO(First In, First Out)
多个任务都需要使用CPU这个场景很像在路边小吃摊排队的场景,自然而然可以想到谁先来,谁就先被服务。这就是所谓First In, First Out; 也叫First come, First served.
这种调度策略实现起来相对简单,但在某些方面表现却不是十分友好:
假设有三个任务A、B、C同时到达(at time 0),需要运行的时间为1000ms,20ms,20ms。这个时候先执行A,再执行任务B,最后执行任务C;
在这种情况下,任务B和C各自只是用CPU时间20ms,却要等上1000ms。一旦先来运行的是个耗时比较长的任务,那后面到来耗时短的任务需要等待很长时间才能上CPU运行;这种策略