[CS] Process, Thread

MariGold·2026년 2월 25일

[CS]

목록 보기
2/2

개발을 하다 보면 다음과 같은 상황을 자주 마주합니다.

  • 하나의 프로그램에서 여러 작업을 동시에 처리해야 하거나
  • 작업 간 자원을 효율적으로 공유해야 하거나
  • 성능 향상을 위해 병렬 처리가 필요하거나

이런 문제를 이해하기 위해 반드시 알아야 할 개념이 바로 Process와 Thread 입니다. 이번 글에서는 Process와 Thread가 무엇인지, 왜 필요한지, 그리고 어떻게 동작하는지를 알아보겠습니다.


🚀 Process란?

Process(프로세스)는 실행 중인 프로그램을 의미합니다. 단순한 프로그램 파일(.exe, .app 등)이 아니라, 메모리에 올라가 CPU 자원을 할당받아 실제로 실행되고 있는 상태를 말합니다.

프로그램 실행 → 운영체제가 메모리에 적재 → 하나의 Process 생성

각 프로세스는 독립적인 메모리 공간을 가지며, 다른 프로세스와 기본적으로 자원을 공유하지 않습니다.


💡왜 Process가 필요할까?

1. 프로그램의 독립성 보장

  • 각 프로세스는 독립된 메모리 공간 보유
  • 하나의 프로세스가 오류로 종료되어도 다른 프로세스에는 영향 없음
  • 안정성 확보

2. 운영체제의 자원 관리

  • CPU, 메모리, 파일 등 자원을 프로세스 단위로 관리
  • 실행, 대기, 종료 등의 상태 관리 가능

3. 동시 실행 환경 제공

  • 여러 프로그램을 동시에 실행 가능
  • 브라우저, 음악 플레이어, 게임을 동시에 실행해도 되는 이유

🚀 Thread란?

Thread(스레드)는 프로세스 내에서 실행되는 작업의 흐름 단위입니다. 하나의 프로세스 안에는 여러 개의 스레드가 존재할 수 있으며, 이를 멀티스레딩(Multi-threading)이라고 합니다.

하나의 Process
├─ Thread 1
├─ Thread 2
└─ Thread 3

스레드는 프로세스의 메모리 공간을 공유합니다.


💡왜 Thread가 필요할까?

1. 성능 향상

  • 여러 작업을 동시에 처리 가능
  • 멀티코어 CPU 환경에서 병렬 처리 가능

2. 자원 공유 용이

  • 같은 프로세스 내 메모리 공유
  • 데이터 전달 비용이 적음

3. 사용자 경험 개선

  • 한 작업이 오래 걸려도 다른 작업은 계속 수행 가능
    예: 파일 다운로드 중에도 UI는 멈추지 않음

🚀 Process vs Thread 핵심 차이

구분ProcessThread
메모리독립적프로세스 내에서 공유
생성 비용상대적으로 작음
안정성높음한 스레드 오류가 전체 프로세스에 영향 가능
통신 방식IPC 필요메모리 공유

🎯 마무리

Process와 Thread는 단순한 실행 단위의 차이를 넘어, 안정성과 성능 사이의 균형을 결정하는 핵심 개념입니다.

정리하면 Process는 독립성과 안정성을 제공하고, Thread는 자원 공유와 성능 향상에 유리합니다. 하지만 스레드는 동기화 문제(경쟁 상태, 데드락 등)를 유발할 수 있어 추가적인 관리가 필요하다는 단점도 존재합니다.

현대 소프트웨어 개발 환경에서 멀티스레딩은 거의 기본 전제 조건이며, 백엔드·프론트엔드·모바일·게임 개발자 모두가 반드시 이해해야 할 개념입니다.

profile
많은 것을 알아가고 싶은 Android 주니어 개발자

0개의 댓글