어처피 CS 면접때도 나오니까 다시 정리하기
운영체제때 들은거 기억날듯 말듯..
1. 교착상태 (Dead lock)
교착상태는 상호배제(Mutual Exclusion)에 의해 나타나는 문제점으로 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미
2. 교착 상태 발생의 필요 충분 조건
- 비선점 (Non-preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함
- 환형대기 (Circular Wait) : 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구
- 상호배제 (Mutual Extension) : 한 번에 한 개의 프로세스 만을 공유자원을 사용할 수 있어야 함
- 점유와 대기 (Hold and Wait) : 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
3. 교착 상태의 해결 방법
예방 기법 : 교착상태가 발생하기 않도록 사전에 시스템 제어하는 방법
회피 기법 : 교착상태가 발생하면 적절히 피해나가는 방법 은행원 알고리즘
발견 기법 : 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것
회복 기법 : 교착상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것