Semaphore


### Integer counter (File) variable S - cannot solve all dead lock
- default value is resources number
### P function(try / decrement) - before critical section - wait(S)
### V function(increment) - after critical section -signal(S)
two function should satisfy atomicity - other process cannot change while this function 
> 0 : block




> ## Method 1
> ```typeP(S) {			// do nothing - busy waiting     while S <=0;     S--; } V(S) {     S++; }```

> ## Method 2
> ```typeP(S) {     S--;     if S < 0         // sleep this process } V(S) {     S++;     if S <= 0     // remove from sleep queue```






- semval : 세마포어의 값으로서 항상 양수가 지정된다. 여기에 값을 새로 지정하려면 반드시 세마포어 시스템 호출을 통해야하며 프로그램에서 일반 자료형의 변수와 같이 직접 접근 할 수는 없다.
- sempid : 세마포어에 접근했던 최근의 프로세스의 프로세스 식별번호이다.
- semncnt : 세마포어의 값이 현재보다 증가하기를 기다리는 프로세스의 갯수.
- semzcnt : 세마포어의 값이 0으로 되기까지 기다리는 프로세스의 갯수
> 

> 



