内存中同时存在很多个进程,但系统中的cpu资源是有限的,所以操作系统也需要制定某种策略,挑出一个进程,把处理机分配给它
“上锁”
左边:如果还没退出临界区(还没解锁)就进行进程调度,但是进程调度相关的程序也需要访问就绪队列,但此时就绪队列被锁住了,因此又无法顺利进行进程调度
右边:在打印机打印完成之前,进程一直处于临界区内,临界资源不会解锁。但打印机又是慢速设备,此时如果一直不允许进程调度的话就会导致CPU一直空闲。
因此:假如进程此时访问的是打印机(普通的临界资源),…。所以,如果进程在访问一个普通的临界资源,在一种普通的临界区中,这个时候是应该进行进程调度和切换的,来增加系统的并发度,增加cpu的利用率。
由“当前运行的进程是否可以强行地被剥夺处理机资源“这个问题,我们引出了下一个知识点——进程调度的方式
(一个上厕所十分钟的人和一个上厕所一分钟的人,前者只需要从十分钟到十一分钟,后者需要从一分钟到十一分钟)
因此,出现了带权周转时间:
Tips:各种调度算法的学习思路
饥饿
(某进程/作业长期得不到服务)带权周转时间其实表示的是整个周转时间比运行时间大多少倍这样的指标;P3的带权周转时间这么大,表示这个进程本来只需要很少的时间为它服务,但是它需要等很长的时间才可以被处理,因此对于P3的用户来说,他的体验是特别糟糕的
注意这个“最短的”要打双引号!!!!!
由此,引出了下面这种算法
这个题目中由于它是纯计算型的进程,所以并不会有I/O操作,也就是说不会有主动地要求阻塞,因此主动阻塞这种情况不需要考虑
如果时间片大小为5:
如果时间片太大,使得每个进程都可以在一个时间片内就完成,则时间片轮转调度算法退化为先来先服务调度算法,并且会增大进程响应时间。因此时间片不能太大。
另一方面,进程调度、切换是有时间代价的(保存、恢复运行环境),因此如果时间片太小,会导致进程切换过于频繁,系统会花大量的时间来处理进程切换,从而导致实际用于进程执行的时间比例减少。可见时间片也不能太小。