DeadLock 2
JeongSeulho
2023년 02월 19일
준비중...
클립보드로 복사
📌Deadlock의 그래프 모델
프로세스 -> 자원
은 해당 프로세스가 자원을 요청자원 -> 프로세스
는 자원이 프로세스에게 할당 됨
📌Deadlock의 state transition 모델
프로세스가 2개인 예
- edge는 해당 번호의 프로세스가 개입
- 노드의 숫자 2개는 각각 현재 프로세스의 상태
- P1이 R1보유 R2를 요청 + P2가 R2보유 R1을 요청시 데드락
📌deadlock의 발생 필요조건
- 자원의 특성
- Exclusive use of resources : 자원을 독점적으로 사용해야함
- Non-preemptive resource : 자원을 빼앗을 수 없음
- 프로세스의 특성
- hold and wait(partial allocation) : 자원을 보유하고 있으면서 다른 자원을 기다림
- circular wait : 자원을 요청하는 순서가 순환적임
📌deadlock의 해결 방법
deadlock prevention methods
- 4가지의 조건 중 하나를 제거
- 모든 자원을 공유 가능하게 만듬
- exclusive use of resources를 제거
- 사실상 불가능
- 모든 자원에 대해 선점 가능하게 만듬
- non-preemptive resource를 제거
- 사실상 불가능
- 유사 방법 : 프로세스A가 자원A를 사용중에 프로세스B가 자원A를 요청하면 프로세스A가 하던 작업을 취소하고 자원을 반납(매우 비효율적)
- 필요한 자원 한번에 모두 할당
- hold and wait를 제거
- 자원 낭비가 심함(필요하지 않은 순간에도 자원을 보유)
- 다른 프로세스들의 대기 시간이 길어짐
- 자원들에 순서를 부여
- circular wait를 제거
- 자원의 순서를 정해놓고 순서의 증가 방향으로만 자원을 요청(1자로 만듬)
- 자원 낭비 발생(사용 가능한 자원이 있어도 사용하지 못함)