운영체제 공부하다가 막혀서 질문 드립니다. 뮤텍스랑 세마포어가 둘 다 락 거는 용도라고만 알고 있었는데, 코드 보다 보니 뭔가 다르게 쓰는 것 같더라고요.


제가 이해한 건 이 정도예요.

// 뮤텍스
lock.acquire()
// 임계구역
lock.release()


근데 세마포어도 acquire, release 이런 식으로 쓰던데 그럼 사실상 같은 거 아닌가요? 그냥 이름만 다른 건지, 아니면 진짜 용도가 갈리는 건지 모르겠습니다.


특히 "이진 세마포어는 값이 0이랑 1만 오가니까 뮤텍스랑 똑같다"는 말을 여러 군데서 봤는데, 이게 맞는 말인가요? 값 범위가 같으면 그냥 같은 걸로 봐도 되는 건지 궁금합니다. 실무에서 둘을 나눠 쓰는 기준 같은 게 있으면 알려주시면 감사하겠습니다.