CS 기초 · 기초
경쟁 조건을 방지하기 위해 사용되는 '임계 영역(Critical Section)'의 개념을 설명하고, 왜 임계 영역 설정이 중요한지 이야기해 주세요.
힌트 · 임계 영역은 한 번에 하나의 스레드만 접근하도록 허용된 코드 블록입니다. 이를 통해 공유 자원의 무결성을 보호할 수 있습니다.
상호 배제진행한정된 대기경쟁 조건동기화
모범답안
임계 영역은 여러 스레드가 동시에 접근하면 문제가 발생하는 공유 자원에 접근하는 코드 영역을 말합니다. 경쟁 조건 발생을 막기 위해, 임계 영역에는 한 번에 하나의 스레드만 접근하도록 제한합니다.
임계 영역 설정이 중요한 이유는 공유 자원의 무결성을 보장하기 때문입니다. 만약 여러 스레드가 동시에 공유 변수를 수정하려고 하면, 예상치 못한 결과가 발생할 수 있습니다. 임계 영역을 통해 상호 배제를 구현함으로써 이러한 문제를 예방하고, 프로그램의 안정성을 확보할 수 있습니다. 예를 들어, 은행 계좌 잔액을 업데이트하는 코드가 임계 영역으로 보호되지 않으면, 여러 거래가 동시에 발생할 때 잔액이 잘못 계산될 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 동시성 / 멀티스레딩 면접 질문
- 프로세스(Process)와 스레드(Thread)는 운영체제에서 작업을 처리하는 단위입니다. 이 둘의 주요 차이점은 무엇이며, 각각 어떤 특징을 가지고 있는지 설명해 주세요.
- 멀티스레딩(Multithreading)이란 무엇이며, 멀티스레딩을 사용할 때 얻을 수 있는 장점과 발생할 수 있는 단점은 무엇인지 설명해 주세요.
- 멀티스레딩 환경에서 발생할 수 있는 '경쟁 조건(Race Condition)'이란 무엇이며, 어떤 상황에서 발생할 수 있는지 구체적인 예를 들어 설명해 주세요.
- 동기화 메커니즘으로 사용되는 '뮤텍스(Mutex)'와 '세마포어(Semaphore)'의 개념을 정의하고, 이 둘의 주요 차이점은 무엇인지 설명해 주세요.
- '데드락(Deadlock)'이란 무엇이며, 데드락이 발생하기 위한 4가지 필수 조건을 설명해 주세요.
- 뮤텍스와 세마포어는 동기화 메커니즘으로 사용됩니다. 두 메커니즘의 주요 차이점을 설명하고, 각각 어떤 상황에서 더 적합하게 사용될 수 있는지 구체적인 예시를 들어 설명해주세요.