컴퓨터 시스템의 메모리 관리 기술 중 하나로, 물리적 메모리(RAM)의 한계를 극복하고 프로그램이 더 많은 메모리를 사용할 수 있도록 하는 방법
가상 주소를 물리 주소로 변환하는 데 사용. 각 프로세스는 고유한 페이지 테이블을 가지며, 페이지 테이블은 가상 페이지 번호를 물리 페이지 번호에 매핑.
여러 개의 엔트리로 구성되어 있다.
가상 페이지 번호 : 가상 메모리 페이지 번호
물리 페이지 번호 : 물리 메모리 페이지 번호. 이는 물리 메모리의 프레임 가리킨다.
상태 비트
: 페이지의 상태를 나타내는 비트들로 구성.
유효 비트 : 페이지가 물리 메모리에 로드되어 있는지 여부
수정 비트 : 페이지가 수정되었는지 여부 나타냄
참조 비트 : 페이지가 최근에 참조되었는지 여부
사용자/커널 비트 : 페이지에 대한 접근 권한을 나타낸다. 사용자 모드에서 접근 가능한지, 커널 모드에서만 접근 가능한지
캐시 메모리. 페이지 테이블의 최근 변환 정보를 저장하여 가상 주소를 물리 주소로 변환하는 시간을 크게 줄여준다.
구조 : 각 엔트리는 가상 페이지 번호와 이에 대응하는 물리 페이지 번호를 저장. 또한 각 엔트리에는 여러 상태 비트 포함.
동작
:
TLB 히트 - CPU가 가상 주소를 참조할 때, 해당 가상 페이지 번호가 TLB에 이미 존재하는 경우.
TLB 미스 - CPU가 가상 주소를 참조할 때, 해당 가상 페이지 번호가 TLB에 없는 경우
구성 요소
:
가상 페이지 번호 : 가상 주소의 상위 비트로, 가상 페이지 식별
물리 페이지 번호 : 물리 주소의 상위 비트로, 물리 메모리의 특정 페이지 식별
상태 비트 : 페이지의 유효성, 수정 여부, 접근 권한 등을 나타내는 비트
TLB 교체 알고리즘
:
TLB 공간은 제한되어 있으므로, 새로운 엔트리를 로드할 때, 기존의 엔트리를 교체해야 할 경우가 많다. 대표적인 알고리즘
CPU가 특정 가상 주소에 접근하려고 할 때 페이지가 물리 메모리에 존재하지 않는 경우 발생. 페이지 폴트는 페이지를 물리 메모리로 로드할 필요가 있음을 알리는 인터럽트.
원인
불필요한
페이지 참조 : 프로세스는 아직 물리 메모리에 로드되지 않은 페이지에 접근하려고 할 때 발생. 이는 정상적인 상황으로, 필요한 페이지를 디스크에서 물리 메모리로 로드.
잘못된
페이지 참조:프로세스가 자신의 주소 공간 밖의 페이지에 접근하려고 할 때 발생. 이는 예외 상황으로, 일반적으로 접근 위반 오류 발생
메모리 부족으로 인해 페이지가 디스크로 스왑 아웃되어 있는 경우. 해당 페이지에 접근하려고 할 때 페이지 폴트 발생.
지연 로딩. 필요한 시점까지 리소스나 데이터를 로드하지 않고, 실제로 필요할 때 로드하는 방법.
이 기법은 성능 최적화와 자원 사용의 효율성을 높이는 데 중요한 역할.
기본 원리
페이지 교체 정책. 물리 메모리가 꽉 찬 경우 어떤 페이지를 내보내고 새로운 페이지를 로드할지를 결정하는 알고리즘.
주요 페이지 교체 정책
FIFO - 가장 먼저 들어온
페이지를 가장 먼저
보낸다. 구현은 간단하지만, 오래된 페이지가 자주 사용될 경우 성능 저하.\
OPT - 앞으로 가장 오랫동안 사용되지 않을
페이지
를 교체. 이론적으로 가장 적은 페이지 폴트를 보장하지만, 미래의 참조를 예측해야 하므로 실제 시스템 구현 불가.
LRU - 가장 최근에 사용되지 않은 페이지 교체. 과거의 사용 기록을 기반으로 하며, 자주 사용되는 페이지를 남기고, 덜 사용된 페이지를 교체
LFU - 사용 빈도가 가장 적은 페이지 교체. 페이지의 사용 빈도를 카운터하여 교체 우선순위를 정한다.
MFU - 가장 많이 사용된
페이지를 교체하는 방식. 자주 사용된 페이지가 더 이상 사용되지 않을 가능성이 높다는 가정에 기반.
페이지 교체 정책의 평가 기준
익명 페이지. 가상 메모리 시스템에서 디스크에 존재하지 않는, 즉 파일 시스템에 속하지 않는 페이지 의미.
이러한 페이지는 주로 프로그램이 실행 중에 동적으로 할당된 메모리를 구성되며, 이는 예를 들어 힙 or 스택과 같은 영역에 할당된 메모리 포함.
주요 특징
임시
로 저장
하기 위해 사용되는 디스크의 특별한 영역가상 메모리 시스템에서 물리 메모리가 부족할 때사용되는 디스크 공간.
스왑 디스크는 운영체제가 데이터를 저장하는 데 사용되며, 메모리 관리의 중요한 부분. 스왑 디스크는 주로 익명 페이지와 잘 알려지지 않은 메모리 페이지를 저장하는데 사용.
주요 개념
스왑 디스크에 할당된 공간. 물리 메모리가 부족할 때 메모리 페이지를 저장. 스왑 공간은 디스크의 특정 파티션이나 피일로 설정o
운영체제가 메모리 페이지를 스왑 디스크로 옮기거나, 스왑 디스크에서 다시 메모리로 가져오는 과정.
메모리 페이지 → 스왑 디스크로 옮기는 과정. 이 과정을 통해 물리 메모리에서 사용하지 않는 페이지를 해제하여 다른 중요한 작업에 사용o
작동 방식
메모리(부족 감지) > 페이지(선택) > 페이지(아웃) > 메모리(해제) > 페이지(인)
가상 메모리 시스템에서 디스크의 파일과 연관된 메모리 페이지.
이러한 페이지는 특정 파일의 내용을 메모리에 매핑하여 사용되며, 파일의 내용을 읽거나 쓸 때 사용. 주로 메모리 맵 파일을 통해 구현
주요 개념
메모리 맵 파일
파일 매핑
페이지 폴트
특징 | File-backed Page | Anonymous Page |
---|---|---|
연관된 파일 | 파일과 연관 | 파일과 연관되지 않음 |
용도 | 파일 입출력, 메모리 맵 파일 | 동적 메모리 할당, 스택, 힙 |
저장 위치 | 물리 메모리 및 원본 파일 | 물리 메모리 및 스왑 공간 |
예시 | mmap을 사용한 파일 매핑 | malloc, 스택, 힙 |