X

계수형 세마포어 (Counting Semaphore)

I. 멀티 프로세스 환경의 리소스풀, 계수형 세마포어의 개념

  • 0과 1의 값을 가지는 이진형 세마포어와 달리, 풀에 있는 자원의 수와 같은 값으로 초기화 되는 세마포어 동기화 기법

II. 계수형 세마포어의 동작 매커니즘 및 사례

가. 계수형 세마포어 동작 매커니즘

구분 세부 내용
동작
개념도
매커
니즘
① 세마포어는 Pool 자원 수와 같은 값으로 초기화
② P 호출이 발생할 때 마다 세마포어 1씩 감소, Pool 자원이 추가 할당되어 스레드에서 사용 표시
③ V 호출은 세마포어 1씩 증가시켜 스레드가 자원을 Pool로 반납, 자원을 다른 스레드에 할당 가능 표시
④ 세마포어가 0까지 줄어들었을 때 스레드가 P 호출 시 스레드는 V 통해 자원을 Pool로 반납 시까지 대기
  • 세마포어는 초기 busy-waiting 방식으로 구현되었으나 최근 sleep queue 방식 사용

나. 계수형 세마포어 구성요소

구분 구성요소 세부 내용
계수
범위
음수 세마포어에 정확한 -N개의 스레드 큐가 존재
0 대기중인 스레드가 없으며, wait 연산은 호출 스레드를 큐에 추가
양수 대기중인 스레드가 없으며, wait 연산은 호출 스레드를 큐에 추가 안함
연산자
Wait 세마포어 카운터 감소, 결과로 음수가 되고 호출 스레드는 큐에 삽입
Signal 세마포어 카운터 증가, 결과로 양수가 되고 대기 중 스레드는 큐에서 제거

III. 병행 프로세스 동기화 기법 간 비교

구분 이진형세마포어 계수형세마포어 뮤텍스
Internal States 2 N 2
User from ISRs Yes Yes No
Ownership No No Yes
Priority Inheritance No No Yes
Initialization 없을 수도 있음 Counter >= 0 항상 가지지 않음
Queue
구성
FIFO or 우선순위 FIFO or 우선순위 우선순위

 

Categories: CA/운영체제
도리: