1 개요
파일:OhYnLZq.png
잘못 띄어쓰면 응 답없음
운영체제, 그 중에서도 윈도우에서 프로그램과 프로그램 간에 충돌 오류가 일어나 이를 운영체제에서 독자적으로 해결될 때까지 프로그램 작동을 멈추는 현상. 블루스크린과는 달리 NT 커널에서도 자주 볼 수 있는 현상이다. 특히 컴 사양이 펜티엄4라면 제일 빨리 보는 방법은 포토샵
2 원인
윈도우에서, 마우스를 클릭하거나 키보드의 키를 누르는 등[1]의 행동은 전부 메시지라고 하여 OS가 먼저 1차적으로 받고, 각 프로그램에게 해야 할 역할을 하달한다. 프로그램들은 각각 자기만의 메시지 큐(쉽게 이야기하면 그냥 받은 메시지,즉 해야 할 일을 담는 상자)를 가지고 있는데, 프로그램은 매번 루프를 돌면서[2] 이 메시지 큐에 메세지가 있으면 해당 메시지를 큐에서 꺼내 그에 알맞은 무언가를 하게 된다.
이것을 프로그램의 '응답'이라고 하며 이렇게 OS와 프로그램 간에 서로 대화를 하는 느낌으로 사용자 시스템이 돌아가는데, 가끔가다 이 프로그램이 자기의 작업을 처리하다가 무한루프에 걸려 버린다던가, 아니면 너무 시간이 오래 걸리는 작업을 한다던가 등의 이유로 이 메시지 큐에 있는 메시지들을 제때제때 처리하지 못할 경우, OS에서는 '응답'이 없으니 문제가 있다고 판정하고 이 프로그램이 정상화되어 쌓인 메시지들을 처리할 때까지 무한정 기다리게 되고 이것이 곧 응답없음 상태라고 말하는 그것이다.
이것이 서로 동등한 관계의 프로세스에게 발생할 경우 데드락이라고 해서 다른 루틴에서의 개입 없이는 영원히 서로가 서로를 기다리게 되는 상황이 되어버리지만, 이 상황에서는 프로그램 하나만 문제가 생긴 것이고 OS와 일개 프로그램의 사이에는 엄청한 권한의 갭이 존재하므로 OS는 이 프로그램에게 그냥 (응답없음) 딱지를 붙이고 다른 일을 하러 가게 된다. 유저는 그렇게 아무런 반응이 없는 프로그램을 보는 것. 근무태만
3 해결법
기다린다. (원래 시간이 많이 걸리는 작업일 경우) or 강제종료한다. (무한루프에 걸린 경우)
원인부터가 말 그대로 프로그램이 뭔가 다른 일을 하느라 미처 OS의 메시지를 처리하지 못한 것이기 때문에, 만일 그것이 시간이 많이 걸리는 작업[3]일 경우 어느정도의 시간을 기다려 주자. 프로그램은 자기가 할 일을 다 끝내고 다시 메시지를 처리할 것이고 그러면 '응답없음' 상태에서 자연스럽게 탈출하게 된다. 가장 이상적인 해결법.
하지만 논리오류 등 다른 이유에 의하여 프로그램이 내부적으로 꼬여 있을 경우에는 정말로 강제종료밖에 답이 없다. 원치 않는 대참사를 막기 위해 자주 저장을 하는 습관을 들이자.- ↑ 마우스가 이동하거나 프로그램이 종료되는 것은 물론이고 모니터에 자신을 그려야 된다거나(WM_PAINT) 심지어 특정한 상황(타이머)에서는 가만히 있어도 알아서 메시지가 생긴다.
- ↑ 무한루프의 쓰임새 중 하나로, 이 무한루프가 없으면 모든 프로그램(OS 포함)이 시작하자마자 바로 지 할일만 다 하고 광속으로 종료된다. 간단히 설명하면 이 무한 루프는 자신의 일을 다 끝냈는지에 대한 체크와도 같은 기능으로,즉 이 무한 루프가 계속 돌고 있다면 자가 점검에서 일이 끝나지 않았다는 신호를 보내는 것.
- ↑ 몇 기가바이트 짜리 파일을 통으로
컴퓨터 고문저장한다던지 아니면 네트워크에서 데이터를 받는 중이라던지 등등.. (물론 이런 작업은 일반적으로 스레드를 따로 생성하여 처리한다.)