2010-05-17 3 views

답변

6

무한 루프는 실행중인 다른 코드와 다릅니다. 컴퓨터는 무한 루프가 많은 반복을 필요로하는 복잡한 계산이 아니라는 것을 모릅니다.

무한 루프가 OS에 시간을 반환하는 일부 시스템 기능을 호출하는 코드를 포함하지 않는 한 OS는이를 무언가에 적극적으로 참여하는 프로세스로 취급하고 실행 시간을줍니다. 실행중인 다른 프로세스가 없으면 단일 코어 시스템에서 CPU의 100 %를 소모합니다.

+1

언급하는 현대 범용 O/S, 그것은 필요 때까지 스레드에서 아무것도 실행에서 커널을 중지 될 interruptable 대기 상태가됩니다 제정신 코드입니다. –

+0

동의하지만, 필자의 연구는 학술 연구를 위해 만들어진 것 같은 강렬한 계산과 비교되었다. – NilObject

18

CPU는 루프를 실행하는 동안 다른 작업을 수행 할 수 없습니다 (끝나지 않음). 선제 멀티 태스킹 시스템을 사용하더라도 (무한 루프가 자신의 프로세스 나 스레드를 영원히 막을 수 있도록), 루프는 OS의 선점 스케줄러가 그것을 넘겨 줄 때마다 타임 슬라이스를 "먹습니다". 다음 조각을위한 CPU - 아무 것도하지 않고 매번 한 조각의 CPU 시간을 소비하므로 많은 CPU가 다른 모든 스레드에 유실됩니다. 다른 유용한 작업을 수행 할 수 있습니다.

+1

이 답변은 정확할 수도 있지만 너무 어려워서 이런 종류의 질문을하는 사람들에게별로 도움이되지 않습니다. 기술 용어를 광범위하게 사용하는 것 외에도, 단락의 대부분인 두 번째 문장은 특히 구문 분석하기에는 너무 길다. – sawa

6

무한 루프 자체는 전혀 문제가되지 않습니다. 사용자와 상호 작용하는 대부분의 응용 프로그램은 무한 루프입니다. 그들은 반복적으로 사용자를 기다리고 그에 따라 행동하고주기를 다시 수행합니다. 운영 체제 자체는 무한 루프입니다. 이러한 종류의 무한 루프는 무언가를 반복하면서도 사용자에게 유용한 것을 주기적으로 출력하기 때문에 '생산적'이라고합니다.

저는 비생산적 인 무한 루프가 걱정됩니다. 그러나 이것이 왜 문제인지는 분명합니다. 그들은 장점들 중 하나도없이 생산적인 루프 (전력 소비, CPU 시간 사용 등)의 단점을 모두 가지고 있습니다. 그들은 아무런 도움이되지 않습니다.

+1

첫 번째 단락은 유익하고 도움이되지만 두 번째 단락은 원형입니다. 문제는 의도하지 않은 종류의 무한 루프가 "전력을 소비하고 CPU 시간을 사용하는 것"입니다. – sawa

관련 문제