본문 바로가기
컴퓨터공학/운영체제

[운영체제] 세마포어와 뮤텍스

by 독서왕뼝아리 2023. 4. 22.

공유된 자원에 여러 프로세스가 동시에 접근하면 문제가 발생할 수 있다. 이러한 문제를 제한하기 위해 고안된 방법이 세마포어와 뮤텍스이다. 이때 각 프로세스가 접근하는 공유 데이터 부분을 임계 구역(Critical Section)이라고 한다.

  • 세마포어: 멀티 프로세스 환경에서 공유 자원에 대한 접근을 제한하는 방법
  • 뮤텍스: 임계 구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단독으로 실행되게 하는 기술
    상호배제(Mutual Exclusion)의 약자이다.

뮤텍스보다 세마포어가 좀 더 상위 개념이다.
 

세마포어의 P, V연산
  • P연산: 임계 구역에 들어가기 전 수행 (프로세스 진입 여부를 자원의 개수 S를 통해 결정)
  • V연산: 임계 구역에서 나올 때 수행 (자원 반납 알림, 대기 중인 프로세스를 깨우는 신호)

 
P연산 후 Toilet(임계 영역)을 이용한다.

 
모든 Toilet이 사용 중이기 때문에 대기자가 발생했다.

 
 
세 번째 Toilet이 사용을 끝내고 V연산을 하면 대기하던 사람이 P연산을 수행한 후 Toilet을 이용하게 된다.

 

뮤텍스

해당 접근을 조율하기 위해 lock과 unlock을 사용한다.

  • lock: 현재 임계 구역에 들어갈 권한을 얻어온다. (이미 점유 중이라면 종료할 때까지 대기)
  • unlock: 현재 임계 구역을 모두 사용했음을 알린다.

 
Toilet (임계 영역)을 이미 점유하고 있기 때문에 임계 영역 사용자는 lock 상태이다.
 

Toilet을 사용하고 싶어하는 사람들이 증가했다. 하지만 lock 상태이므로 unlock이 될 때까지 기다려야 한다.
 

unlock이 되고 다음 차례가 lock한 다음 Toilet을 사용한다.
 
 
 
참고
https://medium.com/@kwoncharles/%EB%AE%A4%ED%85%8D%EC%8A%A4-mutex-%EC%99%80-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4-semaphore-%EC%9D%98-%EC%B0%A8%EC%9D%B4-de6078d3c453