讨论:windows到底是时间片轮转多任务还是抢先式多任务

时间:2021-09-04 19:51:04
资料上说:
在32位的Windows系统中,采用的是抢先式多任务,这意味着程序对CPU的占用时间是由系统决定的。系统为每个程序分配一定的CPU时间,当程序的运行超过规定时间后,系统就会中断该程序并把CPU控制权转交给别的程序。

这明明是时间片轮转多任务嘛,抢先式多任务的各个任务是有优先级的,高优先级的任务要先执行

10 个解决方案

#1


winNT,我觉得:优先级+时间片

#2


时间片是肯定有的

呵呵

应该是以时间片为主,其他为付。

不可能是单一的算法

#3


考虑一下cpu占用99%--100%的情况。

#4


应该是基于抢先式,多处理器的os

时间片轮转只是对算法的描述而已

个人意见

#5


Win2000下任务管理器好像优先级是16吧,最高,所有总是能够弹出(基本上)。由此看见应该是抢先式的。
你可以编写几个程序来Test一下。

#6


抢先式多任务的意思是时间片由系统分配,和应用程序无关。与之对立的叫“协同式多任务”,windows 16bit系统就采用这个。协同式多任务是指多任务能力需要应用程序自己协调,系统并不参与管理(事实上是参与极少的管理)。在抢先式多任务中,才可能实现多优先级。(实际上Window 95+的进程和线程都是有优先级的。)

抢先式 和 时间片轮转 好象不是对立面。

#7


各个线程是可以设定优先极的,主程序本身就是一个线程。
BOOL SetThreadPriority(HANDLE hThread, int nPriority);

#8


把CPU依时间分片..然后以抢先式来占有...根本不对立的吗...

#9


win2000/xp

系统共有32个等级(有的等级不让使用)

系统调度只是对线程而言,也就是说某个线程一定有一个等级,从1到32(16以上为实时的,以下为一般的)。

但是,系统又分了6、7(记不清了)个模块用于表示进程优先级(各个模块有5个等级,模块之间不互斥)。当程序启动,一个进程开始,系统会使用默认的模块给这个进程中的主线程分配等级(即5个等级居中的一个)。

当然在运行时,可以设置不同的优先级,等级高的先运行,这也就是抢占式。

而且每个线程可以设置自己喜爱的cpu,否则使用默认的。

#10


不好意思打扰啦 各位:

马上就要新的一年了,先祝大家在新的一年里开开心心,高高兴兴……


也希望大家不要把今年的帖子放到明年再揭帖,特别是2002年9月份以前的帖子,今年的事情今年办完,不要拖拖拉拉的放到明年去!

自己看一下自己还有没有没有揭帖的 或者没有人回复的,特别是2002年9月份以前的,9月份以后的如果没有得到答案的可以暂时不用急着揭帖,如果已经得到答案的,希望也马上去揭帖,还有一些没有人恢复的帖子,自己可以去删掉,否则斑竹删掉的话要扣信誉值,自己删掉没有人回复,或者只有自己回复的帖子不扣信誉值的
请大家看看自己的问题

DataBase版的请参照
http://expert.csdn.net/Expert/topic/1265/1265029.xml?temp=.1202509

谢谢大家的合作与支持,祝大家过个好年……

#1


winNT,我觉得:优先级+时间片

#2


时间片是肯定有的

呵呵

应该是以时间片为主,其他为付。

不可能是单一的算法

#3


考虑一下cpu占用99%--100%的情况。

#4


应该是基于抢先式,多处理器的os

时间片轮转只是对算法的描述而已

个人意见

#5


Win2000下任务管理器好像优先级是16吧,最高,所有总是能够弹出(基本上)。由此看见应该是抢先式的。
你可以编写几个程序来Test一下。

#6


抢先式多任务的意思是时间片由系统分配,和应用程序无关。与之对立的叫“协同式多任务”,windows 16bit系统就采用这个。协同式多任务是指多任务能力需要应用程序自己协调,系统并不参与管理(事实上是参与极少的管理)。在抢先式多任务中,才可能实现多优先级。(实际上Window 95+的进程和线程都是有优先级的。)

抢先式 和 时间片轮转 好象不是对立面。

#7


各个线程是可以设定优先极的,主程序本身就是一个线程。
BOOL SetThreadPriority(HANDLE hThread, int nPriority);

#8


把CPU依时间分片..然后以抢先式来占有...根本不对立的吗...

#9


win2000/xp

系统共有32个等级(有的等级不让使用)

系统调度只是对线程而言,也就是说某个线程一定有一个等级,从1到32(16以上为实时的,以下为一般的)。

但是,系统又分了6、7(记不清了)个模块用于表示进程优先级(各个模块有5个等级,模块之间不互斥)。当程序启动,一个进程开始,系统会使用默认的模块给这个进程中的主线程分配等级(即5个等级居中的一个)。

当然在运行时,可以设置不同的优先级,等级高的先运行,这也就是抢占式。

而且每个线程可以设置自己喜爱的cpu,否则使用默认的。

#10


不好意思打扰啦 各位:

马上就要新的一年了,先祝大家在新的一年里开开心心,高高兴兴……


也希望大家不要把今年的帖子放到明年再揭帖,特别是2002年9月份以前的帖子,今年的事情今年办完,不要拖拖拉拉的放到明年去!

自己看一下自己还有没有没有揭帖的 或者没有人回复的,特别是2002年9月份以前的,9月份以后的如果没有得到答案的可以暂时不用急着揭帖,如果已经得到答案的,希望也马上去揭帖,还有一些没有人恢复的帖子,自己可以去删掉,否则斑竹删掉的话要扣信誉值,自己删掉没有人回复,或者只有自己回复的帖子不扣信誉值的
请大家看看自己的问题

DataBase版的请参照
http://expert.csdn.net/Expert/topic/1265/1265029.xml?temp=.1202509

谢谢大家的合作与支持,祝大家过个好年……