CS 공부 & 면접 맛보기 0x09 [운영체제] : 프로세스와 스레드의 차이
2025. 1. 9. 23:00ㆍ코딩 도구/CS 면접 도구
반응형
프로세스와 스레드의 차이
질문
프로세스(Process)와 스레드(Thread)의 차이점은 무엇인가요?
면접 답변
프로세스(Process)는 실행 중인 프로그램의 인스턴스이고, 스레드(Thread)는 프로세스 내에서 실행되는 최소 실행 단위입니다.
- 프로세스: 프로그램의 독립적인 실행 단위이며, 메모리 공간을 독립적으로 사용합니다.
- 스레드: 프로세스 내의 실행 흐름이며, Stack을 제외한 메모리 공간을 공유합니다.
프로세스 간 통신은 IPC(Inter-Process Communication) 기법을 사용해야 하며, 대표적으로 파이프, 소켓, 공유 메모리 등이 있습니다. 반면, 스레드는 Stack을 제외한 메모리 영역을 공유하므로 별도의 통신 없이 데이터 접근이 가능합니다.
프로세스(Process)란?
- 정의: 실행 중인 프로그램의 인스턴스.
- 메모리 구조: 각 프로세스는 고유한 메모리 공간(코드, 데이터, 힙, 스택)을 가집니다.
- 독립성: 각 프로세스는 서로 독립적으로 실행되며, 다른 프로세스의 메모리에 직접 접근할 수 없습니다.
- 통신 방식: 프로세스 간 데이터 교환은 **IPC(파이프, 파일, 소켓 등)**를 사용해야 합니다.
C++ 예제 (프로세스 생성)
#include <iostream>
#include <unistd.h>
using namespace std;
int main() {
pid_t pid = fork();
if (pid == 0) {
cout << "자식 프로세스 실행\n";
} else {
cout << "부모 프로세스 실행\n";
}
return 0;
}
스레드(Thread)란?
- 정의: 프로세스 내의 실행 단위.
- 메모리 공유: Stack 영역을 제외한 코드, 데이터, 힙 영역을 공유.
- 경량화: 프로세스보다 적은 자원을 사용하여 생성 및 관리.
- 통신: 메모리를 공유하기 때문에 별도의 통신 과정이 필요 없음.
C++ 예제 (스레드 생성)
#include <iostream>
#include <thread>
using namespace std;
void printMessage() {
cout << "스레드 실행 중\n";
}
int main() {
thread t1(printMessage);
t1.join();
return 0;
}
프로세스와 스레드의 비교
프로세스(Process), 스레드(Thread)
정의 | 실행 중인 프로그램 인스턴스 | 프로세스 내의 실행 흐름 |
메모리 공유 | 독립적인 메모리 사용 | Stack 제외 메모리 공유 |
통신 방식 | IPC 필요 (파이프, 소켓) | 메모리 직접 접근 가능 |
생성 비용 | 높음 (메모리 할당 필요) | 낮음 (경량 실행 단위) |
독립성 | 독립적 실행 | 메모리 공유로 상호의존 |
결론
- 프로세스: 실행 중인 프로그램으로, 메모리를 독립적으로 사용하며, IPC를 통해 다른 프로세스와 통신합니다.
- 스레드: 프로세스 내에서 실행되는 경량 실행 단위로, 메모리를 공유하여 통신이 효율적입니다.
- 사용 사례에 따라 프로세스와 스레드를 적절히 선택하는 것이 중요합니다.
반응형
'코딩 도구 > CS 면접 도구' 카테고리의 다른 글
CS 공부 & 면접 맛보기 0x08 [자료구조] : 그래프와 트리의 차이점 (0) | 2025.01.08 |
---|---|
CS 공부 & 면접 맛보기 0x07 [자료구조] : 이진 탐색 트리(Binary Search Tree, BST) 설명 (0) | 2025.01.07 |
CS 공부 & 면접 맛보기 0x06 [자료구조] : 자바(Java)에서 문자열을 뒤집는 방법 (0) | 2025.01.06 |
CS 공부 & 면접 맛보기 0x05 [자료구조] : 배열에서 중복된 정수 찾기 (0) | 2025.01.05 |
CS 공부 & 면접 맛보기 0x04 [자료구조] : 원형 연결 리스트를 확인하는 방법 (1) | 2025.01.04 |