Skipalong's tistory
240328 TIL - DeadLock(교착상태) 본문
오늘은 면접 스터디에서 DeadLock(교착상태)에 대해 공부해보았다.
데드락
데드락이란 두 개 이상의 프로세스(또는 스레드)들이 서로가 가진 자원을 기다리며 중단된 상태를 말합니다.
데드락상태가 되려면 네가지 조건을 모두 만족해야합니다.
- 상호배제 : 한 프로세스가 자원을 독점, 다른 프로세스들은 접근이 불가
- 점유대기 : 특정프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
- 비선점 : 다른 프로세스의 자원을 강제적으로 가져올 수 없음
- 순환대기 : 프로세스 집합이 서로가 서로의 자원을 요구하는 순환적인 대기관계가 존재
해결법
- 예방 : 데드락의 발생조건을 성립하지 않도록 설계
- 회피 : 교착상태 가능성이 없을 때만 자원을 할당, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 파악하는 은행원 알고리즘 사용
- 탐지 및 복구 : 시스템이 교착 상태에 빠졌는지를 주기적으로 검사하고, 교착 상태를 탐지한 경우 이를 해결하기 위해 프로세스를 종료하거나 점유하고 있는 자원을 강제로 회수
- 무시 : 무시는 데드락이 발생할 가능성이 낮은 시스템에서 데드락이 발생해도 아무런 조치를 취하지 않고 무시하는 방법이 방법은 시스템 성능 저하가 없다는 장점
이렇게 데드락에 대해 간단하게 알아보았는데 현대 시스템에서는 데드락 상태가 잘 발생하지 않기 때문에 성능저하가 없는 무시 방법이 많이 사용된다고 한다. 현대 시스템에서는 데드락 상태에 걸리지 않게 여러 장치가 설계되어있다고 한다.
예전에 동시성 문제를 공부할 때 데드락에 대해 공부를 해보았는데 이번에 다시 리마인드 하게 되어 좋은 경험이었던 것 같다. 그리고 다음에 데드락 문제가 생길 시 해결법도 공부를 해 다음에 적용해볼 수도 있을 것 같다.
내일이면 커리어톤도 마무리인데 서류들을 한 번 정리해보는 시간을 가지는 것도 좋을 것 같다.
'TIL' 카테고리의 다른 글
240329 TIL - 멀티프로세스와 멀티스레드 (0) | 2024.03.30 |
---|---|
240327 TIL - 에라토스테네스의 체 (1) | 2024.03.28 |
240326 TIL - Map (0) | 2024.03.27 |
240325 TIL - 그래프 (2) | 2024.03.26 |
240322 TIL - 취업준비 (0) | 2024.03.23 |