[운영체제, Operating System] 세마포어 종류와 문제점
Computer/Programming(코딩) |
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)를 보장할 수 없게 된다.
'Computer > Programming(코딩)' 카테고리의 다른 글
[운영체제, Operating System] 교착 상태, Deadlock (0) | 2015.10.09 |
---|---|
[운영체제, Operating System] 임계 구역, Critical section (0) | 2015.10.09 |
[코딩도장] 곱하기에서 찾아낸 재미있는 5와 0의 상관관계 (0) | 2015.07.24 |
[코딩도장] 코딩과 수학의 상관관계 있다? 없다? (0) | 2015.07.13 |
[코딩도장] 숫자를 대신 할 방법?? (0) | 2015.07.12 |