关于操作系统的进程(线程)调度算法

时间:2021-10-04 21:16:07
现在大家都说linux和windows采用的抢占式调度算法。该算法的特点是:
(1) 每个任务赋予唯一的一个优先级(有些操作系统可以动态地改变任务的优先级);
(2) 假如有几个任务同时处于就绪状态,优先级最高的那个将被运行;
(3) 只要有一个优先级更高的任务就绪,它就可以中断当前优先级较低的任务的执行;
来自:
http://blog.csdn.net/zenny_chen/article/details/1889283

问题1、 当进程A执行的时候,如果没有更高优先级的进程在执行,则A会一直执行,是吧?
问题2、我们在写代码的时候 while(1) 中 没有sleep类似这样的改变线程状态的函数,所以就会导致该线程一直独占cpu的执行,就出现100%使用率的情况,这个理解对吗?
问题3、在《程序员的自我修养》中,看到作者说抢占式调度还有一种策略: 操作系统为每个进程分配了时间片。
我不理解的是 抢占式调度中没有时间片这个概念吧?还是进程调度的算法不是简单的抢占时候调度。可是我自己实际中的经验是 如果一个while(1)中没有任何改变线程状态的函数,则cpu会一直100%。对于书中作者的说法是正确的吗?

2 个解决方案

#1


关于第三个纠正一下。
问题书中是这样说的:但是如果运行时间超出了一定时间,操作进程会暂停该进程,将cpu资源分配给其他等待的进程。
这并不是严格意义上的 时间片。

#2


就是抢占式里面并没有时间片轮训调度这一因素。

#1


关于第三个纠正一下。
问题书中是这样说的:但是如果运行时间超出了一定时间,操作进程会暂停该进程,将cpu资源分配给其他等待的进程。
这并不是严格意义上的 时间片。

#2


就是抢占式里面并没有时间片轮训调度这一因素。