CS 50 - 메모리와 데이터의 저장

2021. 7. 18. 19:04컴퓨터 과학

메모리는 프로그램의 동작에 필요한 데이터들을 저장하는 공간으로, 아무렇게나 쓰는 것이 아니라, 용도에 따라 구분지어 사용된다.

메모리 영역의 도식도

 

cpu의 메모리 제어

RAM위의 각 메모리는 프로그램의 코드가 들어가는 Code 영역, 전역, Data 영역, 그리고 힙, 스택영역이 있다.

CPU는 CODE 영역의 메모리 중 함수, 분기문, 상수 등을 읽어와 그에 따라 RAM에서 메모리를 관리한다.

CPU가 다루는 메모리 영역 중 Data Memory 영역은 global 변수, static 변수를 할당하는 공간이며, 프로그램의 실행과 동시에 생성되며 프로그램의 종료와 동시에 소멸한다.

그 밑에는 Heap 영역과 Stack 영역이 존재하는데, Stack 영역은 프로그램이 필요에 따라 임시로 사용하는 영역이며, 함수의 호출 시 필요한 지역 변수, 매개 변수가 저장되며 함수 호출이 끝나면 자동으로 사라진다.

Heap 영역은 사용자가 필요한만큼 사용할 수 있는 메모리로 구성되어있으며 사용이 끝나면 사용자가 해제를 해주어야한다.

Heap과 Stack 영역은 메모리가 필요할 시 사용할 수 있는 빈 공간인 Free Store 영역의 공간을 사용하는데,

Stack 영역이 이러한 Free store를 넘어 Heap 영역을 침범한다면 Stack Overflow, 반대의 경우 Heap Overflow라고 부른다.

 

조금 더 나아가, 확장해보자면 다음과 같은 구조가 나온다.

컴퓨터 저장 공간을 메인 메모리와 CPU 간의 데이터 속도 향상을 위한 Cache 메모리는 CPU의 버퍼 역할을 하며, 빠른 전달을 위해 미리 데이터들을 저장해두었다가 다른 메모리로 보내는 등의 일을 한다.

 

또한 메모리는 캐시 메모리 외에 주 기억장치 (메인 메모리, 흔히 말하는 RAM)과 보조 기억장치(하드 디스크), CD, USB 등의 이동식 저장 장치? 등으로 나뉜다.

당연히 속도는 메인 메모리가 나머지 저장 장치들보다 빠르며, 가격은 속도와 비례한다.

그런데 메인 메모리가 속도가 빠르면 무작정 RAM만 꽂아버리면 빨라질까?

빨라야지겠지만, 메인 메모리는 전원이 차단되면 메모리가 날아가버린다. 그래서 보조기억장치를 필요로하게되는데, 하드디스크나 USB 등의 저장 장치는 잘 알다시피 전원이 없더라도 메모리에 있는 데이터가 저장이 되어있다.

여기에는 운영체제, 응용프로그램이 저장되었다가 전원이 켜질 때 주 기억장치로 로드된다.

 

주 기억장치로 주로 쓰이는 RAM(Random Access Memory)의 뜻은 임의 접근 메모리이며, Random은 어느 주소에 있는 데이터던지 한 번에 접근할 수 있어서 Random이다. 주로 사용하는 DRAM의 작동 원리는 다음과 같다.

 

저장 장치는 전자를 저장할 수 있는 축전기가 있으며, 이곳에 전하를 "충전"하거나 "방전"시켜 1과 0의 상태를 저장한다.

그런데 전자의 특성 상 여러가지 요인으로 인해 전자가 방출되어 방전이되면 데이터가 유실되게 되는데, 이를 위해 가끔씩 refresh 작업을 거쳐야하고 이것이 DRAM(Dynamic RAM)의 특성이다.

반응형