[CS Study : OS] 공유자원과 임계영역

공유자원과 임계영역

공유자원

공유자원은 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일, 데이터 등의 자원이나 변수를 의미한다.

이 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 Race Condition이라고 한다.

임계영역

**임계영역(Critical Section)**이란 공유 자원의 접근 순서에 따라 실행 결과가 달라지는 프로그램의 영역을 말한다. 즉, 임계 구역은 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유자원(자료 구조 또는 장치)에 접근하는 코드의 일부를 말한다. 임계영역이 critical section인 이유는 **“앞으로의 상황에 영향을 미친다는 점에서 대단히 중요한”**이라는 뜻이다.

생산자 - 소비자 문제

생산자가 데이터를 생성하여 버퍼에 저장하고, 소비자가 버퍼에서 데이터를 가져와 소비하는 과정에서 공유변수에 두 개 이상의 프로세스가 동시에 참여하여 공유자원의 값이 꼬이게 되는 문제를 뜻한다.

임계영역 해결 조결

임계영역을 보호하기 위한 방안

뮤텍스(Mutex)

뮤텍스는 자원에 대한 접근을 동기화하기 위해 사용되는 상호 배제 기술이다.