What is RAM
What is RAM
-
RAM이란
Random Access Memory
로 ROMRead Only Memotry
과는 반대로 휘발성 메모리를 의미한다. -
Random Access라는 말은 어느 위치에든 똑같은 속도로 접근하여 읽고 쓸 수 있음을 의미하며, 사용자가 자유롭게 내용을 읽고 쓰고 지울 수 있는 기억장치로, 컴퓨터가 켜지면
CPU는 연산 및 동작에 필요한 내용이 전원이 유지되는 동안
에 RAM에 저장된다. -
주로 주기억장치로 불리며 보조기억장치로는 흔이 우리가 사용하는 Disk(HDD, SDD 등)가 있다.
-
단, RAM의 범주에는 ‘임의 접근’할 수 있는 메모리이므로 HDD 등의 장치들도 RAM의 범주에 들어가기도 하지만, HDD 등의 기억장치와 같이 어느 위치에나 직접 접근할 수 있으나 데이터의 물리적 위치에 따라 읽고 쓰는 시간에 차이가 발생하게 되는 기억장치들은 Direct Access Memory 또는 Direct Access Data Storage라고 부른다.
휘발성과 비휘발성
- 휘발성 메모리
- SRAM (Static Random Access Memory) : 전원이 차단되자마자
즉시 데이터가 삭제
되는 메모리 - DRAM (Dynamic Random Access Memory) : 내부에 전류를
일시적으로 저장
하는 역할을 하여 약 5분 정도 데이터가 유지 될 수 있는 메모리
- SRAM (Static Random Access Memory) : 전원이 차단되자마자
메모리 구조
- 프로그램이 실행되기 위해서는 프로그램이 메모리에 로드(load)되어야 하며, 이에따라 변수들이 저장될 메모리가 필요하다.
- 즉, 위 사진과 같이 프로그램의 실행을 위해
Code, Data, Heap, Stack 영역
을 할당 받을 수 있다.
- 즉, 위 사진과 같이 프로그램의 실행을 위해
- Code 영역
실행할 프로그램의 코드가 저장되는 영역
으로 텍스트(code) 영역이라고도 부른다.- 상수 및 컴파일 될 기계어가 들어가며, 프로그램이 시작하고 종료될 때까지 메모리를 점유한다.
- CPU에서는 Code 영역에 저장된 명령어를 순차적으로 가져가 처리한다.
- Data 영역
- 프로그램의
전역 변수와 정적(Static) 변수가 저장되는 영역
으로 Data 영역 또한 프로그램이 시작하고 종료될 때까지 메모리를 점유한다.
- 프로그램의
- Heap 영역
- 사용자가 직접 관리할 수 있는 영역으로,
사용자에 의해 동적으로 메모리 공간이 할당되고 해제
된다. (malloc() 또는 new 연산자를 통해 할당 / free() 또는 delete 연산자를 통해서 해제) - 메모리의 낮은 주소에서 높은 주소의 방향으로 할당되며, 런타임 시에 크기가 결정된다.
- 프로그램에 필요한 개체의 개수나 크기를 미리 알 수 없는 경우 사용 가능
- 사용자가 직접 관리할 수 있는 영역으로,
- Stack 영역
함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역
으로, 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸한다.- 함수의 호출 정보를 스택 프레임(Stack frame)이라고 한다.
- 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.
마지막 수정일자