패스잇
CS 기초 · 중급

뮤텍스와 세마포어는 동기화 메커니즘으로 사용됩니다. 두 메커니즘의 주요 차이점을 설명하고, 각각 어떤 상황에서 더 적합하게 사용될 수 있는지 구체적인 예시를 들어 설명해주세요.

힌트 · 뮤텍스는 상호 배제를 위한 잠금 메커니즘이며, 세마포어는 리소스에 대한 접근을 제어하는 카운팅 메커니즘입니다. 각각 단일 리소스와 다중 리소스 접근 제어에 활용됩니다.

상호 배제소유 가능성카운팅리소스 관리프로세스/스레드 동기화

모범답안

뮤텍스와 세마포어는 둘 다 동기화 메커니즘이지만, 주요 차이점은 뮤텍스는 상호 배제를 위한 잠금 도구이고, 세마포어는 리소스 접근을 제어하는 카운터라는 점입니다.

뮤텍스는 특정 시점에 하나의 스레드만 공유 자원에 접근하도록 보장합니다. 마치 화장실 문에 걸쇠를 거는 것과 같습니다. 한 사람이 들어가면 다른 사람은 기다려야 합니다. 주로 단일 리소스에 대한 접근을 제어할 때 사용됩니다. 예를 들어, 공유 변수를 갱신하는 스레드 간의 충돌을 방지하는 데 유용합니다.

반면, 세마포어는 동시에 접근할 수 있는 리소스의 수를 제한합니다. 주차장과 비슷하다고 생각하면 됩니다. 주차 공간이 10개인 주차장은 세마포어 값이 10인 세마포어로 표현할 수 있습니다. 주로 다중 리소스에 대한 접근을 제어할 때 사용됩니다. 예를 들어, 데이터베이스 연결 풀에서 동시에 사용할 수 있는 연결 수를 제한하는 데 사용할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 동시성 / 멀티스레딩 면접 질문

← 동시성 / 멀티스레딩 면접 질문 전체 보기