기어가더라도 제대로
[운영체제-김덕수 교수님] Deadlock (1/5) 본문
- 서로 가고자 하는 방향을 누구도 갈 수 없는 그런 상태
- == 데드락
Deadlock 의 개념
- Blocked/ Asleep state
- 프로세스가 특정 이벤트를 기다리는 상태
- 프로세스가 필요한 자원을 기다리는 상태
- Deadlock state
- 프로세스가 발생 가능성이 없는 이벤트를 기다리는 경우
- 프로세스가 deadlock 상태에 있음
- 시스템 내에 deadlock에 빠진 프로세스가 있는 경우
- 시스템이 deadlock 상태에 있음
- 프로세스가 발생 가능성이 없는 이벤트를 기다리는 경우
## DeadLock vs Starvation , 차이
- deadlock은 프로세서는 할당 받았지만, 그 외의 이벤트를 기다리거나, 자원을 기다리고, 이들이 발생 가능성이 없는 경우지만,
- starvation은 ready 상태의 프로세스가 프로세서를 할당받지 못하고 기다리는 상태이다.
- 언젠가 한번은 받긴 할 텐데, 운이 나빠 자꾸 뒤로 밀려나는 상황이다.
데드락은 자원과 관련
- 일반적 분류
- Hardware resources vs Software resources
- 다른 분류 법
- 선점 가능 여부에 따른 분류
- 할당 단위에 따른 분류
- 동시 사용 가능 여부에 따른 분류
- 재사용 가능 여부에 따른 분류
1. 선점 가능 여부에 따른 분류
지금 사용중인데 다른 프로세스가 와서 사용할 수 있는가?
- Preemptible resources
- 선점 당한 후, 돌아와도 문제가 발생하지 않는 자원
- Processor, memory 등
- Non-preemptible resources
- 선점 당하면, 이후 진행에 문제가 발생하는 자원
- Rollback, restart 등 특별한 동작이 필요
- E.g, Disk drive 등
- 선점 당하면, 이후 진행에 문제가 발생하는 자원
아래는 아들에게 선점당한 여권이다. 아들이 "write" 작업을 한 모습이다.
2. 할당 단위에 따른 분류
- Total allocation resources
- 자원 전체를 프로세스에게 할당
- E.g, Processor, disk drive 등
- Partitioned allocation resources
- 하나의 자원을 여러 조각으로 나누어, 여러 프로세스들에게 할당
- E.g, Memory 등
3. 동시 사용 가능 여부에 따른 분류
- Exclusive allocation resources
- 한 순간에 한 프로세스만 사용 가능한 자원
- E.g, Processor, memory, disk drive 등
- 할당 단위에 따른 분류에서 메모리는 여러 조각으로 나뉜다 했는데 동시 사용될 수 없다는 것은 무슨 말인가?
- 메모리의 일부영역이 Pi에게 할당되고 또 다른 영역이 Pj에게 할당된다 하였을 때, Pi에게 할당된 영역은 다른 프로세스(Pj)가 같이 할당하여 사용할 수 없다는 이야기이다.
- Shared allocation resources
- 여러 프로세스가 동시에 사용 가능한 자원
- E.g, Program(SW), shared data 등
- 소스코드의 측면에서 바라볼 때 PowrPoint를 여러개 띄울 수 있다.
재사용 가능 여부에 따른 분류
- SR(Serially-reusable Resources)
- 시스템 내에 항상 존재하는 자원
- 사용이 끝나면, 다른 프로세스가 사용 가능
- E.g, Processor, memory, disk drive, program 등
- CR(Consumable Resources)
- 한 프로세스가 사용한 후에 사라지는 자원
- E.g, siganl, message 등
Deadlock 과 자원의 종류
- 데드락을 발생시킬 수 있는 자원의 형태
- Non-preemptible resources
- Exclusive allocation resources
- Serially reusable resources
- 할당 단위는 영향을 미치지 않음
- CR을 대상으로 하는 Deadlock model
- 너무 복잡하니 고려하지 말자.
결론
- 선점이 불가능하고, 한번에 하나만 사용할 수 있고, 영구히 존재하는 자원의 경우 데드락이 발생할 수 있다.
'CS > 운영체제' 카테고리의 다른 글
[운영체제-김덕수 교수님] 교착상태(3/5)- Deadlock Prevention (0) | 2022.08.08 |
---|---|
[운영체제-김덕수 교수님] Deadlock (2/5) - 발생의 예 (0) | 2022.08.06 |
[운영체제-김덕수교수님] 프로세스 상호배제, 동기화(7/7) - Monitor (0) | 2022.08.06 |
[운영체제- 김덕수 교수님] 프로세스 상호배제, 동기화(6/7) - Eventcount/Sequencer (0) | 2022.08.06 |
[운영체제 - 김덕수 교수님] 프로세스 동기화, 상호 배제 - Semaphore(5/7) (0) | 2022.08.03 |
Comments