면접 질문 정리 - OS(운영체제) [뮤텍스 VS 세마포어]

코난·2024년 2월 25일
0

CS 면접 정리

목록 보기
34/67

임계 영역

여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 블럭을 임계 영역이라고 한다. 즉, 여러 프로세스가 동일 자원을 동시에 참조하여 값(공유하는 변수명, 파일 등)이 오염될 위험 가능성이 있는 영역이다. 프로그래밍시에 성능 향상을 위해서 임계영역을 최소화하는 설계를 해야 한다.

뮤텍스(Mutex)

동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘이다. 뮤텍스는 Key에 해당하는 어떤 Object가 있으며 이 Object를 소유한 스레드 또는 프로세스만이 공유 자원에 접근할 수 있다. 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 동기화 또는 락을 사용한다. 즉, 뮤텍스 객체를 두 스레드가 동시에 사용할 수 없다는 것이다.

세마포어(Semaphore)

멀티 프로그래밍 환경에서 공유된 자원에 대한 접근을 제한하는 방법이다. 공유 리소스에 접근할 수 있는 최대 허용치만큼 동시 사용자인 스레드나 프로세스의 접근을 허용하게 한다.

뮤텍스 VS 세마포어

  1. 동기화 대상의 개수
  • 뮤텍스는 동기화 대상이 오직 1개일 때 사용
  • 세마포어는 동기화 대상이 1개 이상일 때 사용
  1. 포함 관계
  • 세마포어는 뮤텍스가 될 수 있으나 뮤텍스는 세마포어가 될 수 없다
  • 뮤텍스는 0, 1로 이루어진 이진 상태를 가지므로 Binary Semaphore
  1. 자원 소유
  • 뮤텍스는 자원 소유 가능 + 책임을 가지는 반면 세마포어는 자원 소유가 불가능함
  • 뮤텍스는 상태 0, 1뿐이므로 Lock 가질 수 있음
  1. 해제 가능 대상
  • 뮤텍스는 소유하고 있는 스레드만이 이 뮤텍스를 해제할 수 있음
  • 세마포어는 세마포어를 소유하지 않는 스레드가 세마포어를 해제할 수 있음
  1. 범위
  • 뮤텍스는 프로세스의 범위를 가지고 프로세스가 종료될 때 자동으로 Clean up됨
  • 세마포어는 시스템 범위에 걸쳐 있고, 파일 시스템 상의 파일로 존재함

참고

https://chelseashin.tistory.com/40
https://incheol-jung.gitbook.io/docs/q-and-a/computer-science/undefined-1
https://velog.io/@heetaeheo/%EB%AE%A4%ED%85%8D%EC%8A%A4Mutex%EC%99%80-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4Semaphore%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://mangkyu.tistory.com/104

profile
몸은 커졌어도, 머리는 그대로... 하지만 불가능을 모르는 명탐정 현아! 진실은 언제나 하나!

0개의 댓글