(CS 지식) 메모리란?

MOON·2024년 10월 14일

CS지식

목록 보기
9/11

메모리

메모리(Memory)란 컴퓨터에서 정보를 처리하기 위해 일시적으로 정보를 보관하는 기억장치를 말합니다. 하드디스크(Hard disk)에 보관된 정보는 전원이 꺼져도 사라지지 않고 보관되지만, 휘발성 메모리에 올라간 정보는 전원이 꺼지면 모두 사라집니다. 주로 우리가 알고 있는 메모리의 의미는 주 기억장치인 램(RAM)을 의미하지만 넓은 의미로는 보조기억장치인 룸(ROM)도 포함이 됩니다.

RAM(Random Access Memory)

RAM은 컴퓨터의 주요 메모리로, 프로그램과 데이터를 임시로 저장하는 공간입니다. CPU가 빠르게 데이터를 읽고 쓰기 위해 사용하는 휘발성 메모리이기 때문에, 컴퓨터를 끄면 RAM에 저장된 정보는 모두 사라집니다.

RAM의 특징

  1. 휘발성(Volatile) 메모리
    • 전원이 꺼지면 저장된 데이터가 사라집니다.
  2. 고속 데이터 처리
    • CPU가 직접 접근해 데이터를 주고받기 때문에 속도가 빠릅니다.
    • 하드디스크와 같은 영구 저장장치보다 수천 배 더 빠르게 데이터를 처리합니다.
  3. 임시 작업 공간 제공
    • 프로그램을 실행하거나 그에 필요한 데이터가 RAM에 적재됩니다.
    • 여러 프로그램을 동시에 실행할 때, 각 프로그램의 데이터를 RAM에 올려 멀티태스킹이 가능해집니다.

이렇듯 위에 특징들의 설명에 나와 있듯이 RAM을 통해 빠르게 데이터를 주고 받아 우리가 좀 더 편리하게 이용할 수 있는 것 같습니다. 저번과제에서 사용한 Redis와 같은 인메모리 DB도 데이터가 메모리(RAM)에 저장하여 바로 불러와 사용하는 것이기에 속도가 빠르다고 하더라고요. 아마 이러한 이유때문인 것 같네요. 굿

주소 공간(Address Space)

주소 공간은 메모리 내의 각 데이터들을 구분하기 위해 부여된 고유한 위치, 주소를 말합니다. 음 마치 아파트 동호수와 같은 개념으로 특정 주소를 말합니다. 이 주소 공간에 저장된 데이터들을 찾기 위해서는 메모리의 정확한 주소(address)를 알아야 합니다.

주소 공간 종류

  • 물리 주소(Physical Address) : 실제 하드웨어 메모리(RAM)의 위치입니다.
  • 가상 주소(Virtual Address) : 프로그램이 사용하는 주소로 운영체제가 물리 주소와 가상 주소를 매핑해 줍니다. 이는 여러 프로그램이 동시에 실행될 때 충돌을 방지하고 메모리를 효율적으로 관리하기 위해 필요합니다.

주소 공간 구조

여러 프로그램(프로세스)이 동시에 실행될 때 같은 메모리 주소를 사용하는 것처럼 보이는 일이 발생합니다. 예를 들면 프로그램(프로세스) A와 B가 같은 주소를 사용한다고 해도 문제 없이 정상작동을 할 겁니다. 정상 작동이 되는 이유는 가상 메모리(Virtual Memory) 때문이라고 합니다.
말 그대로 가상 메모리의 값이 같은 것이지 실제로 물리 주소의 값이 같은 것이 아니기에 가능한 것입니다.

정리한 예시

  • 가상 주소 공간은 각각의 프로그램(프로세스)에게 주어지는 자기만의 책상과 같이 프로그램마다 독립적으로 제공됩니다.
  • 프로세스 A와 B는 둘 다 가상 메모리에서 '0x001'이라는 동일한 가상 주소를 사용할 수 있습니다.
  • 여기서 운영체제를 통해 이 가상 주소를 실제 RAM의 물리 주소로 매핑(변환) 해줍니다.
    • 프로세스 A의 가상 주소 0x001 → 물리 주소 0x1001에 연결
    • 프로세스 B의 가상 주소 0x001 → 물리 주소 0x2001에 연결
      변환된 주소를 확인해 보면 프로세스마다 실제론 서로 다른 물리 주소를 사용하기에 충돌 없이 동작할 수 있었던 것입니다.

참고
https://m.blog.naver.com/lumi-nous/222491369788

profile
개발해서 성공하자

0개의 댓글