본문 바로가기
Study

[STUDY] 메모리 (RAM, Random Access Memory)

by 물코더 2021. 11. 3.

 

1. RAM(Random Access Memory) 이란 

· 응용 프로그램 실행 중(runtime) 필요한 데이터를 저장하기 위한 단기 데이터 저장소. 

· 순차적으로 데이터에 접근하지 않고, 주소(address)를 통해 임의의 순서(random)로 빠르게 데이터에 접근.

 

2. RAM 구조 

 

코드 영역 → 데이터 영역 → 힙 영역 →→ ( Free Storage ) ←← 스택 영역

 

· 낮은 메모리 주소 값(low memory) 에서 높은 메모리 주소 값(high memory)로 주소 값을 할당 

 

1) 코드 영역 (code)

· CPU에 의해 코드를 한 줄씩 처리되고, 응용 프로그램 종료 시 메모리에서 해제 

· 응용 프로그램의 코드가 저장되는 영역 

※ 함수, 제어문, 상수 등 변경되지 않는 데이터

 

2) 데이터 영역 (data)

· 응용 프로그램 시작과 동시에 메모리에 할당되고 종료 시 메모리에서 해제

· 응용 프로그램에서 사용되는 데이터가 저장되는 영역

※ 전역 변수, 정적 변수, 배열, 구조체 

 

3) 힙 영역 (heap)

· FiFo (First in, First out)

· 메모리는 낮은 주소 → 높은 주소 로 할당 

· 사용자에 의해 메모리를 할당 / 해제 하는 동적 메모리 공간으로, 가변적 메모리 크기를 갖음.

· 사용자에 의해 메모리를 할당 / 해제 되기 때문에 스택 영역(stack)에 비해 처리 속도가 늦음.

※ 응용 프로그램 실행 중에 메모리 크기가 결정되기 때문에, 이미 해제된 메모리를 다시 해제하는 '이중 해제' 또는 하나의 데이터에 여러 스레드가 동시에 접근하는 '힙 경합' 등 부가적인 문제가 발생 가능 

 

4) 스택 영역 (stack)

· CPU에 의해 자동으로 메모리를 할당 / 해제 가 이루어지기 때문에, 메모리 낭비가 없음 

· 메모리의 크기가 제한적이므로, 제한된 메모리를 초과할 경우 오버플로우 (overflow)가 발생 가능 

 

※ 힙(heap)과 스택(stack) 

· 힙과 스택 크기는 서로 반비례 

· 힙은 전역 스코프(global scope), 스택은 지역 스코프(local scope)를 갖음 

· 힙은 운영체제 마다 구현 방법이 다름 

· 스택은 제한적 메모리 영역 내에서 할당과 해제가 이루어지기 때문에 힙에 비해 메모리 할당 / 해제 속도가 빠름

반응형

댓글