[OS] 뮤텍스 / 세마포어

2021. 6. 13. 16:08·OS
728x90

정의

  • 여러 프로세스나 쓰레드가 공유자원에 접근하는 것을 제어하는 방법
  • 병행처리를 위한 동기화 기법

뮤텍스

  • 공유된 자원 데이터를 여러쓰레드가 접근하는 것을 막는 것 
  • 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key를 기반으로 하는 상호배제 기법
  • Critical Section을 가진 스레드의 Running time이 서로 겹치지 않도록 각각 단독으로 실행하게 하는 기술
  • 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 synchronized 또는 lock을 사용

세마포어 

  • 공유된 자원 데이터를 여러프로세스가 접근하는 것을 막는 것
  • 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스를 나타내는 수를 나타내는 값을 두어 상호배제를 달성하는 기법

차이점

  • 뮤텍스는 동기화대상이 하나일 경우, 세마포어는 동기화 대상이 하나이상일 경우 사용
  • 세마포어는 뮤텍스가 될 수 있지만, 뮤텍스는 세마포어가 될 수 없음

정리

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

 

저작자표시

'OS' 카테고리의 다른 글

[OS] Thread Safe  (0) 2021.11.06
[OS] 데드락  (0) 2021.11.06
[OS] Thread (쓰레드)  (0) 2021.10.03
[OS] Process (프로세스)  (0) 2021.07.11
[OS] PCB(Process Control Block)  (0) 2021.06.12
'OS' 카테고리의 다른 글
  • [OS] 데드락
  • [OS] Thread (쓰레드)
  • [OS] Process (프로세스)
  • [OS] PCB(Process Control Block)
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    IntelliJ
    splunk
    cleancode
    클린코드
    Elk
    자바
    SQL
    엘라스틱서치
    Spring
    AWS
    Kafka
    이펙티브코틀린
    docker
    코틀린
    프로그래머스
    JPA
    go
    ElasticSearch
    java
    이펙티브 코틀린
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[OS] 뮤텍스 / 세마포어
상단으로

티스토리툴바