[운영체제]뮤텍스(mutex), 세마포어(semaphore), 모니터(Monitor)

2025. 11. 17. 21:09·cs/dev
728x90

임계 영역 (critical section) 이란?

  • 둘 이상의 프로세스, 스레드가 공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 코드 영역
  • 해결 할 수 있는 조건
    • 상호 배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없음
    • 한정 대기 : 특정 프로세스가 영원히 임계영역에 들어가지 못하면 안 됨
    • 융통성 : 한 프로세스가 다른 프로세스의 일을 방해해선 안됨
  • 임계 영역 해결방법: 뮤텍스(mutex), 세마포어(semaphore), 모니터(Monitor)

뮤텍스

  • 프로세스가 스레드나 공유자원을 lock()을 통해 잠금 설정하고 사용 후에는 unlock()을 통해 잠금해제하는 객체
  • 잠금 설정되면 다른 프로세스나 스레드는 잠긴 코드 영역에 접근할 수 없고, 해제는 반대로 접근 가능함
  • 잠금과 잠금 해제의 상태만 가짐
  • 잠금을 기반으로 상호 배제가 일어나는 잠금 매커니즘

 

세마포어

  • 일반화된 뮤텍스
  • 간단한 정수값과 두 가지 함수(wait, signal)로 공유 자원에 대한 접근 처리
    • wait() : 자신의 차례가 올 때 까지 기다리는 함수
    • signal() : 다음 프로세스로 순서를 넘겨주는 함수
  • 프로세스/스레드가 공유자원에 접근하면 세마포어에서 wait() 작업을 수행함
  • 프로세스/스레드가 공유자원에서 해제되면 세마포어에서 signal() 작업을 수행함
  • 세마포어에는 조건 변수가 없음. 프로세스 / 스레드가 세마포어 값을 수정하면 다른 프로세스 / 스레드는 동시에 세마포어 값을 수정할 수 없음
  • 신호를 기반으로 상호배제가 일어나는 신호 메커니즘으로 상호배제를 명시적으로 구현해야 함
    • 바이너리 세마포어  : 0과 1 두 값만 가지 수 있음
    • 카운팅 세마포어 : 여러 개의 값을 가질 수 있는 세마포어로 여러 자원에 대한 접근을 제어하는 데 사용
뮤텍스 VS 세마포어
뮤텍스 : 잠금을 기반으로 상호배제가 일어나는  잠금 매커니즘
세마포어 : 신호을 기반으로 상호배제가 일어나는  신호 매커니즘

모니터

  • 둘 이상의 스레드나 프로세스가 공유자원에 안전하게 접근할 수 있도록 공유자원을 숨기고 해당 접근에 대해 인터페이스만 제공
  • 모니터 큐를 통해 공유 자원에 대한 작업을 순차적으로 처리
  • 세마포어보다 구현하기 쉽고 상호배제는 자동적으로 이뤄짐
모니터 VS 세마포어
모니터 : 자동 상호배제
세마포어 : 명시적으로 구현하는 상호배제

 

참고: 면접을 위한 CS 전공지식 노트

728x90
반응형

'cs > dev' 카테고리의 다른 글

[리눅스]포그라운드(Foreground)와 백그라운드(Background)  (0) 2025.11.19
[Spring]Spring Security 설정과 OAuth2와 순환 참조 해결  (0) 2025.11.18
[Spring]JPA N + 1 문제  (0) 2025.11.09
[Spring] Spring MVC 와 Spring WebFlux 차이  (1) 2025.10.28
[Spring]Spring의 3가지 핵심 프로그래밍 모델(AOP, DI, IOC)  (0) 2025.10.22
'cs/dev' 카테고리의 다른 글
  • [리눅스]포그라운드(Foreground)와 백그라운드(Background)
  • [Spring]Spring Security 설정과 OAuth2와 순환 참조 해결
  • [Spring]JPA N + 1 문제
  • [Spring] Spring MVC 와 Spring WebFlux 차이
lakedata
lakedata
lakedata 님의 블로그 입니다.
  • lakedata
    lakedata 님의 블로그
    lakedata
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • cs (82)
        • dev (28)
        • sec (29)
        • ops (25)
      • 자격증 (32)
        • 정보처리기사 (20)
        • 정보보안기사 (1)
        • aws dva (6)
        • aws dop (2)
      • IT서적 (27)
        • 클린아키텍처 (10)
        • 객체지향의사실과오해 (7)
        • 오브젝트 (10)
      • 코테 (42)
        • 알고리즘 (20)
        • 백준 (13)
        • 프로그래머스 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Security
    AWS
    docker
    SQL
    CS
    Java
    알고리즘
    Spring
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
lakedata
[운영체제]뮤텍스(mutex), 세마포어(semaphore), 모니터(Monitor)
상단으로

티스토리툴바