[CS] 상호배제 기법

oy Hong·2024년 4월 11일

기술

목록 보기
11/23

뮤텍스(Mutex)와 세마포어(Semaphore)


임계 구역과 관련해 여러 스레드 또는 프로세스들이 한번에 접근하는것을 막는 상호배제 기법이다.

임계 구역 (Critical Section)

  • 공유된 자원 부분

뮤텍스 (Mutex)

하나의 스레드 또는 프로세스에 의해 소유될 수 있는 Key를 기반으로 한 상호배제기법

  • 하나의 스레드 또는 하나의 프로세스가 접근
  • 뮤텍스 객체는 Lock
  • Lock된 객체는 다른 스레드 또는 다른 프로세스가 접근 불가능
  • 사용을 다 하면 뮤텍스 객체를 Unlock해서 다른 스레드 또는 다른 프로세스가 접근

세마포어 (Semaphore)

현재 공유자원에 접근할 수 있는 스레드 또는 프로세스의 수를 나타내는 카운터 변수를 공유하면서 상호배제를 달성하는 기법

  • 카운터 변수를 두고 있음
  • 스레드가 접근하면 이 카운터 변수를 -1
  • 만일 카운터 변수가 0이 되면 다른 스레드는 접근 불가능 (Lock)
  • 스레드가 사용을 다 하면 카운터 변수를 +1

0개의 댓글