免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 23683 | 回复: 38
打印 上一主题 下一主题

为什么死循环占用CPU高 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-13 21:59 |只看该作者 |倒序浏览
一个进程如果是死循环,那么占有的CPU会很高,可是操作系统时间片运行的,到了一定时间不是会自动切换到别的进程吗?即便是死循环,到时间还是会切换到别的进程,为什么占用CPU会高呢?

论坛徽章:
0
2 [报告]
发表于 2009-11-13 22:12 |只看该作者
因为别的进程也在占用CPU的资源,如果别的进程休眠或者放弃CPU,调度程序又会把这个死循环进程调度回来继续执行。

论坛徽章:
0
3 [报告]
发表于 2009-11-13 22:26 |只看该作者
死循环的时候程序不像其它的程序那样可能在某处被阻塞,比如sleep了,等IO了....这些可能被阻塞的程序在进程睡眠期间都不会被唤醒的,不会占用CPU的,而死循环则不会让出CPU,所以表现出CPU占用率高.

论坛徽章:
0
4 [报告]
发表于 2009-11-14 01:51 |只看该作者
这种死循环一般是用户层的计算,没有调用系统调用,除了时间片到期外,陷入内核(通过调用系统调用)也是会引起进程调度的。死循环程序少了这个。

论坛徽章:
0
5 [报告]
发表于 2009-11-14 10:30 |只看该作者
死循环应该是不会让出CPU的

论坛徽章:
0
6 [报告]
发表于 2009-11-14 13:13 |只看该作者
死循环不会让出CPU,但是操作系统的调度模块会对所有的进程进行相应的调度,只要时间片用完了,也会将其放到内核进程的等待队列中去的。

论坛徽章:
0
7 [报告]
发表于 2009-11-14 13:20 |只看该作者
因为循环计数也是需要计算的,而且是不停的计算。

论坛徽章:
0
8 [报告]
发表于 2009-11-18 10:00 |只看该作者
学习中,不知道到底是那个正确,我也很想知道答案阿,等大牛出现

论坛徽章:
0
9 [报告]
发表于 2009-11-18 10:22 |只看该作者
原帖由 cugb_cat 于 2009-11-14 01:51 发表
这种死循环一般是用户层的计算,没有调用系统调用,除了时间片到期外,陷入内核(通过调用系统调用)也是会引起进程调度的。死循环程序少了这个。

对,只是少了调度的机会

论坛徽章:
0
10 [报告]
发表于 2009-11-18 12:38 |只看该作者
等一个大牛解析的详细一点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP