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를 통해 다른 프로세스와 통신합니다.
  • 스레드: 프로세스 내에서 실행되는 경량 실행 단위로, 메모리를 공유하여 통신이 효율적입니다.
  • 사용 사례에 따라 프로세스와 스레드를 적절히 선택하는 것이 중요합니다.
반응형