검색 여닫기
검색
메뉴 여닫기
543
253
4
2.1천
noriwiki
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
파일 올리기
환경 설정 메뉴 여닫기
notifications
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
한국어
개인 도구
로그인
뮤텍스 문서 원본 보기
noriwiki
문서 공유하기
다른 명령
←
뮤텍스
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
[[분류: 동시성 프로그래밍]] == 개요 == 상호 배제(相互排除, mutual exclusion, Mutex, 뮤텍스)는 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘으로, 임계 구역(critical section)으로 불리는 코드 영역에 의해 구현된다. 공유 불가능한 자원의 예로는 동시에 실행되고 있는 프로그램간의 통신에 사용되는 비트 단위의 깃발, 계수기, 큐 등이다. 문제는 스레드가 언제라도 정지되거나 시작될 수 있다는 것이다. == Critical Section == '임계 영역'이라고도 한다. 서로 다른 두 프로세스, 혹은 스레드 등의 처리 단위가 같이 접근해서는 안 되는 공유 영역을 뜻한다. 보호되지 않는 임계 구역에 두 처리 단위가 동시에 접근할 때 발생하는 문제를 '임계 구역 문제'라고 한다. 임계 구역을 시작하는 코드 부분을 '입장 구역(entry section)', 임계 영역을 종료하는 코드 부분을 '퇴장 구역(exit section)'이라고 한다. 임계 영역이 아닌 부분은 '나머지 구역(remainder section)'이라고 한다. == Lock == 락은 두개의 [[atomic operation]]을 제공한다. 이러한 lock operation은 atomic하게 실행되어야 하기 때문에, 소프트웨어 적으로도 구현은 할 수 있지만 대부분 하드웨어적으로 구현한다. 이러한 Lock을 걸어주는 연산은 매우 비싼 연산이기 때문에 critical section은 최소화 하여야 한다. : Lock.acquire() lock이 free상태가 될때까지 기다린후, free상태가 되면 lock을 획득한후 busy상태로 만든다. : Lock.release() lock이 free상태가 되도록 만들어준다. 현재 lock을 호출한 thread에서만 이러한 기능을 사용할 수 있다. [[POSIX Threads]]참조!
뮤텍스
문서로 돌아갑니다.