멀티프로세싱과 멀티태스킹 쉽게 이해하기

JunSuPark·2025년 2월 12일
post-thumbnail

컴퓨터에서 여러 작업을 동시에 처리할 수 있는 기술은 다양합니다. 그중에서도 멀티프로세싱(Multiprocessing)멀티태스킹(Multitasking)은 자주 혼동되는 개념입니다. 이번 글에서는 두 개념을 쉽게 풀어서 설명하고, 프로세스와 스레드의 차이도 함께 알아보겠습니다.

  1. 멀티프로세싱(Multiprocessing)이란?

멀티프로세싱은 여러 개의 CPU(코어)를 사용하여 동시에 여러 작업을 처리하는 기술입니다. 즉, 물리적으로 여러 개의 CPU가 존재하고, 각 CPU가 독립적으로 작업을 수행하는 방식이죠.

📌 멀티프로세싱의 장점

  • 하나의 CPU만 사용할 때보다 더 많은 작업을 동시에 처리할 수 있음

  • 하나의 프로세스가 충돌해도 다른 프로세스에는 영향을 주지 않음 (독립적인 메모리 공간 사용)

  • 능 컴퓨팅이 필요할 때 유용함 (예: 대규모 데이터 분석, 머신러닝, 영상 처리 등)

💻 자바 멀티프로세싱 예제

class ProcessExample extends Thread {
private int processId;

public ProcessExample(int id) {
    this.processId = id;
}

@Override
public void run() {
    System.out.println("프로세스 " + processId + " 실행 중");
}

public static void main(String[] args) {
    for (int i = 0; i < 4; i++) {
        ProcessExample process = new ProcessExample(i);
        process.start();
    }
}

}

이 코드는 4개의 프로세스를 생성하여 동시에 실행하는 예제입니다.

  1. 멀티프로세싱 vs 멀티태스킹

멀티프로세싱과 멀티태스킹은 비슷해 보이지만, 관점이 다릅니다.

멀티프로세싱 -> 여러 개의 CPU를 사용하여 동시에 여러 작업을 수행 (하드웨어 관점)

멀티태스킹 -> 하나의 CPU가 여러 작업을 번갈아 실행하여 동시에 동작하는 것처럼 보이게 함 (소프트웨어 관점)

💡 쉽게 말하면, 멀티프로세싱은 실제로 여러 개의 CPU가 작업을 나누어 처리하는 것이고, 멀티태스킹은 하나의 CPU가 여러 작업을 빠르게 전환하면서 마치 동시에 실행하는 것처럼 보이게 하는 것입니다.

  1. 프로세스(Process)란?

프로그램은 실행되기 전까지는 단순한 파일일 뿐입니다. 하지만 실행하면 운영체제(OS)에 의해 프로세스가 생성되고, 그 순간부터 작업이 수행됩니다.

📌 프로세스의 특징

  • 독립적인 메모리 공간을 가짐 → 다른 프로세스와 메모리를 공유하지 않음
  • 운영체제(OS)에 의해 개별적으로 관리됨
  • 하나의 프로세스가 충돌해도 다른 프로세스에는 영향을 주지 않음

📌 프로세스의 메모리 구조

프로세스는 실행될 때 다음과 같은 메모리 영역을 가집니다:

  • 코드(Code) 섹션: 실행할 프로그램의 코드가 저장됨

  • 데이터(Data) 섹션: 전역 변수와 정적 변수 저장됨

  • 힙(Heap): 동적 메모리 할당 영역 (예: new, malloc으로 할당한 공간)

  • 스택(Stack): 함수 호출 시 생성되는 지역 변수와 반환 주소가 저장됨

💡 자바로 비유하면, 클래스(Class)가 프로그램이라면, 인스턴스(Instance)가 프로세스입니다.

  1. 스레드(Thread)란?

프로세스는 최소 하나 이상의 스레드(Thread)를 포함합니다.

스레드는 프로세스 내에서 실행되는 작업의 단위이며, 하나의 프로세스 내에서 여러 개의 스레드가 존재할 수 있습니다. 이러한 멀티스레드(Multithreading)를 활용하면 하나의 프로그램 안에서도 여러 작업을 동시에 실행할 수 있습니다.

📌 스레드의 특징

  • 같은 프로세스 내의 메모리를 공유함 → 코드, 데이터, 힙은 공유됨

  • 각 스레드는 개별적인 스택을 가짐 → 각 스레드마다 독립적인 지역 변수와 함수 호출 정보가 저장됨

  • 멀티스레드 방식으로 여러 작업을 동시에 수행할 수 있음

💻 자바 멀티스레딩 예제

class ThreadExample extends Thread {
private int threadId;

public ThreadExample(int id) {
    this.threadId = id;
}

@Override
public void run() {
    System.out.println("스레드 " + threadId + " 실행 중");
}

public static void main(String[] args) {
    for (int i = 0; i < 4; i++) {
        ThreadExample thread = new ThreadExample(i);
        thread.start();
    }
}

}

이 코드는 4개의 스레드를 생성하여 동시에 실행하는 예제입니다.

🔥 정리

멀티프로세싱: 여러 개의 CPU를 사용하여 여러 작업을 동시에 처리

멀티태스킹: 하나의 CPU가 여러 작업을 빠르게 전환하여 동시에 실행되는 것처럼 보이게 함

프로세스: 실행 중인 프로그램, 독립적인 메모리 공간을 가짐

스레드: 프로세스 내에서 실행되는 작업 단위, 메모리를 공유함

멀티스레딩: 하나의 프로그램에서 여러 작업을 동시에 실행할 수 있도록 하는 기법

스케줄링: CPU 자원을 효율적으로 분배하는 방식

멀티프로세싱과 멀티스레딩을 적절히 활용하면, 프로그램의 성능을 극대화할 수 있습니다. 앞으로 멀티스레딩을 활용하는 방법과 예제도 다루어 보겠습니다! 🚀

profile
배움을 추구하는 개발자

0개의 댓글