응답없음

1 개요

파일:OhYnLZq.png
잘못 띄어쓰면 응 답없음

운영체제, 그 중에서도 윈도우에서 프로그램과 프로그램 간에 충돌 오류가 일어나 이를 운영체제에서 독자적으로 해결될 때까지 프로그램 작동을 멈추는 현상. 블루스크린과는 달리 NT 커널에서도 자주 볼 수 있는 현상이다. 특히 컴 사양이 펜티엄4라면 제일 빨리 보는 방법은 포토샵

2 원인

윈도우에서, 마우스클릭하거나 키보드의 키를 누르는 등[1]의 행동은 전부 메시지라고 하여 OS가 먼저 1차적으로 받고, 각 프로그램에게 해야 할 역할을 하달한다. 프로그램들은 각각 자기만의 메시지 큐(쉽게 이야기하면 그냥 받은 메시지,즉 해야 할 일을 담는 상자)를 가지고 있는데, 프로그램은 매번 루프를 돌면서[2] 이 메시지 큐에 메세지가 있으면 해당 메시지를 큐에서 꺼내 그에 알맞은 무언가를 하게 된다.

이것을 프로그램의 '응답'이라고 하며 이렇게 OS와 프로그램 간에 서로 대화를 하는 느낌으로 사용자 시스템이 돌아가는데, 가끔가다 이 프로그램이 자기의 작업을 처리하다가 무한루프에 걸려 버린다던가, 아니면 너무 시간이 오래 걸리는 작업을 한다던가 등의 이유로 이 메시지 큐에 있는 메시지들을 제때제때 처리하지 못할 경우, OS에서는 '응답'이 없으니 문제가 있다고 판정하고 이 프로그램이 정상화되어 쌓인 메시지들을 처리할 때까지 무한정 기다리게 되고 이것이 곧 응답없음 상태라고 말하는 그것이다.

이것이 서로 동등한 관계의 프로세스에게 발생할 경우 데드락이라고 해서 다른 루틴에서의 개입 없이는 영원히 서로가 서로를 기다리게 되는 상황이 되어버리지만, 이 상황에서는 프로그램 하나만 문제가 생긴 것이고 OS와 일개 프로그램의 사이에는 엄청한 권한의 갭이 존재하므로 OS는 이 프로그램에게 그냥 (응답없음) 딱지를 붙이고 다른 일을 하러 가게 된다. 유저는 그렇게 아무런 반응이 없는 프로그램을 보는 것. 근무태만

3 해결법

기다린다. (원래 시간이 많이 걸리는 작업일 경우) or 강제종료한다. (무한루프에 걸린 경우)

원인부터가 말 그대로 프로그램이 뭔가 다른 일을 하느라 미처 OS의 메시지를 처리하지 못한 것이기 때문에, 만일 그것이 시간이 많이 걸리는 작업[3]일 경우 어느정도의 시간을 기다려 주자. 프로그램은 자기가 할 일을 다 끝내고 다시 메시지를 처리할 것이고 그러면 '응답없음' 상태에서 자연스럽게 탈출하게 된다. 가장 이상적인 해결법.

하지만 논리오류 등 다른 이유에 의하여 프로그램이 내부적으로 꼬여 있을 경우에는 정말로 강제종료밖에 답이 없다. 원치 않는 대참사를 막기 위해 자주 저장을 하는 습관을 들이자.
  1. 마우스가 이동하거나 프로그램이 종료되는 것은 물론이고 모니터에 자신을 그려야 된다거나(WM_PAINT) 심지어 특정한 상황(타이머)에서는 가만히 있어도 알아서 메시지가 생긴다.
  2. 무한루프의 쓰임새 중 하나로, 이 무한루프가 없으면 모든 프로그램(OS 포함)이 시작하자마자 바로 지 할일만 다 하고 광속으로 종료된다. 간단히 설명하면 이 무한 루프는 자신의 일을 다 끝냈는지에 대한 체크와도 같은 기능으로,즉 이 무한 루프가 계속 돌고 있다면 자가 점검에서 일이 끝나지 않았다는 신호를 보내는 것.
  3. 기가바이트 짜리 파일을 통으로컴퓨터 고문 저장한다던지 아니면 네트워크에서 데이터를 받는 중이라던지 등등.. (물론 이런 작업은 일반적으로 스레드를 따로 생성하여 처리한다.)