Computer/Programming(코딩)

[운영체제, Operating System] 세마포어 종류와 문제점

Lewis.yongmin 2015. 10. 9. 02:25

우선 Semaphore 란?


: 두 개의 원자적(atomic) 함수로 조작되는 정수 변수로서, 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법으로 사용.

: 함수 P는 임계 구역(Critical section)에 들어가기 전에 수행, 함수 V는 임계 구역에서 나올 때 수행된다. 

: 모든 교착 상태(Deadlock)를 해결하지는 못한다. 이유는 아래 설명.




Semaphore의 종류에는 크게 2가지가 있다.


1. Binary semaphores, (=이진 세마포어)

 : Semaphore 값으로 0 또는 1을 가진다. Binary Semaphore를 이용하여 Counting Semaphore를 구현할 수도 있다.


2. Counting semaphores, (=일반, 카운팅, 범용, 계수 세마포어)

 : 초기값은 가능한 자원의 수로 정해지며, Semaphore 값의 범위는 정해져 있지 않다.




Semaphore의 문제점 예시


1. 함수 P 수행 후 함수 V를 실행하지 않았을 시, 

 현재 프로세스가 Critical section에서 빠져나갈 수 없게 된다. 또한 다른 프로세스들은 Critical section에 들어갈 수 없으므로 Deadlock가 발생한다.


2. 함수 V 수행 후, 2개 이상의 프로세스가 동시에 Critical section에 들어갈 수 있으므로 상호 배제(Mutual Exclusion)를 보장할 수 없게 된다.