OS - 세마포어, 뮤텍스

itonse·2024년 5월 3일
0

CS 스터디

목록 보기
31/56

👀 해당 주제 질문 리스트 미리보기

Q1. 세마포어와 뮤텍스의 차이점에 대해 간략히 설명해주세요.
Q2. 세마포어와 뮤텍스가 멀티 스레딩 환경에서 제공하는 공통적인 보장에 대해 설명해주세요.
Q3. 세마포어와 뮤텍스의 사용 상황에 대해 구체적으로 설명해주세요.


1. 들어가기 - 세마포어와 뮤텍스는 어떤 상황에서 필요할까?

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

상호배제란?

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



2. 세마포어(Semaphore)

세마포어

정의

세마포어는 동시성 프로그래밍에서 공유 자원에 접근할 수 있는 스레드 또는 프로세스의 수를 제한하는 카운트 기반의 동기화 기술입니다.

특징

  • 카운트 기반 접근: 세마포어는 공유 자원에 접근할 수 있는 스레드나 프로세스의 최대 허용 수를 설정할 수 있습니다. 이는 동시에 여러 스레드가 자원을 사용할 수 있도록 합니다.
  • 유연성: 세마포어는 자원에 접근 가능한 스레드의 수를 조절하여 다양한 상황에서 활용할 수 있습니다. 이로 인해 대기 중인 스레드 수에 따라 자원의 이용률을 최적화할 수 있습니다.



3. 뮤텍스(Mutex)

뮤텍스

정의

뮤텍스는 공유 자원을 동시에 하나의 스레드만이 접근할 수 있도록 제한하는 동기화 기술입니다.

특징

  • 단독 접근 보장: 뮤텍스는 한 번에 단 하나의 스레드만이 특정 자원 또는 데이터에 접근하도록 보장합니다. 이는 공유 자원을 독점적으로 사용할 수 있게 하여 자원의 안정성과 일관성을 유지합니다.
  • 소유권: 뮤텍스는 잠금을 소유할 수 있는 개념이 포함되어 있어, 잠금을 획득한 스레드만이 해당 잠금을 해제할 수 있습니다. 이는 세마포어에서는 볼 수 없는 특성입니다.



4. 세마포어, 뮤텍스 관련 기술 면접 질문

Q1. 세마포어와 뮤텍스의 차이점에 대해 간략히 설명해주세요.

세마포어는 설정한 동시 접근 스레드 수만큼 동시에 여러 스레드가 자원에 접근할 수 있도록 하는 카운트 기반의 동기화 기술입니다.

반면, 뮤텍스는 한 시점에 단 하나의 스레드만 특정 자원이나 데이터에 접근할 수 있게 하는 동기화 기술이며, 해당 자원에 대한 독점적인 접근을 보장합니다.


Q2. 세마포어와 뮤텍스가 멀티 스레딩 환경에서 제공하는 공통적인 보장에 대해 설명해주세요.

세마포어와 뮤텍스는 모두 멀티 스레딩 환경에서 임계 구역, 즉 공유 자원이 포함된 코드 영역의 접근을 제어하여 경쟁 상태(Race Condition)를 방지합니다.

임계 구역(Critical Sction) 이란?

멀티 프로세스 환경에서 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유 자원의 코드 영역이다. 이러한 영역에서는 경쟁 상태(Race Condition)가 발생할 수 있으므로, 동시에 접근하지 않도록 보장해주어야 한다.


Q3. 세마포어와 뮤텍스의 사용 상황에 대해 구체적으로 설명해주세요.

세마포어는 특정 수의 제한된 자원을 여러 사용자가 공유할 때 사용됩니다. 예를 들어, 데이터베이스 연결 풀이나 네트워크 연결과 같은 자원에 대해 여러 스레드가 동시에 접근할 필요가 있을 때 효율적입니다.

뮤텍스는 파일 시스템, 공유 메모리 영역 등과 같이 동시에 하나의 스레드만 접근해야 하는 자원을 보호할 때 사용됩니다. 뮤텍스는 이러한 자원에 대한 독점적 접근을 보장하며, 잠금을 획득한 스레드만이 해당 잠금을 해제할 수 있는 소유권을 가집니다.


ref.
https://jokerkwu.tistory.com/126
뮤텍스 vs 세마포어

0개의 댓글