Semaphore (세마포어) 와 mutex (뮤텍스) 의 차이는 무엇인가요?

This topic contains 1 reply, has 2 voices, and was last updated by  technote 2018-06-19 00:17.

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #429

    kakao.q
    Participant

    Semaphore (세마포어) 와 mutex (뮤텍스) 의 차이는 무엇인가요?

    #430

    technote
    Keymaster

    먼저 자원을 공유하였을 때 발생할 수 있는 문제점에 대한 이해가 필요합니다.

    예를 들어 X가 다음과 같은 코드를 수행하고 있는 중이라고 가정해 봅시다.

    Line 1: A = 1
    Line 2: B = 2
    Line 3: C = A + B
    Line 4: print C

    그런데 X가 Line 2를 막 수행하고 나서 Line 3를 수행하려는 찰나 Y가 아래 코드를 수행해 버릴 수가 있습니다.

    Line 1: B = 3

    X 는 Line 4에서 3이 출력되기를 기대했지만 결과로는 4가 출력되어 버렸습니다.

    여기서 B 라는 변수를 X와 Y가 공유하여 사용하였기 때문에 문제가 발생해 버렸습니다.

    즉, 공유된 자원을 여러 군데서 접근하는 것을 막아 주어야 합니다.

    Process 관점에서 여러 process가 공유된 하나의 자원을 동시에 접근하는 것을 막기 위해 고안된 것이 세마포어 (Semaphore) 이고, Thread 관점에서 여러 thread가 공유된 하나의 자원을 동시에 접근하는 것을 막기 위해 고안된 것이 뮤텍스 (Mutex) 입니다.

    이를 좀 더 잘 이해하기 위해서 Critical Section (임계 구역)에 대한 이해도 필요합니다.

    한마디로 정의하면 critical section (임계 구역)은 둘 이상의 process, thread가 동시에 접근해서는 안되는 공유 자원을 다루는 코드 부분을 말합니다.
    임계 구역에 대해 semaphore나 mutex를 설정함으로써 mutual exclusion (상호 배제)를 구현할 수 있습니다.

    • This reply was modified 5 months ago by  technote.
Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.