Memorizing/Java
[Java] 프로세스와 스레드 - 1
Mingi Kim
2024. 2. 17. 10:25
본 포스팅은 프로세스와 스레드에 대해 다룹니다.
프로세스는 "실행 중인 프로그램"을 의미합니다. 카카오톡, 크롬 브라우저 등도 모두 프로세스라고 할 수 있습니다. 운영체제(OS)에서는 프로세스를 할당할 때, 프로세스에 code, data, 메모리 영역(Stack, Heap)을 함께 할당해줍니다. 각각의 간단한 설명은 아래와 같습니다.
1. Code 는 Java main 메소드와 같은 코드를 말합니다.
2. Data 는 프로그램이 실행중 저장 할 수 있는 저장공간을 의미합니다.
1. 전역변수, 정적변수(static), 배열등 초기화된 데이터를 저장하는 공간
3. Memory (메모리 영역)
- Stack : 지역변수, 매개변수 리턴 변수를 저장하는 공간
- Heap : 프로그램이 동적으로 필요한 변수를 저장하는 공간 (new(), mallock())
스레드는 "프로세스내의 코드실행의 흐름"을 의미합니다. 프로세스 안에서는 여러 개의 스레드가 작업을 수행할 수도 있습니다. 프로세스내에서 한 개의 스레드가 작업을 수행하면 "싱글 스레드"로 작업을 수행한다고하고, 한 개 이상의 스레드가 작업하면 "멀티 스레드"로 작업을 수행한다고 합니다.
스레드들은 실행하기 위해 프로세스내의 주소 공간이나 메모리 공간(Heap)을 할당받습니다. 또한 각각의 명령처리를 위한 자신만의 메모리공간(Stack)도 할당받습니다. 위의 설명을 그림으로 나타내면 아래와 같습니다.