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

    技术2022-05-20  65

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

     

    整理如下///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)