이세개발
Published 2023. 11. 1. 00:13
스레드, 프로세스 Computer Science

1. 프로세스 (Process)

프로세스는 실행 중인 프로그램의 인스턴스로, 실행을 위한 모든 리소스와 정보 (메모리, 파일 핸들, I/O 디바이스 상태 등)를 포함합니다.

특징:

  • 독립성: 각 프로세스는 독립된 메모리 영역을 갖습니다. 하나의 프로세스가 다른 프로세스의 메모리에 직접 접근할 수 없습니다.
  • 오버헤드: 프로세스 간의 컨텍스트 스위치(Context Switch)는 비교적 높은 오버헤드를 가집니다.

2. 스레드 (Thread)

스레드는 프로세스 내에서 실행되는 개별 실행 경로로, 프로세스의 메모리 및 리소스를 공유합니다. 하나의 프로세스는 여러 스레드를 가질 수 있습니다.

특징:

  • 리소스 공유: 같은 프로세스 내의 스레드들은 코드, 데이터 및 시스템 리소스를 공유합니다.
  • 효율성: 스레드 간의 컨텍스트 스위치는 프로세스 간의 컨텍스트 스위치보다 오버헤드가 적습니다.
  • 경량성: 스레드는 프로세스에 비해 생성과 제거가 경량화되어 있습니다.

멀티스레드 (Multithreading)

멀티스레드는 단일 프로세스 내에서 여러 스레드를 동시에 실행하는 방식입니다.

장점:

  • 더 빠른 컨텍스트 스위칭
  • 메모리 및 리소스를 공유하기 때문에 효율적

단점:

  • 데이터 무결성 문제와 동시성 문제를 유발할 수 있음 (예: 데드락)
  • 스레드간의 충돌로 인한 디버깅 어려움

멀티프로세스 (Multiprocessing)

멀티프로세스는 여러 개의 독립적인 프로세스를 동시에 실행하는 방식입니다.

장점:

  • 프로세스 간의 독립성으로 인해 안정성이 높음
  • 한 프로세스에서의 오류가 다른 프로세스에 영향을 주지 않음

단점:

  • 높은 메모리 사용량 및 오버헤드
  • 프로세스 간의 통신 (IPC)가 복잡

결론:

스레드와 프로세스는 모두 병렬 처리를 위한 중요한 도구입니다. 필요에 따라 멀티스레드 또는 멀티프로세스 방식을 선택할 수 있습니다. 멀티스레드는 리소스를 효율적으로 사용하는 반면, 멀티프로세스는 각 프로세스의 독립성을 통해 안정성을 제공합니다.

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!