세마포어 편집하기

IT위키

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.

편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.

최신판 당신의 편집
3번째 줄: 3번째 줄:
;두개의 Atomic한 함수로 제어되는 정수 변수를 이용한 교착 상태 해법
;두개의 Atomic한 함수로 제어되는 정수 변수를 이용한 교착 상태 해법


== 개요 ==
* [[다익스트라|다익스트라(E.J. Dijkstra)]]가 제안
* [[다익스트라|다익스트라(E.J. Dijkstra)]]가 제안
* 상호 배제의 원리를 보장하는 알고리즘
* 임계구역에 대하여 각각의 프로세스들의 접근을 제어하고 프로세스 사이의 동기를 유지
* 잠자기와 깨우기의 연산을 이용하며, 공유 자원의 수를 나타내는 변수를 세마포어 변수 S라고 함
* 세마포어 변수는 일반적으로 정수형 변수 사용
== 세마포어의 종류 ==
* 이진형 세마포어: 0과 1값, 한개의 공유자원을 상호배제
* 계수형 세마포어 : 0과 양의 정수, 여러개의 공유자원을 상호배제


== 구성 및 구현 ==
== 구성 및 구현 ==
40번째 줄: 31번째 줄:
end V                  // 이제는 다른 프로세스가 들어 올수 있음
end V                  // 이제는 다른 프로세스가 들어 올수 있음
</pre>
</pre>
* 최초 S값을 1로 만든다.
# 최초 S값을 1로 만든다.


=== 구현 예 ===
=== 구현 예 ===
56번째 줄: 47번째 줄:


=== 차이 ===
=== 차이 ===
* 세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세어포어가 될 수 없음
* Semaphore는 Mutex가 될 수 있지만 Mutex는 Semaphore가 될 수 없습니다.
** (뮤텍스는 상태가 0, 1 두 개 뿐인 이진형 세마포어)
** (Mutex 는 상태가 0, 1 두 개 뿐인 binary Semaphore)
* 세마포어는 소유할 수 없는 반면, 뮤텍스는 소유가 가능하며 소유주가 이에 대한 책임
* Semaphore는 소유할 수 없는 반면, Mutex는 소유가 가능하며 소유주가 이에 대한 책임
* 세마포어는 파일 형태로 존재하며 전 시스템 범위, 뮤텍스는 프로세스 범위이며 프로세스 종료 시 초기화
**Semaphore의 경우 이러한 Semaphore를 소유하지 않는 쓰레드가 Semaphore를 해제 가능
* Semaphore는 시스템 범위에 걸쳐있고 시스템 파일 형태로 존재
** Mutex는 프로세스 범위를 가지며 프로세스가 종료될 때 자동으로 Clean up


== 기술사 기출 ==
== 기술사 기출 ==
* [http://q.fran.kr/문제/6105 정보관리기술사 66회 1교시]
* [http://q.fran.kr/문제/6105 정보관리기술사 66회 1교시]
* [http://q.fran.kr/문제/5765 컴퓨터시스템응용기술사 108회 3교시]
* [http://q.fran.kr/문제/5765 컴퓨터시스템응용기술사 108회 3교시]
* [http://q.fran.kr/문제/10082 컴퓨터시스템응용기술사 121회 1교시]
IT위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는 IT위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다. 저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소 편집 도움말 (새 창에서 열림)