XTANG,QNX空闲时在做什么?

今天无意看到你对一个问题的答复:
如果是CPU的使用状况且(idle时间)什么的,通常是自己写一个小程序,放在很底的优先级上(比方说1)。这个程序的执行时间,就是CPU的idle时间。

想问一个一直没搞清楚的问题:
你指的写一个小程序,本质上和QNX有个0优先级的procnto相同吗,系统空闲时它在运行.
它在做什么呢,一直在for(;;){}吗?如果这样cpu满载,好像不是真实的情况.如果不是,它在执行什么语句?
cpu可以停下来什么也不做吗?还是系统空闲它也要跑?跑多快?
据说QNX的kernal空闲的时候不是在pooling,而是在"听"?!能解释一下吗?

一般操作系统调度程序,不允许出现“没有线程可调度”的情形。都是由系统自动生成一个“idle线程”。这个线程在最底优先级上运行;这样,调度算法永远不会出现“没有线程”的情形。

在QNX上,idle线程由在procnto里的进程管理器创建,如果你用pidin检查一个QNX系统的话,应该在procnto里有一个优先级为0的线程,这个就是所谓的"idle"线程。

致于idle线程在做什么,最简单的是死循环;因为它优先级最低,别人要执行的话,总能抢到CPU。QNX则根据平台不同,有不同的处理。比如x86平台上idel线程就调用hlt指令,把CPU放入hlt模式。

了解.Thanks.