메모리 구조란 컴퓨터가 데이터를 저장하고 사용하는 공간을 목적과 속도에 따라 계층적으로 나눈 구조를 의미한다.
각 메모리는 속도, 용량, 비용이 다르며 이를 효율적으로 사용하기 위해 계층 구조를 가진다.
아래에서 각 메모리를 차례대로 살펴보겠다.
CPU 내부에 존재하는 가장 빠른 메모리이다.
연산에 직접 사용되는 데이터나 주소를 저장하며, 접근 속도가 매우 빠르지만 용량은 매우 작다.
CPU가 명령어를 실행할 때 가장 먼저 사용하는 저장 공간이다.
CPU와 메인 메모리(RAM) 사이에 위치한 고속 메모리이다.
자주 사용하는 데이터를 미리 저장해 두어 메모리 접근 시간을 줄이는 역할을 한다.
L1 캐시 : CPU 코어 내부에 존재, 가장 빠르지만 용량이 작음
L2 캐시 : L1보다 느리지만 용량이 큼
L3 캐시 : 여러 코어가 공유하는 캐시
지역성(Locality) 원리를 기반으로 동작하며,
시간 지역성과 공간 지역성을 활용한다.
프로그램이 실행될 때 필요한 데이터와 코드를 저장하는 메모리이다.
휘발성 메모리로, 전원이 꺼지면 데이터가 사라진다.
운영체제, 실행 중인 프로그램, 스택, 힙 영역 등이 이곳에 적재된다.
속도와 용량의 균형을 담당하는 핵심 메모리이다.
데이터를 영구적으로 저장하기 위한 장치이다.
속도는 느리지만 용량이 크고 비휘발성이라는 특징이 있다.
대표적인 예시는 다음과 같다.
HDD, SSD, USB 메모리, 외장 하드
프로그램 실행 시 보조 기억 장치의 데이터가 메인 메모리로 로드된다.

프로그램이 실행되면 운영체제에 의해 메모리는 용도별로 나누어 관리된다.
실행할 프로그램의 코드(명령어)가 저장되는 영역이다.
읽기 전용(Read Only) 영역으로, 실행 중 변경되지 않는다.
전역 변수와 정적 변수(static)가 저장되는 영역이다.
프로그램 시작과 동시에 할당되며 종료 시 해제된다.
동적 할당 메모리가 저장되는 영역이다.
프로그래머가 직접 메모리 할당과 해제를 관리한다.
런타임 중 크기가 변할 수 있음
메모리 누수 발생 가능
함수 호출과 관련된 지역 변수, 매개변수, 리턴 주소 등이 저장되는 영역이다.
함수 호출 시 생성되고 함수 종료 시 자동으로 해제된다.
LIFO 구조
자동 메모리 관리
오버플로우 발생 가능