OS

[OS] 뮤텍스 / 세마포어

집한구석 2021. 6. 13. 16:08
728x90

정의

  • 여러 프로세스나 쓰레드가 공유자원에 접근하는 것을 제어하는 방법
  • 병행처리를 위한 동기화 기법

뮤텍스

  • 공유된 자원 데이터를 여러쓰레드가 접근하는 것을 막는 것 
  • 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key를 기반으로 하는 상호배제 기법
  • Critical Section을 가진 스레드의 Running time이 서로 겹치지 않도록 각각 단독으로 실행하게 하는 기술
  • 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 synchronized 또는 lock을 사용

세마포어 

  • 공유된 자원 데이터를 여러프로세스가 접근하는 것을 막는 것
  • 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스를 나타내는 수를 나타내는 값을 두어 상호배제를 달성하는 기법

차이점

  • 뮤텍스는 동기화대상이 하나일 경우, 세마포어는 동기화 대상이 하나이상일 경우 사용
  • 세마포어는 뮤텍스가 될 수 있지만, 뮤텍스는 세마포어가 될 수 없음

정리

뮤텍스  세마포어
공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는것 공유하는 자원의 데이터를 여러 프로세스가 접근하는 것을 막는것
뮤텍스는 lock,unlock 두가지의 값만 가진다 세마포어는 1개이상의 스레드가 접근할 수 있다
프로세스의 범위(프로세스 존재시만 효력) 파일시스템 상 파일 형태로 존재
소유 가능 소유 불가능
뮤텍스를 소유하고 있는 쓰레드가 이 뮤텍스를 해제 할 수 있다. 세마포어를 소유하고 있지 않는 쓰레드도 이 세마포어를 해제 할 수 있다.

 

'OS' 카테고리의 다른 글

[OS] Thread Safe  (0) 2021.11.06
[OS] 데드락  (0) 2021.11.06
[OS] Thread (쓰레드)  (0) 2021.10.03
[OS] Process (프로세스)  (0) 2021.07.11
[OS] PCB(Process Control Block)  (0) 2021.06.12