공유된 자원의 접근 개수를 제어하며, 동시에 접근할 수 있는 프로세스/스레드의 수를 제한하는 동기화 도구각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 부분P, V 설명
---------
- P
- 임계 구역 들어가기 전에 수행(프로레스 진입 여부를 자원 개수 (S)를 통해 결정)
- V
- 임계 구역에서 나올 때 수행(자원 반납 알림, 대기 중인 프로세스를 깨우는 신호
구조
----
P(S)
// -- 임계 구역 --
V(S)
구현
----
proceduer P(S) -----> 최소 S값은 1
while S=0 do wait -----> S가 0면 1이 될 때까지 기다림
S := S-1 -----> S를 0을 만들어 다른 프로세스가 들어 오지 못하게 함
end P
--- 임계 구역 ---
procedure V(S) -----> 현재 상태는 S가 0
S := S+1 -----> S를 1로 원위치시켜 해제하는 과정
end V
최초 S 값은 1이고, 현재 해당 구역을 수행할 프로세스 A, B가 있다고 가정
P(S)를 실행하여 S를 0으로 만들고 임계구역에 들어감P(S)를 실행하지만 S가 0이므로 대기 상태V(S)를 싱행하면 S는 다시 1이 됨P(S)에서 while문을 빠져나올 수 있고 임계구역으로 들어가 수행임계 구역을 가진 스레드들의 실행시간이 서로 겹치지 않고 각각 단독으로 실행되게 하는 기술