ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5. 세마포어, 뮤텍스
    전공공부/운영체제 2019. 12. 24. 19:00
    728x90
    반응형

    세마포어와 뮤텍스의 차이점

    세마포어 (Semaphore)

    Signaling mechanism. 일종의 카운터로서 Critical Section에 프로세스(스레드)가 동시에 N개 접근할 수 있다. 카운터 값이 0과 1로만 제한되면 Binary semaphore이며, 그 이상의 값을 가지면 Counting semaphore이다.

    뮤텍스 (Mutex)

    Locking mechanism. 락(Lock)을 가진 하나의 프로세스(스레드)만 크리티컬 섹션에 접근할 수 있다. Binary semaphore로 구현될 수 있다.

     

    뮤텍스 (Mutex) 세마포 (Semaphores)
    공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는것 공유하는 자원의 데이터를 여러 프로세스가 접근하는 것을 막는것
    뮤텍스는 lock,unlock 두가지의 값만 가진다 세마포는 1개이상의 스레드가 접근할 수 있다
    프로세스의 범위(프로세스 존재시만 효력) 파일시스템 상 파일 형태로 존재
    소유 가능 소유 불가능
    뮤텍스를 소유하고 있는 쓰레드가 이 뮤텍스를 해제 할 수 있다. 세마포어를 소유하고 있지 않는 쓰레드도 이 세마포어를 해제 할 수 있다.
    반응형

    세마포어 (Semaphore)

    각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 동기화 기법이다.

    세마포어 S는 P와 V연산으로만 접근 가능한 카운터 변수이며, 0 이상의 값을 가질 수 있다.

    S의 값이 0과 1로만 제한되면 이진 세마포어(Binary semaphore)이며, 그 이상의 값을 가지면 카운팅 세마포어 (Counting semaphore)이다.

     

    Binary semaphore를 통해 Mutex를 구현할 수 있지만, Mutex로 Semaphore를 구현할 수는 없다.

     

    P 연산: Wait 동작/ 자원을 사용하려는 프로세스들의 진입 여부를 자원 카운트(S)를 통해 결정한다. 카운트를 감소시켜서(S--) 자원 점유를 알린다.

    V 연산: signal 동작/ 대기 중인 프로세스를 깨우는 신호이다. 카운트를 증가시켜서(S++) 자원 반납을 알린다.

     

     

    뮤텍스 (Mutex)

    특정 프로세스(스레드)가 공유 자원을 사용하고 있는 상황이라면, 다른 프로세스가 공유 자원을 사용하지 못하도록 하는 동기화 기법이다.

    공유 자원 점유한 프로세스는 락(Lock)을 지니며, 자원 사원을 마치면 락을 반납한다.

     

     

    728x90
    반응형

    댓글

Designed by Tistory.