세마포어(Semaphore)와 뮤텍스(Mutex)의 차이
Toilet problem
동시성 프로그래밍의 가장 큰 숙제는 ‘공유자원 관리’일 것이다. 공유자원을 안전하게 관리하기 위해서는 상호배제(Mutual exclusion)를 달성하는 기법이 필요하다.
뮤텍스와 세마포어는 이를 위해 고안된 기법으로 서로 다른 방식으로 상호배제를 달성한다. 오늘은 이 둘의 차이를 알아보자.
Mutex
뮤텍스는 화장실이 하나 뿐인 식당과 비슷하다. 화장실을 가기 위해서는 카운터에서 열쇠를 받아 가야 한다. 누군가 사용하고 있다면, 다른 사람은 당연히 화장실을 이용하지 못한다. 즉, 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key🔑를 기반으로 한 상호배제기법을 의미한다.
Semaphore
세마포어의 경우 화장실이 여러개이고, 화장실의 입구엔 빈 칸의 갯수를 알려주는 표지가 있다. 즉, Signaling mechanism. 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스의 수를 나타내는 값을 두어 상호배제를 달성하는 기법을 의미한다.
'컴퓨터' 카테고리의 다른 글
클라우드 컴퓨팅 서비스 모델 (0) | 2021.02.02 |
---|---|
교착상태 (0) | 2021.02.02 |
운영체제(OS)란? (0) | 2021.01.28 |
컴파일러, 인터프리터 (0) | 2021.01.27 |
인터럽트 우선순위 (0) | 2021.01.22 |