의문점 공부하기/📌 Java

📌 스레드와 프로세스의 차이는 뭘까?

아리빠 2023. 7. 17. 14:40

프로세스(Process):

  • 프로세스는 운영체제에서 실행되고 있는 프로그램의 인스턴스
  • 각 프로세스는 독립된 메모리 공간을 할당받고, 자신만의 주소 공간을 가지고 실행된다
  • 한 프로세스는 다른 프로세스의 변수나 자료구조에 직접 접근할 수 없다.
  • 프로세스 간에는 프로세스 간 통신(IPC, Inter-Process Communication)을 통해 데이터를 주고받을 수 있다.
  • 프로세스는 여러 개의 스레드로 구성될 수 있다.
  • 프로세스는 운영체제로부터 시스템 자원을 할당받는 작업의 단위

스레드(Thread):

  • 스레드는 프로세스 내에서 실행되는 여러 실행 흐름
  • 한 프로세스 내에서 스레드들은 같은 주소 공간과 자원(힙 공간 등)을 공유하면서 실행된다
  • 같은 프로세스 안에 있는 스레드들은 같은 힙 공간을 공유한다
  • 한 스레드가 프로세스 자원을 변경하면, 다른 스레드들도 변경 결과를 즉시 볼 수 있다.
  • 스레드 간의 통신 비용이 프로세스 간의 통신 비용보다 적으므로, 작업들 간의 통신 부담이 줄어든다
  • 동기화 문제와 스레드 간의 자원 공유 충돌이 발생할 수 있다.

=> 자바에서 스레드는 하나의 프로세스 내에서 동작하는 실행 흐름이며, 프로세스는 프로그램의 인스턴스로 독립된 메모리 공간을 할당받는다.

스레드는 프로세스 내의 자원을 공유하면서 실행되므로, 스레드 간의 통신 비용이 적고 빠르다.

프로세스 간의 통신은 프로세스 간 통신(IPC)을 통해 이루어진다