개발바닥

[ 기술면접 / 운영체제] 세마포어(Semaphore) & 뮤텍스(Mutex) 본문

개인 공부/기술 면접

[ 기술면접 / 운영체제] 세마포어(Semaphore) & 뮤텍스(Mutex)

라이언 2020. 3. 27. 12:04
반응형

세마포어와 뮤텍스를 알아보기 전에 어떤 상황에 필요한지에 대해서 알아보겠습니다.

 

동시성 프로그래밍의 가장 큰 숙제는 "공유자원 관리" 일 것입니다. 공유된 자원에 여러 개의 프로세스가 동시에 접근하면서 문제가 발생하는 것을 안전하게 관리하기 위해서는 상호배제를 달성하는 기법이 필요한데 세마포어와 뮤텍스가 이를 위해 고안된 기법으로 서로 다른 방식으로 상호배제를 달성합니다.

 

용어에 대해서 알아보겠습니다.

용어 설명

병행 프로세스

(Concurrent Process)

두 개 이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것을 의미한다. 여러 프로세스들이 독립적으로 실행되는 것을 독립적 병행 프로세서라 하고 서로 협력하며 동시에 실행되는 것을 협동적 병행 프로세스라고 한다.

임계구역

(Critical Section)

다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 공유 자원을 의미한다. 임계구역은 특정 프로세스가 독점할 수 없다.

상호 배제

(Mutual Exclusion)

공유 자원을 어느 시점에서 단지 한 개의 프로세스만이 사용할 수 있도록 하며, 다른 프로세스가 공유자원에 대하여 접근하지 못하게 제어하고 각 프로세스가 번갈아 가며 공유 자원을 사용하도록 하는 것으로 임계 구역을 유지하는 기법이다.

동기화 기법

(Synchronization)

두 개 이상의 프로세스를 한 시점에서는 동시에 처리할 수 없으므로 각 프로세스에 대한 처리 순서를 결정하는 것으로 상호 배제의 한 형태이다. 대표적인 동기화 방법으로는 세마포어와 모니터 기법이 있다.

교착 상태

(Deadlock)

상호배제에 의해 나타나는 문제점으로 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상이다.

필요충분 조건 - 상호배제 , 점유대기, 비선점, 순환대기

 

세마포어(Semaphore) 란?

세마포어는 리소스의 상태를 나타내는 간단한 카운터로 생각할 수 있다. 일반적으로 비교적 긴 시간을 확보하는 리소스에 대해 이용하게 되며, 유닉스 시스템의 프로그래밍에서 세마포어는 운영체제의 리소스를 경쟁적으로 사용하는 다중 프로세스에서 행동을 조정하거나 또는 동기화 시키는 기술이다.

현재 공유자원에 접근할 수 있는 쓰레드,프로세스의 수를 나타내는 값을 두어 상호배제를 달성하는 기법이다.

 

세마포어

 

뮤텍스(Mutex) 란?

상호배제라고도 한다. 임계 영역을 가진 쓰레드들의 Running Time이 서로 겹치지 않게 각각 단독으로 실행하게 하는 기술이다. 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 locking과 unlocking을 사용한다.

즉, 쉽게 말하면 뮤텍스 객체를 두 쓰레드가 동시에 이용할 수 없다는 의미이다.

뮤텍스

 

세마포어와 뮤텍스의 차이점

  1. 세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세마포어가 될 수 없다.
  2. 세마포어는 소유할 수 없는 반면, 뮤텍스는 소유가 가능하며 소유주가 이에 대한 책임을 진다.
  3. 뮤텍스의 경우 뮤텍스를 소유하고 있는 쓰레드가 이 뮤텍스를 해제할 수 있다. 하지만 세마포어의 경우 이러한 세마포어를 소유하지 않는 쓰레드가 세마포어를 해제할 수 있다.
  4. 세마포어는 시스템 범위에 걸쳐있고 파일시스템상의 파일 형태로 존재한다. 반면 뮤텍스는 프로세스 범위를 가지며 프로세스가 종료될 때 자동으로 Clean up 된다.

가장 큰 차이점은 관리하는 동기화 대상의 갯수이다.

뮤텍스는 동기화 대상이 오직 하나뿐일 때, 세마포어는 동기화 대상이 하나 이상일 때 사용한다.

 

예시를 들면

뮤텍스는 화장실이 하나 뿐인 없는 식당과 비슷하고 화장실을 가기 위해서는 카운터에서 열쇠를 받아 가야한다.

세마포어는 여러 개의 화장실 칸을 가진 레스토랑이다. 화장실 입구에는 현재 화장실의 빈 칸 개수를 보여주는 전광판이 있다. 전광판에 빈 칸이 1개 이상이면 사용이 가능하고 0개이면 대기해야된다. 

 

 

 

 

반응형
Comments