패스잇
CS 기초 · 기초

동기화 메커니즘으로 사용되는 '뮤텍스(Mutex)'와 '세마포어(Semaphore)'의 개념을 정의하고, 이 둘의 주요 차이점은 무엇인지 설명해 주세요.

힌트 · 뮤텍스는 상호 배제를 위한 잠금 메커니즘이며, 세마포어는 여러 개의 자원에 대한 접근을 제어할 수 있는 카운터 기반 메커니즘입니다.

상호 배제소유 가능카운팅 세마포어바이너리 세마포어자원 접근 제어

모범답안

뮤텍스와 세마포어는 모두 동기화 메커니즘이지만, 목적과 동작 방식에 차이가 있습니다.

뮤텍스는 상호 배제(Mutual Exclusion)를 위한 잠금 도구입니다. 특정 시점에 단 하나의 스레드만 공유 자원에 접근하도록 보장합니다. 뮤텍스는 '소유' 개념이 있어서, 잠금을 획득한 스레드만이 잠금을 해제할 수 있습니다.

반면, 세마포어는 여러 개의 자원에 대한 접근을 제어하는 데 사용됩니다. 세마포어는 내부적으로 카운터를 가지고 있으며, 이 카운터 값을 통해 접근 가능한 자원의 수를 나타냅니다. 스레드가 자원을 사용하려면 세마포어 값을 감소시키고, 사용이 끝나면 값을 증가시킵니다. 세마포어는 뮤텍스와 달리 잠금을 획득한 스레드가 반드시 잠금을 해제할 필요는 없습니다. 다른 스레드가 해제할 수도 있습니다.

주요 차이점은 뮤텍스는 하나의 스레드만 접근 가능한 자원에 사용되고, 소유 개념이 있다는 점입니다. 세마포어는 여러 개의 자원에 대한 접근을 제어하며, 소유 개념이 없습니다. 세마포어는 카운터 값을 통해 접근 가능한 자원 수를 관리합니다.

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

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

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

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