세마포어
공유된 자원에 여러 개의 프로세스가 동시에 접근하면서 문제가 발생하는 것으로써 공유된 자원 속 하나의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한해 두는 기법
뮤텍스
Mutual Exclusion 의 줄임말로, 여러 쓰레드가 동시에 공유된 자원에 접근하는 것을 배제하기 위한 기술
Critical Section (임계 구역) : 위에서 나온 공유 자원을 활용하는 코드 부분을 의미한다. 즉, 한번에 한 프로세스나, 스레드만 실행되어야 하는 부분이다.
세마포어의 원리
세마포어에는 서로 다른 프로세서가 현재 임계 구역을 접근중인지를 확인하기 위해 P와 V 연산을 사용한다. P는 현재 임계구역을 활용중인 프로세스가 있는지 확인하는 연산이고, V는 임계구역을 활용하던 프로세스가 끝이날 때 해당 프로세스가 알리기 위해 사용하는 연산이다.
1 |
|
뮤텍스의 원리
뮤텍스는 lock, unlock 을 표현하기 위한 1과 0 만으로 구성된 값을 통해 임계 구역을 통제하는 기법이다. 따라서 임계구역을 진입하려면 락을 획득해야하고, 벗어날 때 언락하면 다른 프로세스가 새로 락을 하는 원리이다.
뮤텍스와 세마포어의 차이
-
세마포어는 현재 수행중인 프로세스가 아닌 다른 프로세스가 해제할 수 있지만 뮤텍스는 반드시 락을 획득한 프로세스가 다시 락을 해제해야 한다.
-
세마포어는 공유 자원에 세마포어의 변수만큼의 프로세스가 접근할 수 있다. 반면에 뮤텍스는 오직 1개만의 쓰레드가 접근할 수 있다.