- 메모리엔 컴퓨터 실행 순간부터 다양한 프로세스들이 적재되어 실행됨
- 프로세스 유형
- 포그라운드 프로세스(foreground process) : 사용자가 보는 공간에서 사용자와 상호작용하며 실행
- 백그라운드 프로세스(background process) : 사용자가 보지 못하는 곳에서 실행
- 데몬(daemon) : 사용자와 별다른 상호작용 없이 주어진 작업만 수행하는 특별한 백그라운드 프로세스
프로세스 유형을 막론하고 하나의 프로세스를 구성하는 메모리 내 정보는 크게 다르지 않음. 커널 영역에는 프로세스 제어 블록(PCB)이라는 정보가 저장되고, 사용자 영역에는 실행 중인 프로세스가 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장

메모리 영역
- 정적 할당 영역 : 프로그램 실행 도중 크기가 변하지 않는 영역
- 동적 할당 영역 : 프로그램 실행 도중 크키가 변할 수 있는 영역
1) 코드 영역(텍스트 영역)
- 실행 가능한 명령어가 저장되는 공간
- CPU가 읽고 실행할 명령어가 담김 → 읽기 전용 공간
2) 데이터 영역
- 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
- 정적 변수, 전역 변수
<aside>
🥕
BSS 영역
BSS 영역까지 추가로 구분하는 경우도 존재. BSS 영역은 데이터 영역과 유사하지만 초기화 여부가 다름. 초기값이 있는 정적 변수나 전역 변수 같은 데이터는 데이터 영역에 저장. 초깃값이 없는 데이터는 BSS 영역에 저장
</aside>
3) 힙 영역
- 프로그램을 만드는 사용자(= 개발자)가 직접 할당 가능한 저장 공간. 프로그램 실행 도중 비교적 자유롭게 할당하여 사용 가능한 메모리 공간
- 다만, 언젠가는 해당 공간을 반환해야하며 안 그러면 메모리 누수 문제(할당한 공간이 계속 메모리에 남아 메모리를 낭비) 초래 가능
- 가비지 컬렉션 기능을 통해 자체적으로 사용하지 않는 힙 메모리를 해체하는 기능을 제공하는 언어도 존재
4) 스택 영역
- 데이터 영역과 달리, 일시적으로 사용할 값들이 저장되는 공간