본문 바로가기
프로그래밍/Java

[Java] Process와 Thread의 차이

by 시간많은백수 2023. 10. 22.
반응형

💡정의

  • 프로세스: 프로세스는 독립적인 메모리 공간을 가지고 실행 중인 프로그램의 인스턴스를 나타냅니다. 각 프로세스는 운영 체제로부터 자체 메모리 및 자원(파일 핸들, 소켓 등)을 할당받아 실행됩니다. 프로세스는 서로 완전히 독립된 실행 환경을 가집니다.

  • 스레드: 스레드는 프로세스 내에서 실행되는 작은 실행 단위로, 하나의 프로세스가 여러 스레드를 가질 수 있습니다. 스레드는 프로세스 내의 공유 메모리 공간을 사용하며, 스레드 간 통신이 더 쉽습니다.

 

💡메모리 및 자원 공유

  • 프로세스: 각 프로세스는 독립적인 메모리 공간을 갖기 때문에 다른 프로세스와의 메모리 공유가 어려우며, 별도의 메커니즘(프로세스 간 통신, IPC)이 필요합니다.
  • 스레드: 스레드는 같은 프로세스 내에서 실행되므로 프로세스 내의 메모리 및 자원을 쉽게 공유할 수 있습니다. 이는 데이터 공유와 효율적인 통신을 가능하게 합니다.

 

💡생성 및 종료 비용

  • 프로세스: 프로세스 생성 및 종료는 비용이 큽니다. 새로운 프로세스를 생성하려면 운영 체제가 새로운 메모리 공간을 할당하고 초기화해야 합니다.
  • 스레드: 스레드는 프로세스 내에서 생성 및 종료하기가 비교적 빠릅니다. 스레드는 부모 프로세스의 자원을 상속하므로 초기화 및 메모리 할당 비용이 낮습니다.

 

💡 독립성

  • 프로세스: 각 프로세스는 완전히 독립적이므로 하나의 프로세스의 오류가 다른 프로세스에 영향을 미치지 않습니다.
  • 스레드: 스레드는 같은 프로세스 내에서 실행되므로 하나의 스레드의 오류가 다른 스레드에 영향을 줄 수 있습니다. 따라서 스레드 프로그래밍은 조심스럽게 관리되어야 합니다.

 

💡 병렬성

  • 프로세스: 병렬 처리를 위해 여러 프로세스를 사용할 수 있지만, 프로세스 간 통신 비용이 높기 때문에 스레드보다 더 많은 오버헤드가 발생할 수 있습니다.
  • 스레드: 스레드는 프로세스 내에서 생성되므로 메모리 및 자원 공유가 쉽고, 병렬 처리를 구현하기가 효율적입니다.

 

간단히 말하면, 프로세스는 독립된 실행 환경을 가지고 있는 프로그램의 인스턴스이며, 스레드는 프로세스 내에서 실행되는 작은 실행 단위로, 하나의 프로세스 내에서 여러 스레드가 동작하여 작업을 병렬로 처리할 수 있습니다. 스레드는 프로세스 내의 자원을 공유하므로 프로세스보다 경량이며, 이로 인해 더 빠른 실행이 가능합니다.

반응형