为什么死循环占用CPU高[整理贴]

恰巧遇见这中问题,故将网上帖子整理下~

 

整理如下///s

一个进程如果是死循环,那么占有的CPU会很高,可是操作系统时间片运行的,到了一定时间不是会自动切换到别的进程吗?即便是死循环,到时间还是会切换到别的进程,为什么占用CPU会高呢?

 

死循环的时候程序不像其它的程序那样可能在某处被阻塞,比如sleep了,等IO了....这些可能被阻塞的程序在进程睡眠期间都不会被唤醒的,不会占用CPU的,而死循环则不会让出CPU,所以表现出CPU占用率高.

 

这种死循环一般是用户层的计算,没有调用系统调用,除了时间片到期外,陷入内核(通过调用系统调用)也是会引起进程调度的。死循环程序少了这个。

 

死循环不会让出CPU,但是操作系统的调度模块会对所有的进程进行相应的调度,只要时间片用完了,也会将其放到内核进程的等待队列中去的。

 

[quote]原帖由 [i]cugb_cat[/i] 于 2009-11-14 01:51 发表 [url=http://bbs2.chinaunix.net/redirect.php?goto=findpost&pid=11470198&ptid=1613560][img]http://bbs2.chinaunix.net/images/common/back.gif[/img][/url]
这种死循环一般是用户层的计算,没有调用系统调用,除了时间片到期外,陷入内核(通过调用系统调用)也是会引起进程调度的。死循环程序少了这个。 [/quote]
对,只是少了调度的机会

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值