-
뮤텍스(Mutex)와 크리티컬 리전/섹션(Critical Region/Section)프로그래밍/기록, 개념, 용어 2015. 2. 5. 01:53반응형
뮤텍스(Mutex)와 크리티컬 리전/섹션(Critical Region/Section)
가장 단순한 동기화 장치는 상호 배타적인 잠금 매커니즘인 뮤텍스이다.
뮤텍스를 사용하면 락을 획득한 스레드만이 그 구역에 접근이 가능하므로,
특정 데이터 구조를 뮤텍스 락으로 둘러싸면 한 시점에 한 스레드만 접근하게 만들 수 있다.
int counter = 0;
void inc()
{
acquire(mutex);
++counter;
release(mutex);
}void dec()
{acquire(mutex);
--counter;
release(mutex);
}여러 개의 스레드가 같은 뮤텍스 락을 동시에 얻으려고 시도해도 한 스레드만 락을 얻고, 다른 스레드들은 대기하게 된다.
락을 얻기 위해 대기하는 상황을 Contended Mutex, 뮤텍스가 컨텐드되었다고 한다.
또, 락의 획득과 해제로 둘러싸인 영역을 크리티컬 섹션(Critical Section) 또는 크리티컬 리전(Critical Region)이라 부른다.
이 구역의 코드는 한 시점에 한 스레드에 의해서만 구동이 가능하다.
그런데 이러한 뮤텍스의 특성은 병렬화한 프로그램을 순차동작 프로그램과 다를바가 없게 만들어버리는 문제가 있으므로,
프로그램에 크리티컬 섹션 너무 많다면 멀티코어의 이점을 살리기 어렵다.
반응형'프로그래밍 > 기록, 개념, 용어' 카테고리의 다른 글
데드락(Deadlock)과 라이브락(Livelock) (0) 2015.02.05 데이터 레이스(Data Race) (0) 2015.02.05 원자적 조작과 락-프리 코드(Atomic operation & Lock-Free code) (0) 2015.02.05 배리어(Barrier) (0) 2015.02.05 리더즈-라이터 락(Readers-Writer Lock) (0) 2015.02.05