👀 해당 주제 질문 리스트 미리보기
Q1. 세마포어와 뮤텍스의 차이점에 대해 간략히 설명해주세요.
Q2. 세마포어와 뮤텍스가 멀티 스레딩 환경에서 제공하는 공통적인 보장에 대해 설명해주세요.
Q3. 세마포어와 뮤텍스의 사용 상황에 대해 구체적으로 설명해주세요.
동시성 프로그래밍에서 공유된 자원에 여러 개의 프로세스가 동시에 접근하면서 문제가 발생하는 것을 안전하게 관리하기 위해서는 상호배제를 달성하는 기법이 필요한데, 이 때 세마포어와 뮤텍스 방법이 쓰입니다.
상호배제란?
공유 자원을 어느 시점에서 한 개의 프로세스만이 사용할 수 있도록 하며, 다른 프로세스가 공유자원에 대하여 접근하지 못하게 제어하고 각 프로세스가 번갈아 가며 공유 자원을 사용하도록 하는 기법
세마포어는 동시성 프로그래밍에서 공유 자원에 접근할 수 있는 스레드 또는 프로세스의 수를 제한하는 카운트 기반의 동기화 기술입니다.
뮤텍스는 공유 자원을 동시에 하나의 스레드만이 접근할 수 있도록 제한하는 동기화 기술입니다.
Q1. 세마포어와 뮤텍스의 차이점에 대해 간략히 설명해주세요.
세마포어는 설정한 동시 접근 스레드 수만큼 동시에 여러 스레드가 자원에 접근할 수 있도록 하는 카운트 기반의 동기화 기술입니다.
반면, 뮤텍스는 한 시점에 단 하나의 스레드만 특정 자원이나 데이터에 접근할 수 있게 하는 동기화 기술이며, 해당 자원에 대한 독점적인 접근을 보장합니다.
Q2. 세마포어와 뮤텍스가 멀티 스레딩 환경에서 제공하는 공통적인 보장에 대해 설명해주세요.
세마포어와 뮤텍스는 모두 멀티 스레딩 환경에서 임계 구역
, 즉 공유 자원이 포함된 코드 영역의 접근을 제어하여 경쟁 상태(Race Condition)를 방지합니다.
임계 구역(Critical Sction) 이란?
멀티 프로세스 환경에서 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유 자원의 코드 영역이다. 이러한 영역에서는 경쟁 상태(Race Condition)가 발생할 수 있으므로, 동시에 접근하지 않도록 보장해주어야 한다.
Q3. 세마포어와 뮤텍스의 사용 상황에 대해 구체적으로 설명해주세요.
세마포어는 특정 수의 제한된 자원을 여러 사용자가 공유할 때 사용됩니다. 예를 들어, 데이터베이스 연결 풀이나 네트워크 연결과 같은 자원에 대해 여러 스레드가 동시에 접근할 필요가 있을 때 효율적입니다.
뮤텍스는 파일 시스템, 공유 메모리 영역 등과 같이 동시에 하나의 스레드만 접근해야 하는 자원을 보호할 때 사용됩니다. 뮤텍스는 이러한 자원에 대한 독점적 접근을 보장하며, 잠금을 획득한 스레드만이 해당 잠금을 해제할 수 있는 소유권을 가집니다.