패스잇
CS 기초 · 심화

기존 스레드 기반의 동시성 모델(shared-memory concurrency)과 비동기 프로그래밍 모델(예: Actor Model, CSP)을 비교하고, 각각의 모델이 특정 유형의 문제(I/O 바운드 vs. CPU 바운드)에 어떻게 더 적합한지, 그리고 발생할 수 있는 트레이드오프(trade-off)는 무엇인지 설명해 주십시오.

힌트 · 스레드 기반 모델은 공유 메모리를 통해 상태를 공유하며, 비동기 모델은 메시지 패싱을 통해 상태를 격리합니다. I/O 바운드 작업에는 비동기 모델이 컨텍스트 스위칭 오버헤드를 줄여 효율적이며, CPU 바운드 작업에는 스레드 기반 모델이 병렬 처리에 유리할 수 있습니다.

공유 메모리Actor 모델I/O 바운드CPU 바운드컨텍스트 스위칭

모범답안

기존 스레드 기반 동시성은 공유 메모리를 통해 데이터를 공유하며, 여러 스레드가 동시에 같은 메모리에 접근할 때 동기화 문제가 발생합니다. 이는 CPU 바운드 작업에서 병렬 처리에 유리하지만, 컨텍스트 스위칭 오버헤드가 커질 수 있습니다.

반면 Actor 모델이나 CSP 같은 비동기 프로그래밍은 메시지 패싱을 통해 상태를 격리합니다. 각 액터나 고루틴은 독립적인 상태를 가지며, 통신은 명시적인 메시지 전달로 이루어집니다. 이는 I/O 바운드 작업에서 효율적입니다. I/O 대기 중 스레드가 차단되지 않고 다른 작업을 수행할 수 있어 컨텍스트 스위칭 오버헤드를 줄이고 시스템 자원을 더 잘 활용할 수 있습니다.

트레이드오프로는 스레드 기반 모델은 구현이 직관적일 수 있으나 데드락, 레이스 컨디션 같은 복잡한 동기화 이슈에 취약합니다. 비동기 모델은 상태 격리로 안전성을 높이지만, 메시지 전달 방식의 설계와 디버깅이 더 복잡할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 동시성 / 멀티스레딩 면접 질문

← 동시성 / 멀티스레딩 면접 질문 전체 보기