뮤텍스란?
뮤텍스는 상호 배제(Mutual Exclusion)의 약자로 락이라고도 한다. 병렬 프로그래밍에서 공유 불가능한 자원에 대한 접근에 제한을 강제하기 위한 기법으로 Key를 기반으로 하는 상호 배제 기법 중 하나이다.
뮤텍스는 동시성이 강제되지 않은 자원 즉, 임계 구역을 가진 쓰레드들이 단독으로 실행하도록 하는 동기화 기법이다.
뮤텍스는 Locking 매커니즘으로 오직 하나의 쓰레드만이 동일한 시점에 뮤텍스를 얻어 임계 영역에 들어 올 수 있게 하며 Lock과 Unlock, 두 가지 연산만을 지원하는 된다는 특징이 있다.
- Lock : 현재의 임계 구역에 들어갈 권한을 얻어온다. 만일 다른 쓰레드나 프로세스가 임계 구역을 수행 중이라면 종료할 때 까지 대기 한다.
- Unlock : 현재의 임계 구역을 모두 사용했음을 알린다. 대기 중인 다른 프로세스나 쓰레드가 임계 구역을 진입할 수 있다.
임계 구역
공유 변수 영역이라고도 하며, 여러 프로세스나 쓰레드가 데이터를 공유하며 수행할 때, 각각의 프로세스나 쓰레드에서 공유 데이터를 접근할 수 있도록 하는 프로그램 코드 부분이다.
세마포어와의 관계
뮤텍스처럼 동기화 기법에는 세마포어가 있다. 뮤텍스로 세마포어를 구현할 수 있고 세마포어로 뮤텍스를 구현할 수 있다. 세마포어는 Signaling 매커니즘을 사용한다는 점에서 뮤텍스와 차이를 보이고 있다.
'CS' 카테고리의 다른 글
모니터 알고리즘 (0) | 2024.05.23 |
---|---|
세마포어(Semaphore) (0) | 2024.05.21 |
임계 구역 (Critical Section) (0) | 2024.05.19 |
문맥교환 오버헤드 (Context Switch Overhead) (0) | 2024.05.17 |
상호배제(Mutual Exclusion) (0) | 2024.05.16 |