CS 기초 · 중급
프로세스와 스레드의 주요 차이점을 설명하고, 특정 애플리케이션 개발 시 어떤 기준으로 둘 중 하나를 선택할지 구체적인 시나리오를 들어 설명해보세요.
힌트 · 프로세스는 독립적인 자원을 가지며, 스레드는 프로세스 내에서 자원을 공유하는 실행 단위입니다. 자원 공유의 필요성과 오버헤드를 고려하여 선택합니다.
프로세스스레드자원 공유컨텍스트 스위칭병렬성
모범답안
프로세스와 스레드의 가장 큰 차이는 자원 독립성입니다. 프로세스는 독립적인 메모리 공간과 자원을 할당받아 다른 프로세스와 완전히 분리되어 실행됩니다. 반면, 스레드는 프로세스 내에서 메모리, 파일 등의 자원을 공유하며 실행되는 더 작은 실행 단위입니다.
어떤 것을 선택할지는 애플리케이션의 특성에 따라 달라집니다. 예를 들어, 이미지 편집 프로그램처럼 여러 이미지를 동시에 처리해야 하는 경우, 각 이미지를 별도의 프로세스로 처리하면 안정성이 높아집니다. 하나의 이미지 처리 과정에서 오류가 발생해도 다른 이미지 처리에는 영향을 주지 않기 때문입니다.
반면, 웹 서버처럼 많은 클라이언트 요청을 동시에 처리해야 하는 경우에는 스레드를 사용하는 것이 효율적입니다. 스레드는 프로세스보다 생성 및 컨텍스트 스위칭 비용이 저렴하여 더 많은 요청을 빠르게 처리할 수 있습니다. 자원 공유를 통해 메모리 사용량도 줄일 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 운영체제 면접 질문
- 운영체제가 프로세스를 관리할 때, 프로세스가 가질 수 있는 주요 상태(예: 생성, 준비, 실행, 대기, 종료)들에 대해 각각 설명해 주세요.
- 운영체제에서 'CPU 스케줄링'이 필요한 이유와 그 기본적인 목적은 무엇인지 설명해 주세요.
- '가상 메모리(Virtual Memory)'는 무엇이며, 이 기술이 시스템 메모리 관리에서 어떤 이점을 제공하는지 설명해 주세요.
- 운영체제에서 컨텍스트 스위칭(Context Switching)이 발생하는 과정과 이로 인해 발생할 수 있는 성능상의 오버헤드에 대해 설명하고, 이를 최소화하기 위한 방법은 무엇이 있을까요?
- 교착상태(Deadlock)가 발생하는 4가지 필수 조건을 설명하고, 실제 시스템에서 교착상태를 예방하거나 회피하기 위한 대표적인 기법들을 제시해주세요.
- 가상 메모리(Virtual Memory)의 개념과 작동 원리를 설명하고, 실제 물리 메모리보다 큰 프로그램을 실행할 수 있게 하는 핵심적인 메커니즘은 무엇인지 구체적인 예시를 들어 설명해보세요.