- Today
- Total
프로그래밍 농장
Deadlock [ 임베디드 설계 ] 본문
Deadlock ?
-> 프로세스들이 서로 unlock이 연상되기를 기다리면서 트랜잭션의 수행을 중단하고 있는 상태이다. ' 교착상태 '
-> Necessary conditions for deadlock ( 데드락이 생길수 있는 4가지 조건 )
: Mutuaal exclusion : 하나의 리소스를 어떤 프로세스가 장악하면 다른건 사용불가
: Hold and wait : 프로세스가 cpu를 장악시, 끝날떄까지 다른건 사용불가
: No preemption : 프로세스가 cpu를 장악중일시, 누군가 뻇는것이 불가능
: Circular wait : 리소스의 스레드가 필요로 하는 사이클이 있음 ( 서로 필요한 리소스가 다름, ( 연관이있음 ) )
-> 이 중 하나라도 만족하지못하면 쉽게 데드락이 풀림
아래그림은 사이클이 없어서 데드락에 대한 고민이 없다.
but, 아래그림은 사이클이 있기에 데드락이 존재한다.
아래그림은 사이클이 있지만 데드락이 없다.
Deadlock Prevention : 데드락 예방법
- Mutual exclusion : 동시에 접근을 허용
- Hold and Wait : 동시에 접근한 리소스(프로세스)들을 그냥 둘 다 포기해버린다. ( 교착상태 회피 )
- No Preemption : 현재 리소스가 사용중이건 아니건, 와서 접근을 가로챌수있도록 허용해줌
- Circular Wait : 각 리소스와 스레드가 서로 원을 이루며 접근을 함 (교차)
- 알고리즘 계산법
Allocation : 현재 할당된 갯수 / Max : 최대 갯수 / Need : 최대치까지 필요한 갯수 / Available : 현재 총 가능한 갯수
아래처럼 T0 부터 순차적으로 줄수있다.
이때 T0 은 가능한 갯수에서 max까지 못채워지므로 T1이 가능하므로 T1을 채워준다. -> 이후 T1은 종료 -> Available에 T1의 값을 반환해줌
'Linux' 카테고리의 다른 글
shell 관리 및 미니쉘 만들기 [ Linux ] (0) | 2021.11.08 |
---|---|
임베디드 및 설계 이론 (0) | 2021.11.03 |
Process 처리방식 [ 임베디드 설계 ] (0) | 2021.10.19 |
Assembley [ 임베디드 설계] (0) | 2021.10.19 |
CPU Scheduling [ 임베디드 설계 ] (0) | 2021.10.17 |