ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 세마포어(Semaphore)와 뮤텍스(Mutex)의 차이
    OS 2020. 7. 6. 15:35
    728x90

    세마포어의 정의

    • 공유된 자원의 데이터를 여러 프로세스나 스레드가 접근하는 것을 제어하는 방법
    • 즉, 병행처리를 위한 동기화 기법

    세마포어 동작 원리

    • semWait 연산
      • 세마포어 값을 감소시킴
      • 값이 음수가 아니면 프로세스는 계속 수행
      • 값이 음수가 되면 semWait을 호출한 프로세스는 블록됨
    • semSignal 연산
      • 세마포어 값을 증가시킴
      • 값이 양수가 아니면(0 또는 음수) semWait연산에 의해 블록된 프로세스를 깨움

    세마포어의 종류

    • 카운팅 세마포어(Counting Semaphore)
      • 동시에 사용가능한 자원에 대해 사용
      • 임계 영역 안에 스레드나 프로세스가 들어오면 카운트를 증가시켜 일정 숫자만큼의 스레드만 사용하게함
    • 이진 세마포어(Binary Semarphore)
      • 값으로 0 또는 1만 가질 수 있음

    뮤텍스

    • 세마포어와 마찬가지로 병행 처리를 위한 동기화 기법 중 하나
    • 이진 세마포어와 같이 초기 값을 1과 0을 가짐
    • 임계 영역에 들어갈 때 Lock을 걸어 다른 프로세스 또는 쓰레드가 접근하지 못하도록 하고 임계 영역에서 나와 해당 Lock을 Unlock함

    세마포어와 뮤텍스의 차이

    • 접근 프로세스(쓰레드)의 수
      • 세마포어는 공유 자원에서 세마포어의 변수 만큼의 프로세스나 쓰레드가 접근할 수 있음
      • 뮤텍스는 오직 1개의 프로세스나 쓰레드만 접근 할 수 있음
    • 다른 프로세스의 Lock 해제
      • 현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제 할 수 있음
      • 뮤텍스는 Lock을 획득한 프로세스만 그 락을 해제 할 수 있음
    728x90

    'OS' 카테고리의 다른 글

    [OS] 교착상태(Dead Lock)  (0) 2020.07.05
    [OS] 스케줄러(Scheduler)란?  (0) 2020.06.19
    [OS] Process와 Thread  (0) 2020.06.17
    [OS] 운영체제란?  (0) 2020.06.16
Designed by Tistory.