메모리란 ?

이상민·2024년 10월 10일

CS공부

목록 보기
9/18

메모리(Memory)

메모리란 컴퓨터에서 데이터를 저장하고 처리하는데 사용되는 임시 저장 공간이다.
메모리는 CPU와 가까운 위치에 있어 데이터 접근 속도가 빠르며
프로그램 실행 중 필요한 데이터를 저장하거나 불러오는데 사용된다.

Memory 종류

주기억장치의 종류에는 크게 RAM과 ROM다음과 같은 유형으로 나눌 수 있다.

1. RAM(랜덤 액세스 메모리)

RAM이란 컴퓨터가 현재 실행중인 프로그램과 그 프로그램이 필요로 하는 데이터를 저장하는 읽기와 쓰기 모두 가능한 휘발성 메모리로, 전원이 꺼지면 RAM에 저장된 명령어와 데이터가 모두 사라진다.

그렇다면 RAM 용량은 컴퓨터 성능에 어떤 영향을 미칠까? RAM 용량이 크면 어떤 점이 좋을까?

CPU가 실행하고 싶은 프로그램이 보조기억장치에 있다면 이를 RAM으로 가져와야 할 텐데,

RAM 용량이 적다면 보조기억장치에서 실행할 프로그램을 가져오는 일이 자주 발생하여 실행 시간이 길어진다.

예를 들면 아래 그림처럼 RAM 용량이 프로그램 A, B, C 중 하나만 저장할 수 있을 만큼 작다면 CPU가 프로그램 A를 실행하고 싶을 때는

보조기억장치에서 프로그램 A를 RAM으로 가져오고,

프로그램 B를 실행하고 싶을 때는 다시 프로그램 B를 RAM으로 가져오고,

프로그램 C를 실행하고 싶을 때는 또 다시 프로그램 C를 RAM으로 가져와야 한다.

하지만 RAM 용량이 충분히 크다면 보조기억장치에서 많은 데이터를 가져와 미리 RAM에 저장할 수 있다. 이는 많은 프로그램을 동시에 실행하는 데 유리하다.
CPU가 실행할 프로그램을 책에 비유해 생각해보자.보조기억장치는 책이 꽂혀있는 책장과 같고, RAM은 책을 읽을 수 있는 책상과 같다고 생각해 봅시다.

책상이 크다면 책장으로부터 많은 책을 미리 책상으로 가져와 여러 권을 동시에 읽을 수 있기 때문에 책을 가져다가 다시 갔다 하는 시간을 절약할 수 있습니다.

즉 RAM 용량이 크면 많은 프로그램들을 동시에 빠르게 실행하는 데 유리합니다.

그럼 RAM 용량이 무지막지하게 크면 프로그램 실행 속도는 그에 비례하여 빨라질까? 그렇지 않다.

RAM 용량이 커지면 프로그램 실행 속도가 어느 정도 증가하는 것은 맞지만, 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가하지는 않는다.

책을 100권 이상 올려놓을 수 있는 책상에서 책을 읽든, 1,000권 이상 올려놓을 수 있는 책상에서 책을 읽든 간에 책장을 오가는 시간에는 별 차이가 없는 것과 마찬가지...

이처럼 RAM 용량이 충분히 크다면 프로그램 A, B, C를 보조기억장치에서 여러 번 가져오는 수고를 덜 수 있다.

2. ROM(읽기 전용 메모리)

ROM이란 컴퓨터의 기본적인 부팅 프로세스나 하드웨어 초기화에 필요한 데이터를 저장하는 읽기 전용 비휘발성 메모리로, 사용자에 의해 수정되지 않으며, 전원이 꺼져도 데이터가 유지된다.

3. 캐시 메모리

캐시 메모리란 컴퓨터 시스템 향상을 위해서 CPU와 주기억장치 사이에 있는 아주 작은 비싼 메모리로, CPU와 RAM 사이에 위치하며, CPU가 자주 사용하는 데이터를 임시로 저장한다.
CPU의 구성요소중 캐시에 저장된 메모리를 의미

  • 캐시 메모리에는 CPU 구성중에서 보았던 L1캐시메모리와 달리 메모리그룹에 속한 CPU와 별개로 구성되어있는 캐시메모리는 L2 캐시메모리, L3 캐시메모리 라고 부른다.

메모리의 주소 공간(Address Space)

주소 공간이란 간단하게 프로세스가 메모리에 접근할 수 있는 주소의 범위 를 뜻한다.

CPU와 실행 중인 프로그램은 현재 메모리 어디에 무엇이 저장되어 있는지를 직접 알고 있지 않다.

이는 메모리에 저장된 정보가 계속해서 변하기 때문이다.

메모리는 새로운 프로그램이 실행될 때마다 정보가 적재되며, 실행이 끝난 프로그램은 삭제된다.

또한, 동일한 프로그램을 여러 번 실행하더라도 각각의 실행마다 적재되는 주소가 다를 수 있다.

예를 들어, 1500번지에 적재되었던 프로그램을 다시 실행하면 3000번지에, 또 다시 실행하면 2700번지에 적재될 수 있다.

이런 상황에서 CPU와 실행 중인 프로그램이 현재 메모리 어디에 무엇이 저장되어 있는지를 알고 있는 것은 어렵다.

따라서 CPU와 실행 중인 프로그램은 메모리의 물리 주소보다는 논리 주소를 사용한다.
운영 체제는 논리 주소를 실제 메모리의 물리 주소로 변환하는 작업을 담당하며,

이를 통해 CPU와 프로그램은 메모리의 논리 주소를 사용하여 데이터나 명령어에 접근할 수 있다.

이렇게 논리 주소와 물리 주소를 구분함으로써 운영체제는 프로세스마다 고유한 메모리 공간을 할당하고 관리하여 메모리 관리와 프로그램 실행을 효율적으로 처리할 수 있다.

주소 공간은 크게 다음 2가지 형태로 나눌 수 있다.

1. Physical Address Space(물리 주소 공간)

물리적 주소 공간이란 말 그대로 정보가 실제로 저장된 하드웨어 상의 주소로, 실제 컴퓨터의 물리적 메모리(RAM)의 주소를 나타낸다. 이 공간은 하드웨어가 직접 접근할 수 있는 메모리 주소를 말한다.

3. Virtual Address Space(가상(논리) 주소 공간)

가상 주소 공간이란 각 프로세스마다 독립적으로 할당되어 있는 주소 공간으로, 물리 주소와는 분리되어 있다. 이를 통해 프로세스는 자신의 독립된 메모리 공간을 가지며, 다른 프로세스의 메모리에 영향을 주지 않고 안전하게 실행될 수 있다. OS는 페이지 테이블을 이용해 주소 변환을 한다.

용도에 따른 가상 주소 공간의 구성 요소

Code(코드) : 실행할 프로그램의 코드가 저장되는 영역
Data(데이터) : 전역 변수 및 정적 변수가 저장되는 영역
Heap(힙) : 동적으로 할당되는 메모리 영역
Stack(스택) : 함수 호출과 관련된 지역 변수 및 함수 인자가 저장되는 영역

정리

정리하자면 메모리는 컴퓨터에서 데이터와 명령어를 저장하는 공간으로
RAM, ROM, 캐시 메모리 등 다양한 유형이 있다.

주소 공간은 메모리 내에서 각 데이터의 위치를 나타내며
물리적, (논리적)가상 주소 공간으로 나뉜다.
이러한 주소 공간의 개념은 메모리 관리와 보호에 중요한 역할을 한다.

0개의 댓글