3월 21일-세마포어 &뮤텍스(2)

Yullgiii·2024년 3월 21일
0
post-thumbnail

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

이진 세마포어와 뮤텍스는 모두 상호 배제를 위해 사용되지만, 몇 가지 중요한 차이점이 있다.

이진 세마포어 (Binary Semaphore)

  • 기본 개념: 값이 0 또는 1인 세마포어로, 뮤텍스와 유사하게 작동하여 한 번에 하나의 스레드만이 공유 자원에 접근할 수 있도록 한다.
  • 소유권: 이진 세마포어는 소유권 개념이 없어, 잠금을 획득한 스레드와 잠금을 해제하는 스레드가 다를 수 있다.
  • 사용 목적: 주로 신호(signal) 전달이나 상태 표시에 사용되며, 상호 배제 목적으로도 사용할 수 있지만, 소유권 관리가 없어 주의가 필요하다.

뮤텍스 (Mutex)

  • 기본 개념: 상호 배제(Mutual Exclusion)를 목적으로 설계된 동기화 메커니즘으로, 한 번에 하나의 스레드만이 공유 자원에 접근할 수 있게 한다.
  • 소유권: 뮤텍스는 소유권 개념을 가지며, 잠금을 획득한 스레드만이 잠금을 해제할 수 있다.
  • 사용 목적: 공유 자원의 접근을 상호 배제적으로 관리하기 위해 사용된다.

Spin Lock의 장단점

장점

  • 응답성: Lock을 빠르게 획득할 수 있을 때, 빠른 응답 시간을 제공한다.
  • 컨텍스트 스위칭 감소: 대기 중인 프로세스가 CPU를 릴리스하지 않아 컨텍스트 스위칭이 발생하지 않으며, 오버헤드가 감소한다.

단점

  • CPU 자원 낭비: Lock을 획득할 때까지 계속해서 CPU 시간을 소비하여 다른 유용한 작업을 할 기회가 줄어든다.
  • 바쁜 대기: Lock을 기다리는 동안 아무 일도 하지 않으면서 CPU 시간을 사용한다.

단점 해결 방법

  • Adaptive Spin Lock: Spin Lock 대기 시간이 일정 임계값을 초과하면 프로세스를 슬립 상태로 전환하여 CPU 자원 낭비를 줄이는 방법이다.

시스템 콜을 사용하는 Lock의 장단점

장점

  • 일관성 및 안정성: 커널이 Lock을 관리함으로써 Lock의 상태가 일관되게 유지되고, 멀티 스레드 환경에서의 안정성이 보장된다.
  • 보안: 사용자 모드와 커널 모드의 구분을 통해 시스템 자원에 대한 접근을 안전하게 관리할 수 있다.

단점

  • 오버헤드: 사용자 모드와 커널 모드 사이의 전환으로 인한 오버헤드가 발생한다.
profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글