본문 바로가기
IT/Knowledge

Mutex / Semaphore ( 뮤택스 와 세마포어 )

by 성준하이 2022. 10. 11.
반응형

동기화를 위해 이용되는 도구인 뮤택스와 세마포어에 대해서 정리를 해볼 것이다.

 

Mutex (뮤택스)

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

공유된 자원의 데이터 혹은 임계영역 등에 하나의 프로세스 혹은 쓰레드가 접근하는 것을 막아준다.

(프로세스 스레드는 아래 참고 포스팅 참고)

 

이 말이 무엇이냐면 임계구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단독으로 실행되도록 한다는 말이다.

다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 동기화 혹은 락을 사용함으로써 뮤택스 객체를 두 스레드가 사용할수 없다.

 

이해를 돕기 위해서 하나의 예를 들면

마트에서 장볼때 캐셔 한테 계산을 하기 위해서 줄을 서다가 자신의 차례가 오면 계산을 하게 된다.

내가 계산을 할 동안엔 다른 이들이 계산을 방해해서는 안되고, 즉 자신의 물건을 남이 계산하는곳에 두면 안된다.

 

Semaphore (세마포어)

세마포어는 signaling 매커니즘이라는 점에서 뮤택스와 차이가 있다.

락을 걸지 않은 스레드도 signal을 보내 락을 해제할 수 있다.

 

공유된 자원의 데이터 혹은 임계영역 등에 여러 프로세스나 스레드가 접근하는것을 막아준다.

뮤택스랑 비슷하지만 세마포어는 동기화 대상이 하나 이상이다.

 

사용하고 있는 스레드, 프로세스 수를 공통으로 관리하는 하나의 값을 이용해서 상호배제를 달성한다.

 

이해를 돕기 위해서 뮤택스와 비슷하게 마트에서 카운터로 비교를 하면

요즘 마트에서는 셀프 계산대라는것이 생겼다.

한줄로 서고 있다가 여러개의 셀프계산대 중에서 한 명이 계산이 끝나면 맨 앞에 있는 대기자가 해당 자리에서 작업을 한다.

여러 동기화를 대상으로 한다는 말은 여러 계산대가 있다고 할수 있다.

 

둘의 차이점

가장 큰 차이점은 동기화 대상의 개수 즉, 위에서 예시든 계산대의 갯수다.

  • Mutex는 동기화 대상이 오직 1개일 때 사용 / Semaphore는 동기화 대상이 1개 이상일 때 사용
  • Mutex는 자원을 소유할 수 있고, 책임을 가지는 반면 Semaphore는 자원 소유가 불가
  • Mutex는 상태가 0, 1 뿐이므로 Lock을 가질 수 있고, 소유하고 있는 스레드만이 이 Mutex를 해제할 수 있다.
    반면 Semaphore는 Semaphore를 소유하지 않는 스레드가 Semaphore를 해제할 수 있다.
  • Mutex는 프로세스의 범위를 가지며 프로세스 종료될 때 자동으로 Clean up.
    반면 Semaphore는 시스템 범위에 걸쳐 있고, 파일 시스템 상의 파일로 존재

참고 포스팅

https://thenicesj.tistory.com/157

 

프로그램 / 프로세스 / 스레드

컴퓨터를 사용하다보면 프로그램이라는 단어를 많이 사용해보았을 것이다. 프로그램 윈도우 사용자 기준으로 설명을 한다면 .exe파일들 , 즉 실행할수 있는 모든 것을 프로그램이라고 한다. 프

thenicesj.tistory.com

 

반응형

'IT > Knowledge' 카테고리의 다른 글

Third Party 란?  (42) 2022.10.14
Eureka 란?  (67) 2022.10.12
.dat 파일  (59) 2022.10.10
클라우드 네이티브란?(사례 - 넷플릭스)  (35) 2022.10.08
클라우드 네이티브란?(정의)  (48) 2022.10.07

댓글