What is RAM

What is RAM

What is RAM


  • RAM이란 Random Access Memory로 ROM Read 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분 정도 데이터가 유지 될 수 있는 메모리

 

메모리 구조


ram

  • 프로그램이 실행되기 위해서는 프로그램이 메모리에 로드(load)되어야 하며, 이에따라 변수들이 저장될 메모리가 필요하다.
    • 즉, 위 사진과 같이 프로그램의 실행을 위해 Code, Data, Heap, Stack 영역을 할당 받을 수 있다.

 

  • Code 영역
    • 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 부른다.
    • 상수 및 컴파일 될 기계어가 들어가며, 프로그램이 시작하고 종료될 때까지 메모리를 점유한다.
    • CPU에서는 Code 영역에 저장된 명령어를 순차적으로 가져가 처리한다.

  • Data 영역
    • 프로그램의 전역 변수와 정적(Static) 변수가 저장되는 영역으로 Data 영역 또한 프로그램이 시작하고 종료될 때까지 메모리를 점유한다.

  • Heap 영역
    • 사용자가 직접 관리할 수 있는 영역으로, 사용자에 의해 동적으로 메모리 공간이 할당되고 해제된다. (malloc() 또는 new 연산자를 통해 할당 / free() 또는 delete 연산자를 통해서 해제)
    • 메모리의 낮은 주소에서 높은 주소의 방향으로 할당되며, 런타임 시에 크기가 결정된다.
    • 프로그램에 필요한 개체의 개수나 크기를 미리 알 수 없는 경우 사용 가능

  • Stack 영역
    • 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역으로, 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸한다.
    • 함수의 호출 정보를 스택 프레임(Stack frame)이라고 한다.
    • 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다.

 

RSS Feed
마지막 수정일자