220823)임계영역, 교착상태
임계 영역(Critical Section)
두 개 이상의 스레드가 공유자원에 접근할 때, 오직 한번에 하나의 스레드만의 독점을 보장해줘야하는 자원을 일컫는다. 임계 영역은 지정된 시간이 지난 후 종료되며, 어떤 스레드가 임계 영역에 들어가고자 한다면 지정된 시간 만큼 대기해야 한다. 스레드가 공유자원의 배타적인 사용을 보장받기 위해서 임계 영역에 들어가거나 나올 때는 세마포어 같은 동기화 매커니즘이 사용된다.
참조: https://ko.wikipedia.org/wiki/%EC%9E%84%EA%B3%84_%EA%B5%AC%EC%97%AD
---
교착 상태 (Dead Lock)
둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 뜻한다.
데드락이 발생하기 위한 조건은 다음과 같다.
상호배제: 한 번에 프로세스 하나만 해당 자원을 사용할 수 있다.
점유대기: 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다.
비선점: 이미 할당된 자원을 강제로 빼앗을 수 없다.
순환대기: 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다.
위 네 가지를 하나라도 발생하지 않도록 하는 것이 데드락을 예방하는 방법이다. 시스템의 프로세스들이 요청하는 모든 자원을 할당해주면서도 데드락을 발생시키지 않는다면 '안정 상태(safe state)'에 있다고 말한다.