지금까지 OS가 지원해주는 synchronization preeptive들 중 세마포어에 대해서 공부했습니다. 이번에는 OS 내부에서 세마포어를 어떻게 구현하는지에 대해서 알아보겠습니다. 세마포어는 인티저(integer) 변수로 availavle한 리소스 인스턴스의 개수를 표현하는 인티저 값 입니다. 일반적인 경우 0과 1값을 가지지만 리소스 인스턴스가 여러 개가 있는 경우 counting semaphore라고 하여 사용가능한 리소스 인스턴스 개수만큼 값을 설정합니다. 세마포어를 구현할 때 인티저 카운터 변수외에 queue structure가 필요합니다. P 오퍼레이션을 했을 때 세마포어를 획득하기 못했을 때 대기해야 하는 프로세스들에게 사용하기 때문입니다. P, V 오퍼레이션은 다음과 같이 구현됩니다...