본문으로 건너뛰기

세마포어

· 약 3분

세마포어의 개념

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

세마포어 개념도, 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...

세마포어 고려사항

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