CS STUDY/운영체제

뮤텍스 & 세마포어

cha_eyoon 2024. 3. 21. 16:04

세마포어(Semaphore)

  • 멀티 프로그래밍 환경에서 공유된 자원의 데이터가 한 번에 하나의 프로세스만 접근할 수 있도록 제한
  • 동기화 대상이 하나 이상
  • 세마포어를 소유하지 않는 스레드가 세마포어 해제 가능
  • 세마포어는 시스템 범위에 걸쳐 있고 파일로 존재 

 

뮤텍스(Mutex)

  • 공유 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘
  • 동기화 대상이 하나일 때 사용
  • 자원을 소유하고 있는 스레드만이 뮤텍스 해제 가능
  • 뮤텍스는 프로세스의 범위를 가지며 프로세스가 종료될 때 자동으로 정리

 

뮤텍스 vs 세마포어

  • 세마포어는 뮤텍스가 될 수 있지만, 뮤텍스는 세마포어가 될 수 없음

 

Q. 뮤텍스와 세마포어의 적용범위의 차이?

A. 세마포어는 프로세스간에 주로 사용, 뮤텍스는 스레드간에 주로 사용, 뮤텍스는 0,1로 이루어진 이진 상태의 세마포어

 

Q. 뮤텍스와 세마포어의 해제 권한의 차이

A. 뮤텍스는 자기 자신만 해제 가능, 세마포어는 다른 프로세스가 해제 가능