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)를 보장할 수 없게 된다.