Java

Java 개념 정리 ) 프로세스와 쓰레드

banasu0723 2024. 8. 12. 04:35

< 프로세스와 쓰레드>

 

프로세스

  • 운영체제로부터 자원을 할당받는 작업의 단위
  • 프로세스의 구조
    • Code : Java main 메소드와 같은 코드를 말한다
    • Data : 전역변수, 정적 변수(static), 배열 등 초기화된 데이터를 저장하는 공간
    • Memory(메모리 영역)
      • Stack : 지역변수, 매개변수 리턴 변수를 저장하는 공간
      • Heap : 프로그램이 동적으로 필요한 변수를 저장하는 공간 (new(), mallock())

 

쓰레드

  • 프로세스가 할당받은 자원을 이용하는 실행의 단위
  • 프로세스 내에서 일하는 일꾼(코드 실행의 흐름)이라고 생각하면 된다
  • 프로세스가 작업 중인 프로그램에서 실행 요청이 들어오면 쓰레드를 만들어 명령을 처리하도록 한다
  • 쓰레드의 자원
    • 프로세스 안에는 여러 쓰레드들이 있고 , 실행을 위한 프로세스 내 주소 공간이나 메모리공간 (Heap) 을 공유받는다
    • 추가로 쓰레드들은 각각 명령 처리를 위한 자신만의 메모리 공간 (Stack) 도 할당받는다

  • Java 쓰레드
    • 일반 쓰레드와 동일하며, JVM 프로세스 안에서 실행되는 쓰레드이다

 

  • 멀티 쓰레드
    • 필요에 따라서 작업 쓰레드들을 생성해서 병렬로 코드를 실행시킬 수 있다
    • Java는 멀티 쓰레드를 지원한다

 

  • 싱글 쓰레드와 멀티 쓰레드
    • 싱글 쓰레드 : 프로세스 안에서 하나의 쓰레드만 실행되는 것
      • main() 메서드만 실행시켰을 때 이것을 싱글 쓰레드라고 한다
    • 멀티 쓰레드 : 프로세스 안에서 여러 개의 쓰레드가 실행되는 것
      • 하나의 프로세스는 여러개의 쓰레드를 가질 수 있으며, 이 쓰레드들은 프로세스의 자원을 공유한다
      • but 충돌이나 데드락이 발생할 수도 있다