가상 메모리 + 페이징

이번 주는 가상 메모리를 주로 다루는 주이기에 이미 다양한 글로써 가상 메모리를 소개 하고 있다 :

2025.04.23 - [컴퓨터 이론] - [CS:APP] 9 : Virtual Memory [- 9.8]

 

[CS:APP] 9 : Virtual Memory [- 9.8]

가상 메모리가 사용된 뒷 배경을 먼저 보자. 주된 내용은 메모리 공유에 있어 어려움을 겪었다는 것이다.여러 프로세스가 CPU와 메모리를 공유했고, CPU는 수유가 증가해도 점진적으로 느려지지

hyeonistic.tistory.com

2025.04.24 - [별 잡다] - [CS:APP] 9.0 - 9.2 : 가상 메모리 질문 털이

 

[CS:APP] 9.0 - 9.2 : 가상 메모리 질문 털이

2025.04.23 - [컴퓨터 이론] - [CS:APP] 9 : Virtual Memory [- 9.8] [CS:APP] 9 : Virtual Memory [- 9.8]전부 작성된 내용이 아님. 이 부분은 가능한 빨리 작성하겠다.가상 메모리가 사용된 뒷 배경을 먼저 보자. 주된 내

hyeonistic.tistory.com

2025.04.24 - [별 잡다] - [CS:APP] 9.3 - 9.4 : 가상 메모리 질문 털이

 

[CS:APP] 9.3 - 9.4 : 가상 메모리 질문 털이

2025.04.23 - [컴퓨터 이론] - [CS:APP] 9 : Virtual Memory [- 9.8] [CS:APP] 9 : Virtual Memory [- 9.8]전부 작성된 내용이 아님. 이 부분은 가능한 빨리 작성하겠다.가상 메모리가 사용된 뒷 배경을 먼저 보자. 주된 내

hyeonistic.tistory.com

 

왜 이걸 앞에서 논하냐면, 무조건 겹칠 내용이라 ㅠ

가상 메모리는 컴퓨터 시스템에서 메인 메모리의 크기에 관계 없이 프로그램에게 더 큰 메모리 공간을 제공하는 메모리 관리 기술이다.

이 그림은 내 맥북에서 스크린샷 촬영한 내용인데, Google Chrome이 실제 메모리와 가상 메모리 크기가 차원이 다른 크기의 메모리 크기 차이를 가지고 있음을 확인 할 수 있다.

가상 메모리의 개념 도입을 통해 우리는 유연성 있는 프로그램 활약을 기대 할 수 있게 되었다.

 

 

 

  • 기본 원리
    • 프로그램 실행 시, 전체 코드와 데이터가 아닌 필요한 부분만 RAM에 적재한다.
    • 실제 물리 메모리와 사용자가 인식하는 논리 메모리를 분리한다.
    • 하드디스크의 일부 공간을 메모리처럼 활용하여 물리적 제한을 극복한다.
      • 적절하지 못한 컴퓨터에서 고사양 게임을 시도해보았다면 분명 pagefile.sys라는 파일 지우기 같은 성능향상 꼼수를 시도 해본 적 있었을 것이다. 하드디스크의 공간 활용은 이 내용을 포함한다.
  • 주요 목적
    • 물리 메모리보다 큰 프로그램의 실행을 지원한다.
    • 여러 프로세스의 동시 실행 효율화를 꾀 할 수 있다.
    • 프로세스마다 독립적인 메모리 주소 공간 제공으로 충돌을 방지 할 수 있다.
  • 핵심 기능
    • 메모리 보호, 프로세스 간 메모리 침범을 방지하는데 기여하낟.
    • 주소 변환, 가상 주소를 물리 주소로 매핑 할 수 있다.
    • 메모리 최적화, 실제 필요한 부분만 메모리에 적재한다.

페이징

페이징은 가상 메모리를 구현하는 방법 중 하나이지만, 현대 컴퓨터 시스템에서는 필수불가결한 비중이 높은 기법이다 :
페이징은 가상 메모리와 물리적 메모리를 일정한 크기의 블록으로 나누어 관리하는 메모리 기법인데, 이 기법을 통해 프로세스가 사용하는 가상 주소와 물리적 주소 간의 변환이 이루어진다.
  • 별게 다 필수적이네요?
    • 페이징은 가상 메모리와 물리 메모리 간의 주소 변환을 위한 핵심 메커니즘을 제공한다.
    • 페이징은 메모리의 외부 단편화 문제를 효과적으로 해결한다.
    • 페이징은 불연속적인 물리 메모리를 연속적으로 사용 가능하게 한다.
  • 이래서 필수불가결하다고 한다.

  • 구현 방식 및 구성요소
    • 가상 메모리를 Page라는 고정 크기 블록으로 분할한다.
    • 물리 메모리를 Frame이라는 동일한 크기의 블록으로 분할한다.
    • Page Table을 통해 가상 주소와 물리 주소 간 매핑을 관리하게 된다.
  • 다른 방식과의 비교
    • 가상 메모리 구현 방식은 크게 페이징과 세그먼테이션으로 나뉜다.
    • 세그먼테이션은 가변 크기 블록으로 메모리를 관리하는 방식이다.
    • 현대 시스템에서는 페이징이 더 보편적으로 사용된다.

페이징이 아니더라도 가상 메모리의 구현은 가능하지만, 다양한 특징 및 핵심 기능때문에 현대 컴퓨터 시스템에서 가상 메모리를 구현하는데에 있어 사실상 표준적인 방법이 되었다. 리눅스, 윈도우 등 모두 페이징 기법을 기반으로 가상 메모리 구현을 진행하고 있다.