뮤텍스 vs 세마포어

Minji·2022년 9월 11일
0

기술면접

목록 보기
2/11

뮤텍스, 세마포어의 차이점에 대해서 설명하시오

키워드 : 뮤텍스, 세마포어, 임계영역

공유자원, 임계영역

공유자원

시스템 안에서 프로세스, 스레드가 함께 접근 할 수 있는 자원이나 변수 등을 의미한다.
공유자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태라고 한다.

임계 영역(critical section)

공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 영역을 임계 영역이라고 한다.
이 영역을 해결하기 위한 방법으로 뮤텍스,세마포어, 모니터 세 가지가 있다. 이 방법들은 모두 상호배제, 한정 대기, 융통성이라는 조건을 만족한다. 세 방법의 토대는 lock이다.

  • 상호배제: 한 프로세스가 임계 영역에 들어갔을 떄 다른 프로세스는 들어갈 수 없다.
  • 한정 대기 : 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안된다
  • 융통성 : 한 프로세스가 다른 프로세스의 일을 방해해서는 안된다.

뮤텍스

  • 간단하게, 공유 자원을 사용하기 전에 설정하고 사용한 후에 해제하는 잠금
  • 하나의 상태(잠금 or 잠금해제)만 가진다.

한 프로세스에 의해 소유될 수 있는 key를 기반으로 한 상호배제 기법이고 key에 해당하는 어떤 객체가 있고 이 객체를 소유한 스레드나 프로세스만이 공유자원에 접근할 수 있다.

동기화 대상이 하나이며 락을 사용해서 두 스레드가 동시에 접근 할 수 없게 한다.

세마포어

  • 일반화된 뮤텍스
  • 간단한 정수 값과 두가지 함수(wait,signal 또는 P,V)로 공유 자원에 대한 접근을 처리한다.
  • wait() 자신의 차례가 올 떄까지 기다리는 함수
  • signal() 다음 프로세스로 순서를 넘겨주는 함수
    프로세스가 공유 자원에 접근하면 세마포어에서 wait() 수행하고 공유 자원 접근 해제하면 세마포어에서 signal()을 수행한다.
    프로세스가 세마포어 값을 수정할 떄 다른 프로세스는 동시에 세마포어 값을 수정할 수는 없다.

공유된 자원의 데이터 혹은 임계영역 등에 여러 Process 혹은 Thread가 접근하는 것을 막아준다.
공통으로 관리하는 하나의 값을 이용합니다.

동기화 대상이 하나 이상이다.

공통점

동기화 방법

차이점

동기화 대상의 갯수

질문

스터디에서 받은 질문 정리
Q .Binary semaphore와 Mutex를 동일하게 볼 수 있나요?
A .binary semaphore는 0과 1의 두 가지 값만 가질 수 있는 세마포어입니다.
구현의 측면에서 보면, 둘이 유사하기 때문에 뮤텍스는 바이너리 세마포어라고 할 수 있습니다.
하지만, 메커니즘 측면에서 보면, 동일하게 보기는 어렵습니다.
뮤텍스는 잠금 메커니즘 (리소스에 대한 접근을 동기화하는 데 사용되는 메커니즘)
세마포어는 신호 메커니즘 (신호를 기반으로 상호 배제가 일어나는 메커니즘)

참고문헌

profile
매일매일 성장하기 : )

0개의 댓글