TIL

2025. 03. 08

ilovedigital 2025. 3. 8. 18:19

가끔 아빠가 물어보는 것이 있다. Mutex 와 Semaphore 가 뭐야?

 

사실 전공 과정에서 배웠지만 막상 말하려니깐 잘 생각이 안났다. 그래서 다시 한번 짚어보고 확실하게 알고 싶어서 간단하게 메모를 하였다.

 

 

뮤텍스(Mutex) 란?

 

Mutual Exclusion 의 줄임말로 상호 배제를 의미하는 동기화 메커니즘이다. 멀티 스레드 환경에서 공유 자원에 한번에 하나의 스레드만 접근 할 수 있도록 보장한다.

락과 해제를 통해 자원 접근을 제어한다. 자원을 사용하려는 스레드는 lock 를 획득해야하며 사용이 끝나면 바로 unlock 를 수행하여야 한다. 해당 자원을 사용중이면 다른 스레드는 대기 상태가 된다. 그래서 바이너리 세마포어라고도 한다.

 

세마포어(Semaphore) 란?

 

세마포어는 여러 개의 스레드가 공유 자원에 접근 할 수 있도록 제어하는 동기화 기법이다. n개까지의 동시 접근 허용한다. 카운터를 통해 동시에 사용할 수 있는 자원의 개수를 제한한다.

wait 연산을 하면 접근 여부를 확인하고 signal 연산을 하면 세마포어 값을 증가시켜 대기 중인 스레드에게 자원 접근을 허용한다.

 

 

 

사실 매우 간단한 요소였지만 하도 공부를 안하다보니 헷갈리는 요소들이 있었다. 대충 락 기반으로 동기화하는게 뭐였더라 이런식으로 헷갈려졌기 때문이다. 오늘도 공부해야함을 느꼈다. 이 정도도 내용이 매우 빈약하지만 어디가서 대답하거나 개념적으로 익히기에는 충분한 내용일 것 같다.

'TIL' 카테고리의 다른 글

2025. 03. 10  (0) 2025.03.10
2025. 03. 09  (0) 2025.03.09
2025. 03. 02  (0) 2025.03.02
2025. 02. 16  (1) 2025.02.16
2024. 12 .01  (0) 2024.12.01