c++

컴퓨터 메모리 종류와 메모리 영역

kilkoon 2019. 1. 7. 05:22

1. 메모리의 종류

 

- 하드디스크

- 램 (메인 메모리)

- 레지스터

- 캐쉬

 

<https://m.blog.naver.com/PostView.nhn?blogId=three_letter&logNo=220506724475&proxyReferer=https%3A%2F%2Fwww.google.com%2F>

 

 

메모리의 이동은 하드디스크 -> RAM -> 캐쉬(L1, L2) -> 레지스터 순으로 이뤄진다. 오른쪽으로 갈수록 속도는 빨라지지만 용량은 작아진다. 

이런 식으로 구조가 만들어진 이유는 CPU로 필요한 데이터를 빠르게 전달하기 위함이다. 이 전달 속도를 위해서 메모리의 공간적 지역성, 교체 알고리즘 등 고려할 것들이 있으니 이 내용은 OS 포스팅에서 따로 정리하도록 하자.

 

각 메모리들의 역할을 정리해보자.

 

- 캐쉬 : 자주 사용되는 데이터를 임시로 저장해두는 장소. L1, L2캐시 이외에 RAM 또한 캐시로 볼 수 있다.

- 레지스터 : CPU 안에 존재하는 작지만 엄청 빠른 속도로 동작하는 초고속 경량 메모리

 

 

 

2. 메모리 영역

 

메모리 영역은 코드 영역, 데이터 영역, 스택 영역, 힙 영역으로 구성된다.

 

- 코드 영역 : 실행할 프로그램의 코드가 저장되는 메모리 공간. CPU는 코드 영역에 저장된 명령어들을 하나씩 가져가 실행한다.

- 데이터 영역 : 주로 전역변수와 static 변수를 저장한다. 상수도 저장된다. (프로그램 시작 ~ 종료까지 유효)

- 힙 영역 : 동적 메모리 할당 시 사용한다. (프로그래머가 원하는 시점에 할당 / 소멸)

- 스택 영역 : 지역변수와 매개변수가 할당된다. 기본적으로 약 1MB. sp, fp 레지스터 또한 저장된다. (함수 시작~ 종료까지 유호)