세마포어
Semaphore
세마포어(Semaphore)는 병행 컴퓨팅 환경에서 공유 자원에 대한 접근을 조절하기 위한 동기화 기법 중 하나입니다. 세마포어는 정수 값을 가지며, 이 값은 특정 자원의 사용 가능한 수를 나타냅니다. 보통 이 값을 세마포어의 “카운트”라고 합니다.
세마포어는 크게 두 가지 연산을 지원합니다.
- P 연산 (Wait 또는 Down 연산): 세마포어의 값을 감소시키는 연산입니다. 만약 세마포어의 값이 양수라면, 해당 값을 감소시키고 작업을 계속할 수 있습니다. 하지만 값이 0이라면, 세마포어를 기다리는 작업은 블록됩니다.
- V 연산 (Signal 또는 Up 연산): 세마포어의 값을 증가시키는 연산입니다. 만약 세마포어를 기다리는 프로세스가 있다면, 이 연산을 수행함으로써 해당 프로세스를 깨워줍니다. 세마포어는 주로 공유 자원에 대한 접근을 조절하는데 사용됩니다. 예를 들어, 임계 영역에 대한 접근을 제어하거나, 프로세스 간 통신을 조율하는 데에 사용될 수 있습니다. 세마포어를 올바르게 사용하면 교착상태와 같은 문제를 방지하고, 병행성을 효율적으로 관리할 수 있습니다.
Leave a comment