前言
在简单的单核计算机中,往往 仅执行一个任务,比如最常见的单片机控制器,或是其他的简单控制设备,仪器。
比如楼下门卫的刷卡器,就只执行一段代码:即将刷卡器捕获的磁卡 ID 通过串口传送给上位机,而不是同时在进行数字货币的开采,或者音视频的播放(你也没见过哪个门卫大爷拿刷卡器挖矿,听戏,对吧?
而在复杂的计算机设备中,为了满足用户的需求,往往是有多个执行流在并行的运行,换句话说,有 多个程序 在跑!
但是我们只有一个 CPU,根据体系结构常识,一个 CPU 能且仅能同时跑一段程序,怎么办呢?我又想起我上大学物理的时候,老师说过的一句话:“仪器不够你们轮着用啊!”
是的,轮流使用 CPU 即可满足多个程序 “同时” 执行,那么问题就来了:怎么轮流?这么多程序谁先谁后使用 CPU,使用多长时间?这些问题都是处理机调度算法所研究,并且致力于实现的目标。
调度评估标准
如果一堂实验课,老师安排大伙轮流使用仪器,而你们班一半的同学都用不到仪器,反观隔壁班大伙都用上了仪器并且完成了实验,你肯定会说 ”🐖 比吧这是“
一个调度是不是好调度,需要有一定的标准来对其进行评估。周转时间 是一个最直观的评价方式,周转时间有如下的定义:
T i = 完 成 时 刻 − 进 入 时 刻 T_i = 完成时刻 - 进入时刻 Ti=完成时刻−进入时刻
即从发起调度请求,到完成调度所用的时间,换句话说:从你到实验室做实验开始,直到你离开实验室为止,这一段时间叫做周转时间。
值得注意的是,周转时间可能包含了你等待实验仪器的时间,毕竟他是从你进入实验室就开始算的。
但是有时候一个 5 分钟就能搞定的测量实验,你下午两点去,下午四点才做完,你有 115 分钟的时间在等待,不用我说你也知道这是一个坏调度!
所以实操时间与总时间的比值也是衡量调度好坏的标准,于是引入 带权周转时间,它的定义如下:
W i = 周 转 时 间 实 际 运 行 时 间 {} \\ W_i = \frac{周转时间}{实际运行时间} \\ {} \\ Wi=