뮤텍스(Mutex)

2023. 3. 9. 14:00CS

뮤텍스(Mutex)는 상호 배제(Mutual Exclusion)를 위한 동기화 기법 중 하나입니다. 뮤텍스는 공유 자원에 대한 접근을 여러 스레드가 동시에 시도하는 상황에서, 오직 하나의 스레드만 공유 자원에 접근하도록 제어하는 기능을 제공합니다.

뮤텍스는 다음과 같은 특징을 가지고 있습니다.

  • 이진 세마포어(Binary Semaphore)로 구현: 뮤텍스는 이진 세마포어를 사용하여 구현됩니다. 이진 세마포어는 값이 0 또는 1인 세마포어로, 뮤텍스에서는 락(lock)과 언락(unlock) 연산을 사용하여 상호 배제를 수행합니다.
  • 한 번에 하나의 스레드만 락을 획득 가능: 뮤텍스는 오직 하나의 스레드만 락을 획득할 수 있습니다. 락을 획득한 스레드는 공유 자원에 대한 접근 권한을 가지며, 락을 획득하지 못한 스레드는 대기 상태로 전환됩니다.
  • 우선순위 역전 방지: 뮤텍스를 사용하면 우선순위 역전 문제를 방지할 수 있습니다. 우선순위 역전은 높은 우선순위를 가진 스레드가 저우선순위를 가진 스레드의 뮤텍스 락을 대기하는 상황에서, 저우선순위 스레드가 락을 획득하지 못해 대기하면서 높은 우선순위 스레드의 작업도 지연되는 현상을 말합니다. 이를 방지하기 위해서는 우선순위 인버전(Priority Inversion)을 해결해야 합니다.

뮤텍스는 공유 자원에 대한 접근을 안전하게 보호하는 동기화 기법 중 하나이며, 대부분의 운영체제에서 지원하고 있습니다. 뮤텍스를 사용하여 동시에 여러 스레드가 공유 자원에 접근하는 상황에서 발생하는 데이터 불일치 문제와 같은 문제를 해결할 수 있습니다.

'CS' 카테고리의 다른 글

네이티브 코드(Native Code)  (0) 2023.03.09
세마포어(Semaphore)  (0) 2023.03.09
프로세스(Process)  (0) 2023.03.09
스레드(Thread)  (0) 2023.03.09
Docker Compose VS Kubernetes  (0) 2023.02.27