세마포어 편집하기
IT위키
편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
;semaphore | ;semaphore | ||
;두개의 Atomic한 함수로 제어되는 정수 변수를 이용한 교착 상태 해법 | ;두개의 Atomic한 함수로 제어되는 정수 변수를 이용한 교착 상태 해법 | ||
* [[에츠허르 다익스트라]]가 개발 | |||
* [[다익스트라 | |||
== 구성 및 구현 == | == 구성 및 구현 == | ||
;P연산과 V연산으로 이루어진다. | ;P연산과 V연산으로 이루어진다. | ||
* 아래는 세마포어 카운트를 1로 가정 | * 아래는 세마포어 카운트를 1로 가정 | ||
* 세마포어의 카운트는 1 이상이며 카운트를 조절하여 진입 가능한 프로세스/스레드 수 조절 가능 | ** 세마포어의 카운트는 1 이상이며 카운트를 조절하여 진입 가능한 프로세스/스레드 수 조절 가능 | ||
=== P연산 === | === P연산 === | ||
40번째 줄: | 30번째 줄: | ||
end V // 이제는 다른 프로세스가 들어 올수 있음 | end V // 이제는 다른 프로세스가 들어 올수 있음 | ||
</pre> | </pre> | ||
# 최초 S값을 1로 만든다. | |||
=== 구현 예 === | === 구현 예 === | ||
56번째 줄: | 46번째 줄: | ||
=== 차이 === | === 차이 === | ||
* | * Semaphore는 Mutex가 될 수 있지만 Mutex는 Semaphore가 될 수 없습니다. | ||
** ( | ** (Mutex 는 상태가 0, 1 두 개 뿐인 binary Semaphore) | ||
* | * Semaphore는 소유할 수 없는 반면, Mutex는 소유가 가능하며 소유주가 이에 대한 책임 | ||
* | **Semaphore의 경우 이러한 Semaphore를 소유하지 않는 쓰레드가 Semaphore를 해제 가능 | ||
* Semaphore는 시스템 범위에 걸쳐있고 시스템 파일 형태로 존재 | |||
** Mutex는 프로세스 범위를 가지며 프로세스가 종료될 때 자동으로 Clean up | |||
* | |||
* | |||