소프트웨어 행과 크래시의 차이 (응답없음 / 강제종료)

컴퓨터를 쓰다보면 자주 보는 문제 중 하나가 행(hang)과 크래시(crash)입니다. 실행하고 있던 프로세스가 응답없음으로 전환되며 아무런 동작을 하지 않거나 갑자기 꺼져버리는 현상입니다. 그런데 꽤 자주 두 용어가 혼용되어 사용되곤 합니다. 같은 의미로 인식되는 것이죠. 하지만 둘은 다르며 용어를 구분해서 사용해야 커뮤니케이션에 오류를 줄일 수 있습니다.

행과 크래시

1. 개념

소프트웨어가 행 상태라는 것은 프로그램이 응답을 멈추고 사용자의 입력이나 다른 프로세스에 대해 반응하지 않는 상태를 의미합니다. 이런 상태가 되면 프로그램이 작업을 완료하지 못하고 더 이상 진행되지 않는 것처럼 보입니다. 마우스 클릭이나 키보드 입력에 반응하지 않습니다. 결국 보통은 강제종료를 합니다.

 

크래시가 난다는 건 프로그램이 예기치 않게 완전히 중단되는 것을 의미합니다. 이는 종종 오류 메시지를 동반합니다. 오류 조건이나 코드의 문제로 인해 프로그램이 실행을 계속할 수 없을 때 발생합니다.

 

2. 예시

행 현상의 흔한 예로는 웹 브라우저의 행을 들 수 있습니다. 페이지 로딩이 무한이 진행되는 상황입니다. 브라우저 창은 여전히 열려 있지만, 새로운 요청을 만들거나 페이지를 새로 고치는 등의 동작이 이루어지지 않습니다. 브라우저가 투명해지거나 상단에 (응답없음)이라는 메시지가 보이기도 합니다.

 

크래시의 경우 웹 브라우저의 프로세스가 강제 종료되는 경우입니다. 응답 없음이 아니라 그냥 꺼집니다. 웹 브라우저가 아니라 다른 많은 프로그램에서도 발생할 수 있습니다.

 

3. 원인

물론 원인은 행과 크래시 모두 다양할 수 있지만 일반적으로 행은 리소스 경합, 무한 루프, 데드락, 특정 작업의 완료를 기다리는 등의 이유로 발생합니다. 예를 들어, 두 개 이상의 프로세스나 스레드가 동일한 리소스에 접근하려고 시도하고, 서로 대기하는 상황에서 데드락이 발생할 수 있습니다. 프로그램에서 무한 루프에 빠진 경우에도 응답하지 않게 됩니다.

 

크래시는 메모리 할당 오류, 소프트웨어의 버그, 시스템 자원의 과부하, 호환되지 않는 하드웨어, 잘못된 API 호출 등 원인으로 발생할 수 있습니다. 프로그램에서 잘못된 메모리 위치에 접근하려고 하거나 실행할 수 없는 코드를 실행하려고 할 때 프로그램은 크래시가 발생하게 됩니다.

반응형

댓글

Designed by JB FACTORY