Skip to main content

세마포어

· One min read

세마포어의 개념​

  • 멀티 프로그래밍 환경에서 두 개의 원자적 함수로 공유 자원에 대한 접근을 제한하는 방법
  • 임계구역에 상호접근할 수 있는 기능을 수행하여 교착상태 방지

세마포어 개념도, P연산, V연산​

세마포어 개념도​

세마포어 연산​

구분P 연산, WaitV 연산, Signal
개념리소스에 접근하기 위해 다른 태스크가 끝나기까지 대기임계영역을 나오면서 다른 태스크가 접근하도록 변경
로직세마포어 S의 Count를 1 감소세마포어 S의 Count를 1 증가
슈도코드P(S) { while S <= 0; S--; }V(S) { S++; }
  • 세마포어에 접근시킬 스레드의 갯수에 따라 이진 세마포어, 계수형 세마포어 선택

세마포어의 유형​

구분내용비고
이진 세마포어상호배제나 프로세스 동기화 목적으로 사용0 or 1
계수형 세마포어초기에 동시에 진입 가능한 프로세스 개수 정의 가능0,1,2,3...

세마포어 고려사항​

  • 세마포어의 직접 제어로 인한 오류 가능성, 난해성을 보완하기 위해 프로그래밍 언어 수준에서 모니터 기법 사용
    • 프로그래밍 언어 수준의 동시성 기법