系统怎么知道这个线程是空闲的?

betterzy 2006-04-18 02:07:55
如果一个进程里有几个线程,
而每个线程都是死循环,那系统怎么知道哪个线程是空闲的,那个线程是BUSY,在时间分配上倾向于BUSY的线程,或者需要我在代码上做什么手脚?

关于空闲和BUSY,我有个疑问:哪怕只有while(1){nop;},在CPU执行的时候,执行完这个语句,肯定有下个语句可以执行,除非程序挂起,那为什么有空闲和BUSY的区别呢?不好意思,我知道我的问题肯定很可笑,但还是望大家多多指点!
...全文
277 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
YanDong_8212 2006-04-19
  • 打赏
  • 举报
回复
看内核的调度算法
alaiyeshi 2006-04-19
  • 打赏
  • 举报
回复
task_struct
nevil 2006-04-19
  • 打赏
  • 举报
回复
其实一句话,只要你的进程/线程占用了CPU,就不是空闲的.
x86 2006-04-19
  • 打赏
  • 举报
回复
你如果调用sleep,那你的进程肯定就是空闲的。此外由于读设备或者等待数据之类的调用而造成的挂起也会让你的进程空闲。
举个例子,一个进程是一个while(1){}死循环,另一个进程包含大量read/write操作,当然是第一个进程占用的CPU资源多得多。
内核的调度对优先级相同的进程,基本上是一视同仁的,你可以稍微改变优先级。
fierygnu 2006-04-18
  • 打赏
  • 举报
回复
进程/线程的调度是内核最主要的任务,每个线程有不同的状态,有等待调度的,有空闲的,有阻塞的,等等。如果都是死循环,那就没有空闲进程了。
找本操作系统的书看一看。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧