기타/컴퓨터공학

응답없음의 원리 [네이버 지식인의 질문에서]

바로이순간 2011. 12. 3. 06:36

 

응답없음이 일어나는 과정. 즉, 프로그램이 왜 멈추는가에 대한 논설과.

응답없음이 반환되는 과정을 설명해주면 고맙겠소.

--------------------------------------------------------------------

컴퓨터의 동작에서 (프로그램, 프로세서), 멈춤, 얼어붙음은 어떤 한 프로그램이나, 전체 시스템이
입력에 반응하기를 멈출때 일어난다. 마치 식물인간이 된것 같은 경우이다.

 

보통 응답없는 윈도우에 마우스를 클릭하면 모래시계가 나오거나 회전하는 기다림커서가 나온다.
대개는 프로그램이 어떤 사건이 일어나기를 기다리고 있는데 원하는 사건이 일어나지 않기 때문에
아무것도 하지 않는 것이다.

 

윈도우에서 프로그램이 외부의 입력에 대해서 반응을 한다는 것은 프로그램이 원래하던 일을 마치고
한가해졌을 경우이다. 그런데 어떤일을 마칠려고 하던 도중에 무엇이가 받아야 되는데 못받고 있다면
끝내지 못하는 것이다. 그러면 외부의 입력에 대해서 반응을 할 수가 없는 것이다.

 

윈도우(OS)는 클릭을 한 프로그램에 마우스가 눌러졌다는 메시지를 전달한다. 프로그램이 살아있으면
윈도우(OS)가 전해준 마우스클릭 메시지를 내부적인 큐에서 가져가야 한다. 메시지를 가져가면
윈도우(OS)는 그 변화를 알수 있다. 하지만 시간이 한참 지나도(내부적으로 정의된 겻에 따름)
메시지를 가져가지 않으면 윈도우(OS)는 프로그램을 탐침할 수도 있다.

 

하지만 메시지를 가져가지 않는 것을 관찰함으로써 프로그램이 죽었다는 사실을 알수 있을것이다.
이것은 마치 독방에 같힌 죄수에게 밥을 넣었는데 밥을 먹지않고 전혀 손을 대지 않는것을
며칠동안(한달 정도)이나 관찰한 후에 죄수가 죽었다고 판단할 수 있는 경우와 같다고 보겠다.