프로세스가 생성되면 커널 영역에 PCB가 생성됩니다. 그렇다면 사용자 영역에는 프로세스가 어떻게 배치될까요?
하나의 프로세스는 사용자 영역에 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장됩니다. 프로세스 실행 과정에서 코드 영역과 데이터 영역은 "크기가 고정된 영역"이라는 점에서 정적 할당 영역이라고 부르고, 힙 영역과 스택 영역은 "크기가 변할 수 있는 영역"이라는 점에서 동적 할당 영역이라고 부릅니다.

코드 영역에는 실행할 수 있는 코드인 명령어가 저장됩니다. 데이터가 아닌 CPU가 실행할 명령어가 담겨 있기 때문에, 쓰기가 금지되어 있습니다. 즉, 코드 영역은 읽기 전용 공간입니다.
데이터 영역에는 프로그램이 실행되는 동안 유지될 데이터가 저장됩니다. 예를 들어, 전역 변수는 프로그램이 실행되는 동안 유지되며, 프로그램 전체에서 접근할 수 있는 변수입니다.
힙 영역은 프로그래머가 직접 할당할 수 있는 저장 공간입니다. 프로그래밍 과정에서 힙 영역에 메모리 공간을 할당했다면, 언젠가는 해당 공간을 반환해야 합니다. 메모리 공간을 반환한다는 의미는 "더 이상 해당 메모리 공간을 사용하지 않겠다"라고 운영체제에게 알려주는 것과 같습니다.
스택 영역은 데이터를 일시적으로 저장할 수 있는 공간입니다. 일시적으로 저장할 데이터는 스택 영역에 PUSH되고, 더 이상 필요하지 않은 데이터는 POP됨으로써 스택 영역에서 사라집니다. 예를 들어, 함수의 실행이 끝나면 사라지는 매개 변수, 지역 변수 등이 있습니다.