동시성 문제를 해결하기 위해 필요한 개념인 프로세스와 스레드에 대해 공부하고 정리한 내용을 기록한다.
프로세스와 스레드는 운영체제에서 작업 효율성을 극대화하기 위한 병렬처리 과정에서 사용하는 개념으로, 이 개념은 웹개발 및 백엔드에서도 활용한다.
운영체제가 프로그램 실행을 위해 프로세스를 할당할때, 프로세스의 프로그램 코드나 데이터, 메모리 영역(Heap, Stack)을 함께 할당(제공)한다.
프로세스 안에서 동작하는 실행의 단위로, 프로그램 실행 요청이 들어올 경우 프로세스를 할당하면서 내부적으로 스레드를 만들어 명령을 처리한다.
즉, 프로세스 요청이 있을때 스레드가 만들어지며 프로세스의 주소공간 및 메모리 공간(Heap)을 공유받고 자신만의 메모리 공간(Stack)을 할당받기도 한다.
OS에서 동작하는 구조는 동일하며, 다만 JVM에서 동작한다.
최초로 동작하는 스레드는 java의 main 스레드이다.