WIPIVERSE

무한 루프

무한 루프(infinite loop)는 컴퓨터 프로그램에서 반복문(루프)이 종료 조건 없이, 또는 종료 조건에 도달할 수 없는 상태로 인해 끝없이 반복 실행되는 현상을 말한다. 컴퓨터 과학 및 프로그래밍 분야에서 널리 알려진 개념이다.

정의

무한 루프는 프로그램 내의 일련의 명령어가 종료 조건이 없거나, 종료 조건이 존재하지만 결코 충족될 수 없거나, 혹은 종료 조건이 루프를 다시 시작하게 만드는 경우에 발생한다. 일반적으로 반복문(while, for 등)이나 재귀 호출이 종료 조건을 만족하지 못할 때 나타난다.

발생 원인

무한 루프는 크게 두 가지 상황에서 발생한다.

첫째, 의도하지 않은 무한 루프는 프로그래밍 오류로 인해 발생한다. 예를 들어 루프 내부에서 조건 변수가 잘못된 값으로 재설정되거나, 부동소수점 연산의 정밀도 문제로 인해 비교 연산이 항상 참으로 유지되는 경우가 이에 해당한다. C 언어에서 부동소수점 변수를 등호(==)로 비교할 때 발생하는 무한 루프가 대표적인 사례이다.

둘째, 의도적인 무한 루프는 특정 목적을 위해 설계되기도 한다. 운영 체제의 이벤트 처리 루프, 게임의 메인 루프, 임베디드 시스템의 펌웨어 루프 등은 종료 조건 없이 계속 실행되도록 의도적으로 작성된다. 이러한 경우 루프 내부의 break 문이나 외부 신호를 통해 루프를 빠져나가는 방식이 사용된다.

정지 문제와의 관계

임의의 프로그램이 무한 루프에 빠질지 여부를 사전에 판별하는 것은 일반적으로 불가능하다. 이는 앨런 튜링이 제시한 정지 문제(halting problem)와 관련이 있으며, 어떤 프로그램이 종료할지 여부를 결정하는 일반적인 알고리즘은 존재하지 않는다는 것이 수학적으로 증명되어 있다.

시스템에 미치는 영향

협력적 멀티태스킹을 사용하는 구형 운영 체제에서는 하나의 프로그램이 무한 루프에 빠지면 전체 시스템이 응답하지 않게 되는 경우가 있었다. 반면 선점형 멀티태스킹을 사용하는 현대 운영 체제에서는 일반적으로 특정 프로세스만 무한 루프에 빠지며, 운영 체제가 해당 프로세스를 강제 종료할 수 있다.

관련 개념

무한 루프와 유사한 개념으로 둠 루프(doom loop)가 있다. 둠 루프는 루프가 반복될수록 상태가 악화되어 결국 시스템이 정상 동작을 회복할 수 없게 되는 병리적 루프를 의미하며, 무한 루프와 구별되는 개념으로 다루어진다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기