OS - Mutex / Semaphore (뮤텍스/세마포어)

jaeha_lee·2022년 6월 2일
0

Mutex vs Semaphore

  • 공통적으로 공유된 자원의 데이터를 여러 스레드/프로세스가 접근하는 것을 막는 역할

Critical Section

  • 공유 데이터에 접근하고 있는 코드 부분 (여러 개의 프로세스가 공유 데이터에 접근할 수 있는 영역)
  • 코딩 시 이 critical section을 최소하해서 설계해야 함
    업로드중..

뮤텍스

  • 어떤 프로세스가 소유할 수 있는 Key를 가지고 상호배제를 시행 함.
  • 이 Key에 해당하는 object가 존재하고, 이 object를 가지고 있어야만 공유 데이터에 접근 가능.
  • 즉, 이 Mutex 객체를 두 개의 프로세스/스레드가 동시에 사용할 수 없음

세마포어

  • 공통으로 관리하는 하나의 값을 이용해 상호배제(공유 자원에 대해서 겹치지 않게 사용하는 것)를 함
  • 어떤 정해진 값이 있고, 그 값만큼 프로세스/스레드가 공유 자원에 대해 접근 가능함
  • 이 경우 각 프로세스/스레드는 세마포어 값을 확인 및 변경 가능
    업로드중..

뮤텍스, 세마포어 차이

  • 동기화 대상 개수 : 뮤텍스 1개 / 세마포어 1개 이상
  • 세마포어는 뮤텍스가 될 수 있음. 뮤텍스는 세마포어가 될 수 없음
    • 뮤텍스 : Binary Semaphore
  • 뮤텍스 : 자원 소유 가능 / Lock을 통해 자원 소유 가능
  • 뮤텍스 : 자원을 이용하고 있는 프로세스/스레드만으로만 mutex 해제 가능

[출처]

0개의 댓글

관련 채용 정보