Hang up 이란 ?
# Hang up이란
통상적으로 서버 프로세스 자체는 기동 되고 있지만, 클라이언트의 request 시에 서버에서의 아무런 reply가 없는 것을 의미한다.
# Hang up의 종류
1. 서버 resource의 부족으로 인한 Hang up
서버의 자원들이 여러개의 Thread를 실행하느라 추가적인 작업 수행에 필요한 Thread가 없을 수 있다.
결국 모든 resource와 thread가 바쁘게 프로세싱 되고 있는 상태이다.
2. Deadlock
교착현상. 서로가 Lock의 원인이 되어 이러지도 저러지도 못하는 교착의 상황을 말한다.
발생하는 이유는 여러 조건이 있으며, 발생 시에는 Deadlock에서 Hang up 까지 이어진다.
Deadlock 걸리는 조건
1) 프로세스가 resource를 반환하지 않을 때 resource의 레퍼런스 문제로 사용하지 않는 Object들을 유지해서 발생한다.
2) 점유 대기의 경우
1번 프로세스가 #1의 resource를 점유하고 그 프로세스를 종료하기 위해서 #2의 resource가 필요할 때
2번 프로세스가 #2의 resource를 점유하고 있으면 2번 프로세스의 종료를 위해서 #1의 resource가 필요할 때
이런 상황에서는 서로가 필요한 resource를 상대가 점유하고 있는 상황에서 교착이 일어난다.
3) 프로세스 동기화, 문맥 교환 (Context Change)
프로세스 동기화에서는 Thread들에게 우선순위를 부여하여 수행할 수 있는 권한을 준다.
그리고 그 상황에서 Thread들은 Lock을 가지게 되는데, 이 Lock을 주고 받는 과정에서 서로가 완전하게 Lock이 해제 되지 않아 영향을 끼치는 경우에 Deadlock이 발생한다.
참고자료