[Java] 프로세스와 스레드 - 1

2024. 2. 17. 10:25Memorizing/Java

728x90

본 포스팅은 프로세스와 스레드에 대해 다룹니다.

프로세스는 "실행 중인 프로그램"을 의미합니다. 카카오톡, 크롬 브라우저 등도 모두 프로세스라고 할 수 있습니다. 운영체제(OS)에서는 프로세스를 할당할 때, 프로세스에 code, data, 메모리 영역(Stack, Heap)을 함께 할당해줍니다. 각각의 간단한 설명은 아래와 같습니다.

1. Code 는 Java main 메소드와 같은 코드를 말합니다.
2. Data 는 프로그램이 실행중 저장 할 수 있는 저장공간을 의미합니다.
    1. 전역변수, 정적변수(static), 배열등 초기화된 데이터를 저장하는 공간
3. Memory (메모리 영역)
    - Stack : 지역변수, 매개변수 리턴 변수를 저장하는 공간
    - Heap : 프로그램이 동적으로 필요한 변수를 저장하는 공간 (new(), mallock())

스레드는 "프로세스내의 코드실행의 흐름"을 의미합니다. 프로세스 안에서는 여러 개의 스레드가 작업을 수행할 수도 있습니다. 프로세스내에서 한 개의 스레드가 작업을 수행하면 "싱글 스레드"로 작업을 수행한다고하고, 한 개 이상의 스레드가 작업하면 "멀티 스레드"로 작업을 수행한다고 합니다.

스레드들은 실행하기 위해 프로세스내의 주소 공간이나 메모리 공간(Heap)을 할당받습니다. 또한 각각의 명령처리를 위한 자신만의 메모리공간(Stack)도 할당받습니다. 위의 설명을 그림으로 나타내면 아래와 같습니다.

 

 

'Memorizing > Java' 카테고리의 다른 글

[Java] 프로세스와 스레드 - 3  (0) 2024.02.17
[Java] 프로세스와 스레드 - 2  (0) 2024.02.17
[Java] 상속  (1) 2024.02.07
[Java] Class  (0) 2024.02.07
[Java] Collection  (0) 2024.02.07