[CS] 교착상태에 대한 나름의 이해
2023. 10. 14. 01:22ㆍCS
교착상태(Deadlock)는 4가지 조건이 갖추어지면 발생한다.
1. 상호배제: 하나의 프로세스만 공유자원에 접근할 수 있다. 락킹 메커니즘과 같다. 그러니까 나 말고 다른 애는 못들어오는 거다(상호배제)
2. 점유와 대기: 하나를 점유하고 있는 프로세스가 다른 하나의 프로세스를 대기하고 있는 것이다.
3. 비선점: 프로세스가 강제로 다른 프로세스로부터 공유 자원을 뺏을 수 없다.
4. 환형대기: 프로세스가 자신의 자원을 점유하면서 앞 또는 뒤로 자원을 대기한다. 식사하는 철학자 문제
위의 네 가지가 충족되면 교착상태가 발생하고 하나라도 충족이 되지 않으면 발생하지 않는다. 각각에 대한 해결책은 다음과 같다.
1. 상호배제 부정: 세마포어 등과 같이 여러 개의 프로세스가 접근할 수 있도록 한다.
2. 점유와 대기 부정: 하나를 점유하고 다른 하나를 대기하는 상황을 없앤다. 예를 들어, 한꺼번에 모든 자원을 부여하든지 점유하지 않는 상태에서만 요구할 수 있게 한다.
3. 비선점 부정: 프로세스가 강제로 다른 프로세스로부터 공유 자원을 뺏을 수 있게 한다.
4. 환형대기 부정: 일정한 순서를 정해 그에 따라서만 자원에 접근하도록 한다.
Reference
https://www.yes24.com/Product/Goods/121769526
'CS' 카테고리의 다른 글
[CS] IPC에 대한 나름의 이해 (0) | 2023.10.16 |
---|---|
[CS] 쓰레드 안전에 대한 나름의 이해 (0) | 2023.10.15 |
[CS] 동기 비동기 블록 논블록에 대한 나름의 이해 (1) | 2023.10.12 |
[CS] 동기화에 대한 나름의 이해 (0) | 2023.10.12 |
[CS] 운영체제와 하드웨어의 작동원리에 대한 나름의 이해 (1) | 2023.10.11 |