프로세스 & 스레드



정의

프로세스와 스레드 구조

Process = 독립적인 실행 단위(실행 중에 있는 프로그램)
Thread = 프로세스 내부에서 실행되는 작은 실행 단위




Process

구조

프로세스 구조

→ code, data, stack, heap 독립적으로 할당

특징

  • 독립성 : 각 프로세스는 고유한 메모리 공간과 리소스를 가지며, 다른 프로세스의 메모리나 리소스에 직접 접근할 수 없음
  • 오류 격리 : 하나의 프로세스에서 오류나 충돌이 발생해도 다른 프로세스에 영향을 주지 않음
  • 통신 : 파이프, 소켓, 메시지 큐와 같은 IPC를 사용하여 서로 통신함
  • 생성 부하 : 리소스가 많이 들고 시간이 오래 걸림



Thread

구조

스레드 구조

→ stack만 할당받아 복사하고 code, data, heap은 프로세스내의 다른 스레드들과 공유

특징

  • 독립성: 동일한 프로세스 내 스레드는 동일한 메모리 공간을 공유하므로 서로의 데이터에 직접 접근하고 수정할 수 있음
  • 오류 격리: 스레드 내에서 오류가 발생하면 동일한 프로세스 내 다른 스레드에도 영향을 미칠 수 있음
  • 통신: 동일한 프로세스 내 스레드는 메모리를 공유하기에 쉽게 통신할 수 있음
  • 생성 부하: 동일한 프로세스 내의 스레드는 프로세스의 리소스를 공유하므로 생성 부하가 적음


다중 프로세스 VS 다중 스레드

다중 프로세스 (Multi-process)

하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 것

다중 스레드 (Multi-threaded)

하나의 프로세스 안에 여러 개의 스레드를 실행할 수 있게 하는 것


다중 프로세스 다중 스레드
안정성 다른 프로세스에 영향 X 충돌 가능성 O
확장성 확장성 제공 확장성 제한
문맥 교환 부하 별도의 메모리 공간 → 오버헤드 ↑ 메모리 공유 → 오버헤드 ↓
자원 공유 비효율성 IPC 필요 → 효율성 ↓ 메모리 공유 → 효율성 ↑




references
👉 https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4
👉 https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-multi-process-multi-thread