CS 기초 · 기초
멀티스레딩 환경에서 발생할 수 있는 '경쟁 조건(Race Condition)'이란 무엇이며, 어떤 상황에서 발생할 수 있는지 구체적인 예를 들어 설명해 주세요.
힌트 · 여러 스레드가 공유 자원에 동시에 접근하여 예상치 못한 결과를 초래하는 상황입니다. 변수 값 증가/감소 연산 시 발생할 수 있습니다.
경쟁 조건임계 영역상호 배제동기화원자성
모범답안
경쟁 조건은 멀티스레딩 환경에서 여러 스레드가 공유 자원에 동시에 접근하려 할 때 발생하는 문제입니다. 이때, 스레드들의 실행 순서에 따라 예상치 못한 결과가 나올 수 있습니다.
예를 들어, 전역 변수 count를 증가시키는 상황을 생각해 봅시다. 두 스레드가 동시에 count++ 연산을 수행하면, 각 스레드는 현재 count 값을 읽고, 1을 더한 후, 다시 count에 저장합니다. 만약 두 스레드가 거의 동시에 count 값을 읽었다면, 둘 다 같은 값에 1을 더해서 저장하게 되고, 결과적으로 count는 2가 아닌 1만 증가할 수 있습니다.
이러한 문제를 해결하기 위해 임계 영역을 설정하고, 상호 배제 기법(뮤텍스, 세마포어 등)을 사용하여 한 번에 하나의 스레드만 임계 영역에 접근하도록 동기화해야 합니다. 또한, 원자적인 연산을 사용하여 중간에 인터럽트되지 않도록 하는 것도 방법입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 동시성 / 멀티스레딩 면접 질문
- 동시성(Concurrency)과 병렬성(Parallelism)의 개념을 정의하고, 두 개념의 주요 차이점을 설명해 주세요.
- 프로세스(Process)와 스레드(Thread)는 운영체제에서 작업을 처리하는 단위입니다. 이 둘의 주요 차이점은 무엇이며, 각각 어떤 특징을 가지고 있는지 설명해 주세요.
- 멀티스레딩(Multithreading)이란 무엇이며, 멀티스레딩을 사용할 때 얻을 수 있는 장점과 발생할 수 있는 단점은 무엇인지 설명해 주세요.
- 경쟁 조건을 방지하기 위해 사용되는 '임계 영역(Critical Section)'의 개념을 설명하고, 왜 임계 영역 설정이 중요한지 이야기해 주세요.
- 동기화 메커니즘으로 사용되는 '뮤텍스(Mutex)'와 '세마포어(Semaphore)'의 개념을 정의하고, 이 둘의 주요 차이점은 무엇인지 설명해 주세요.
- '데드락(Deadlock)'이란 무엇이며, 데드락이 발생하기 위한 4가지 필수 조건을 설명해 주세요.