컴퓨터/이론 및 tools 사용

세마포어와 뮤텍스의 동작원리

review777777 2016. 11. 4. 02:02
반응형

 

 

프로세스에 한번에 여러 자원이 점유되지 못하기 때문에 스레드를 사용한다. 한 스레드는 + 연산 다른 스레드는 연산을 하게 된다. 이렇게 연산이 이루어지는 공간이 임계영역이고,이 자체가 동기화이다. 동기화 객체로는 뮤텍스(하나의 자원에만 접근) , 세마포어 (하나 이상 가능) 등 이벤트가 있으며 스레드에서 연산이 꼬이게 될 경우를 대비하기 위해 동기화 객체를 이용한다.

 

 

 

 

세마포어

세마포어는 빈 화장실 열쇠의 갯수에 비유할 수 있다. 즉 비어 있는 칸만큼 열쇠가 있다고 가정하면 예를 들어 네 개의 화장실에 자물쇠와 열쇠가 있다고 한다면 세마포어는 열쇠의 갯수를 계산하고 시작할 때 4의 값을 갖는다. 사람들이 화장실에 들어갈 때마다 열쇠의 숫자는 줄어들게 된다. 화장실 칸이 다 찰 경우 카운트는 0이 되며 다음 사람은 줄을 서서 기다린다. 볼일을 끝내고 나오면 리소스 사용을 마쳤다는 신호로 카운트를 하나 늘린다. (1이 증가 됨) 따라서 열쇠 하나가 사용가능하기 때문에 줄을 서서 기다리고 있는 다음 사람이 화장실에 입장할 수 있게 된다.

 

운영체계 또는 프로그램 작성 내에서 공유자원에 대한 접속을제어하기 위해 사용되는 신호이다. 각 프로세스에게 제어 신호를 전달해 순서대로 작업을 수행하도록 하는 기법이다.

- 숫자연산 + 상호배제 + P, V가 합쳐진 개념

- P연산 : 자원의 개수를 통해 자원에 대한 프로세스의 진입여부 결정. 자원의 개수를 감소 시킴. wait 동작

- V연산 : 대기중인 프로세서를 깨우는 신호 자원의 개수를 증가 시킴. signal 동작

병형 내지 병렬로 동작되는 둘이상의 프로세서 사이에서 마이크로프로세서 시간이나 입출력 접속구와 같은 공유자원을 동시에 사용할 수 없기 때문에(여러개의프로세스가 동시에 값을 수정하지 못함) 공유 리소스에 접근 할 수 있는 최대 허용치만큼 동시에 사용자 접근을 할 수 있게 한다. 쓰레드들은 리소스 접근 요청을 할 수 있고 세마포어에서는 카운트가 하나씩 줄어들게 되며 리소스가 모두 사용 중 인 경우 카운트 0 다음 작업은 대기를 하게 된다. 리소스 사용을 마쳤다는 신호를 보내면 카운트가 하나 늘어나게 되고 다음 작업이 사용 할 수 있다.

 

단점

1. 교착상태 Deadlock

P-임계구역-P 현재 프로세스가 임계구역에서 빠져나갈 수 없게 되며, 다른 프로세스들은 임계구역에 진입 불가

2. 상호배제 Mutual Exclusion 보장

2개 이상의 프로세스가 동시에 임계구역에 들어갈 수 있으므로 상호배제가 보장되지 않음.

 

 

 

 

 

뮤텍스

화장실에 들어가기 위한 열쇠로 비유 할 수 있다.

즉 화장실에 들어갈 수 있는 열쇠를 한 사람이 갖고 있다면, 한 번에 열쇠를 갖고 있는 그 한 사람만이 들어갈 수 있다.

화장실에 열쇠를 갖고 있는 사람이 들어가 볼일을 다 본 후에는 줄을서서 기다리고 있는 (대기열 - ) 다음 사람에게 열쇠를 주게 된다.

즉 뮤텍스는 값이 1인 세마포어와 같다.

 

세마포어는 스레드 간에서 공유가 배제되는 객체이다. 파일과 같은 공유 자원이 수행 중 오직 한 프로그램이나 스레이드에게만 소유되어야 할 필요가 있을 때 그 자원에 대한 뮤텍스 객체를 생성한다. 제어 되는 섹션에 하나의 쓰레드만 허용하기 때문에 해당 섹션에 접근하려는 다른 쓰레드들을 강제적으로 막음으로써 첫 번째 스레드가 해당섹션을 빠져나올 때까지 기다린다. 뮤텍스는 여러면에서 임계구역 critical section과 비슷하고 대신 사용할 수도 있지만 이름을 가질 수 있다는 점에서 임계구역보다 우월한 점이 있다. 뮤텍스는 한 번에 하나의 쓰레드만이 실행되도록 하는 재 입장할 수 있는 코드 섹션에 직렬화 된 접근이 가능하게 할 때 사용된다.

차이

세마포어는 원래 동기화를 목표로 하고 뮤텍스는 독점적 사용권한을 획득하는 것을 목표로 하고 있다.

따라서 세마포어에는 동기화를 위한 큐를 만들기 위한 기능들이 제공되며 뮤텍스는 독점적인 사용권한을 구현하기 위한 소유권이 존재한다.

일반적으로 뮤텍스는 카운터와 대기열의 정교한 구현이 필요 없기 때문에 세마포어보다 가볍고 더 빠른 경우가 많다.

세마포어는 파일 시스템상의 파일 형태로 존재 뮤텍스는 프로세스가 종료 될 때 자동 종료.

 

반응형