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)를 갖음
· 힙은 운영체제 마다 구현 방법이 다름
· 스택은 제한적 메모리 영역 내에서 할당과 해제가 이루어지기 때문에 힙에 비해 메모리 할당 / 해제 속도가 빠름
'Study' 카테고리의 다른 글
[STUDY] HTTP (Hyper Text Transfer Protocol) (0) | 2021.12.10 |
---|---|
[STUDY] 브라우저 렌더링 (Browser Rendering) (0) | 2021.11.05 |
[STUDY] 자료구조(Data Structure) - 비선형 자료구조(Non-Linear Data Structure) (0) | 2021.11.02 |
[STUDY] 자료구조(Data Structure) - 선형 자료구조(Linear Data Structure) (0) | 2021.10.27 |
[STUDY] 기본기 (Study) - OSI 7 계층, TCP/IP 4 계층 (0) | 2021.10.02 |
댓글