여기서 주목할 점은, 프로그램은 하나이지만 프로세스는 여러 개일 수 있다는 것입니다. 예를 들어 구글 크롬의 경우 프로그램은 하나이지만 크롬 창을 여러 개 띄우고 동시에 작업할 수 있습니다. 이는 크롬 프로그램이 메모리에 여러 번 올라와 여러 개의 프로세스로 존재하기 때문입니다.
스레드
스레드(thread)는 프로세스 내에서 작업을 처리하는 실행 단위로, 프로세스가 할당받은 자원(CPU, 메모리 등)을 이용해 작업을 처리합니다. 프로세스는 최소 하나 이상의 스레드를 가지는데, 이를 메인 스레드(main thread)라고 합니다.
스레드가 프로세스의 자원을 어떻게 이용하는지 이해하기 위해 프로세스의 메모리 구조를 살펴봅시다. 각각의 프로세스는 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장됩니다.
그림 2-14 프로세스의 메모리 구조