deadlock
자원을 소유한 스레드들 사이에서 각 스레드는 다른 스레드가 소유한 자원을 요청하여 무한정 대기하고 있는 현상
deadly embrace;풀지 못하는 포옹
위치는 어디서? 사용자가 작성한 멀티스레드 응용프로그램에서 주로 발생
커널 내에서도 발생
교착상태를 막도록 운영하는 컴퓨터 시스템은 거의 없는 실상 무.적.권 일어남
발생하도록 냅두고 교착상태가 발생한 것 같으면, 시스템 재시작, 혹은 의심스러운 몇몇 프로그램 종료
교착상태 유발시키는 잠재적 요인
- 자원
교착상태의 발생지
컴퓨터 시스템에는 많은 자원 존재
- 자원과 스레드
한 스레드가 여러자원을 동시에 필요로 하는 상황이 요인
- 자원과 운영체제
한번에 하나씩 자원을 할당하는 운영체제 정책이 요인
- 자원 비선점
할당된 자원은 스레드가 자발적으로 내놓기 전에 강제로 뺏지 못하게하는 요인
교착상태는 여러 자원 형태 중 대부분 선점 불가능하며, 배타적 할당 방식을 사용하고, 순차적 재사용이 가능한 자원들을 대상으로 발생
교착상태와 유사한 문제
- 무한 연기 indefinite postponement
- 시스템의 자원 스케줄링 정책의 편중성 때문에 발생
- 우선순위가 낮은 프로세스가 무한정 기다리는 현상이 발생
해결책) 에이징 ; 어떤 자원을 기다린 시간에 비례하여 프로세스에게 우선순위를 부여하는 기법
교착상태 조건
- 상호배제(Mutual Exclusion)
프로세스들은 자원에 대해 배타적인 사용을 요구
적어도 하나의 자원은 반드시 비공유 되는 상태에서 점유
- 점유와 대기(Hold and Wait)
시스템 내부에 어떤 프로세스가 적어도 하나의 자원을 공유
- 비선점(No preemption)
자원을 점유하고 있는 프로세스는 그 작업의 수행이 끝날때 까지 해당 자원을 반환하지 않을 경우 교착 상태 발생
- 환형대기(Circular wait)