Process와 Thread

강무진·2023년 8월 12일

나만의 cs 정리

목록 보기
3/8

📌 프로세스와 스레드
백엔드 개발을 하다 보면 멀티스레딩, 병렬 처리, 동시성 문제가 자주 등장합니다. 이를 이해하려면 프로세스와 스레드의 개념을 명확히 알아야 합니다.

1️⃣ 프로세스(Process)란?
💡 프로세스는 실행 중인 프로그램을 의미합니다.

✅ 특징
독립적인 메모리 공간을 가짐 (Code, Stack, Heap, Data 영역)

다른 프로세스와 메모리를 공유하지 않음

운영체제에서 개별적으로 관리됨

하나 이상의 스레드를 포함할 수 있음

✅ 프로세스의 메모리 구조
프로세스는 4가지 메모리 영역을 가집니다.

영역 설명 예시
코드(Code) 영역 실행할 프로그램 코드 저장 main() 함수
데이터(Data) 영역 전역변수, 정적 변수 저장 static int count = 0;
힙(Heap) 영역 동적 메모리 할당 공간 new String("Hello")
스택(Stack) 영역 지역 변수, 함수 호출 스택 int a = 10;
✅ 프로세스 예제 (Java에서 프로세스 실행)
java
복사
편집
import java.io.IOException;

public class ProcessExample {
public static void main(String[] args) throws IOException {
// 새로운 프로세스 실행 (cmd 창에서 notepad.exe 실행)
Process process = Runtime.getRuntime().exec("notepad.exe");

    System.out.println("메모장 프로세스 실행됨");
}

}
위 코드를 실행하면 새로운 프로세스(메모장)가 실행됨.

2️⃣ 스레드(Thread)란?
💡 스레드는 프로세스 내에서 실행되는 작업의 최소 단위입니다.

✅ 특징
프로세스의 메모리를 공유함 (Heap, Data, Code 공유)

각 스레드는 독립적인 Stack을 가짐

멀티스레딩을 통해 병렬 처리 가능

스레드 간 자원 공유로 인해 동기화 문제가 발생할 수 있음

✅ 스레드의 메모리 구조
영역 설명 공유 여부
코드(Code) 영역 실행 코드 저장 ✅ 공유
데이터(Data) 영역 전역 변수 저장 ✅ 공유
힙(Heap) 영역 동적 객체 저장 ✅ 공유
스택(Stack) 영역 지역 변수, 함수 호출 정보 저장 ❌ 개별적
3️⃣ 프로세스와 스레드의 차이
구분 프로세스 스레드
정의 실행 중인 프로그램 프로세스 내 실행 단위
메모리 공유 ❌ 독립적 ✅ 공유
통신 방식 IPC (Inter Process Communication) 필요 변수 공유 가능
생성 비용 ✅ 높음 (OS에서 새로운 메모리 공간 할당) ❌ 낮음 (이미 존재하는 프로세스 내부)
예제 크롬 브라우저, 메모장, 톰캣 서버 탭(크롬 브라우저), 가비지 컬렉터
📌 간단히 정리하면?

프로세스는 독립적인 실행 단위

스레드는 프로세스 내에서 실행되는 경량 단위 (메모리 공유)

멀티프로세스보다 멀티스레드가 더 빠르고 효율적 (메모리 공유)

profile
**프로그래머로 성장하는 여정**

1개의 댓글

comment-user-thumbnail
2023년 8월 12일

좋은 글 감사합니다. 자주 올게요 :)

답글 달기