[F-Lab 멘토링 학습]

프로세스와 스레드의 차이

everydeveloper 2023. 11. 11. 16:07

프로세스와 스레드

프로세스와 스레드는 컴퓨터에서 프로그램을 실행하는 방식과 관련된 개념입니다. 둘의 차이를 이해하기 위해 각각에 대해 설명드리겠습니다.

프로세스(Process):

  • 프로세스는 실행 중인 프로그램의 인스턴스입니다.
  • 각 프로세스에는 독립된 메모리 공간이 할당됩니다. 이를 프로세스의 가상 주소 공간이라고 합니다.
  • 프로세스는 운영 체제에 의해 관리되며, 운영 체제는 프로세스 간의 메모리, CPU 시간, 입/출력 자원 등을 할당합니다.
  • 프로세스는 서로 독립적이며, 한 프로세스의 메모리에 다른 프로세스가 직접 접근할 수 없습니다.
  • 멀티태스킹 환경에서 여러 프로세스가 동시에 실행될 수 있습니다.

스레드(Thread):

  • 스레드는 프로세스 내에서 실제로 작업을 수행하는 단위입니다.
  • 하나의 프로세스는 하나 이상의 스레드를 가질 수 있으며, 이를 멀티스레딩이라고 합니다.
  • 스레드들은 프로세스의 자원을 공유합니다. 예를 들어, 같은 메모리 공간(힙 메모리)에 접근할 수 있습니다.
  • 스레드 간의 커뮤니케이션과 자원의 공유는 프로세스들 사이에서보다 훨씬 쉽고 빠릅니다.
  • 멀티스레딩은 하나의 프로그램이 여러 작업을 동시에 처리할 수 있게 해줍니다.

프로세스와 스레드의 차이점:

  • 자원 공유: 스레드는 같은 프로세스 내에서 메모리를 공유하지만, 프로세스는 독립된 메모리 공간을 가집니다.
  • 통신: 스레드 간의 통신은 프로세스보다 더 간단하며, 성능 오버헤드가 적습니다.
  • 생성과 관리: 스레드의 생성과 컨텍스트 스위칭은 프로세스에 비해 상대적으로 비용이 적게 듭니다.
  • 독립성: 프로세스는 각각 독립적으로 실행되며, 다른 프로세스의 오류로부터 보호받습니다. 반면, 하나의 스레드에 문제가 생기면 같은 프로세스 내의 다른 스레드에 영향을 줄 수 있습니다.

간단히 말해, 프로세스는 독립적인 실행 단위이며, 스레드는 프로세스 내에서 실행되는 더 작은 실행 단위입니다. 스레드는 프로세스 자원을 공유하며, 멀티스레딩을 통해 한 프로세스 내에서 여러 작업을 동시에 수행할 수 있게 합니다.