본문 바로가기
CS

뮤텍스(Mutex)

by 남생이야 2024. 5. 20.

 

뮤텍스란? 

  뮤텍스는 상호 배제(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