이번 주는 가상 메모리를 주로 다루는 주이기에 이미 다양한 글로써 가상 메모리를 소개 하고 있다 :
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을 통해 가상 주소와 물리 주소 간 매핑을 관리하게 된다.
- 다른 방식과의 비교
- 가상 메모리 구현 방식은 크게 페이징과 세그먼테이션으로 나뉜다.
- 세그먼테이션은 가변 크기 블록으로 메모리를 관리하는 방식이다.
- 현대 시스템에서는 페이징이 더 보편적으로 사용된다.
페이징이 아니더라도 가상 메모리의 구현은 가능하지만, 다양한 특징 및 핵심 기능때문에 현대 컴퓨터 시스템에서 가상 메모리를 구현하는데에 있어 사실상 표준적인 방법이 되었다. 리눅스, 윈도우 등 모두 페이징 기법을 기반으로 가상 메모리 구현을 진행하고 있다.
'컴퓨터 이론' 카테고리의 다른 글
demand-zero memory (0) | 2025.04.28 |
---|---|
동적 메모리 할당 (heap, sbrk, malloc, free) (0) | 2025.04.28 |
CLRS로 레드 블랙 트리 논하기 #2 : 연습 문제 (0) | 2025.04.19 |
문자열을 덜 찾으며 다 찾기 : KMP, 보이어 무어 (0) | 2025.04.15 |
포인터와 구조체 설명하기.. (2) | 2025.04.11 |