[Tech] 임계 영역 & 데드락
[Tech] 임계 영역 & 데드락
공유 자원, Shared Resource
- 위 이미지의 빨간 영역에 있는 자원들을 공유 자원으로 설명할 수 있다.
- 즉, 각 프로세스, 스레드가 함께 접근할 수 있는 자원이나 변수이다.
- 보통, 파일이나 데이터, 코드 등이 이에 해당한다.
- 이 공유 자원에, 두 개 이상 프로세스가 동시에 읽거나 쓰게 된다면?
임계 영역, Critical Section
- 서로 다른 프로세스가 공유하는 변수, 코드 영역을 의미한다.
- 공유 자원에 접근할 때의 나타나는 문제를 임계 영역 문제라고 하며 다음과 같은 해결책이 있다.
- 뮤텍스, Mutex Locks: 공유 자원
lock()을 통해 잠금을 설정하고 해제하는 방식 - 세마포어, Semaphore: 두 가지 연산
wait(P),signal(V)로 프로세스 가용을 제어하는 방식
- 뮤텍스, Mutex Locks: 공유 자원
임계 영역의 해결 조건
앞선 제시한 해결책은 다음과 같은 조건을 만족한다.
- 상호 배제, Mutual Exclusion: 한 프로세스가 임계 영역에 들어갔으면, 다른 프로세스는 들어갈 수 없음.
- 진행, Progress: 임계 영역에서 실행하는 프로세스가 없고, 들어가려는 프로세스가 존재하면,
임계 영역으로 진입하는 프로세스 선택이 무한하게 연기되서는 안됨. - 한정된 대기, Bounded Waiting: 허용될 때가지 진입을 요청하는 프로세스가 대기가 계속되서는 안됨.
데드락(교착 상태), Deadlock
- 두 개 이상 프로세스가 서로 다른자원을 요구하면서, 모두 작업을 수행할 수 없는 상황을 의미한다.
- 이는 시스템 자원을 낭비하고, 성능을 저하시킨다.
데드락 발생 필요조건
- 상호 배제, Mutual Exclusion: 하나의 자원은 한 번에 하나의 프로세스만 사용할 수 있음.
- 점유 대기, Hold and Wait: 프로세스가 최소한 하나의 자원을 보유한 상태에세 다른 자원을 기다리고 있음.
- 비선점, No Preemption: 프로세스가 보유한 자원을 다른 프로세스에 의해 뱃길 수 없음.
- 순환 대기, Circular Wait: 두 개 이상의 프로세스 사이에 순환적인 자원 대기 발생함.
✨ 출처
prepare_frontend_interview
Abraham Silberschatz, 운영체제
This post is licensed under CC BY 4.0 by the author.