mutexsemaphoresynchronization
Mutex와 Semaphore의 차이를 설명해 주세요
- 예상 시간
- 7분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
binary semaphore와 mutex는 같은가요?
counting semaphore는 어디에 쓰나요?
mutex를 잘못 쓰면 어떤 문제가 생기나요?
semaphore의 count가 음수가 되나요?
공유 데이터 보호에는 어떤 것을 먼저 고려하나요?
부가 설명
둘 다 기다리게 만든다는 점 때문에 섞이기 쉽습니다. 차이는 무엇을 표현하려는지에 있습니다. 공유 변수 하나를 동시에 수정하지 못하게 막고 싶다면 mutex가 자연스럽습니다. 반대로 DB connection pool처럼 동시에 10개까지만 쓰게 하고 싶다면 semaphore가 더 잘 맞습니다.
Binary semaphore와 mutex는 비슷해 보이지만 목적이 다릅니다. 구현이나 OS에 따라 세부 의미는 다를 수 있지만, 개념적으로 mutex는 ‘한 명만 들어가는 방의 열쇠’, semaphore는 ‘남은 좌석 수를 세는 카운터’에 가깝습니다. Mutex는 소유권, semaphore는 자원 수 제어에 초점이 있습니다.
한 줄 정리
Mutex는 한 번에 한 실행 흐름만 통과시키는 열쇠이고, semaphore는 동시에 쓸 수 있는 자원 수를 세는 카운터입니다.