가상 메모리 및 페이징
가상 메모리는 각 프로그램에 자체적인 크고 연속적인 주소 공간을 제공하며, 하드웨어와 운영 체제는 이를 고정 크기 페이지 단위로 물리적 메모리에 매핑하여 격리, 보호 및 물리적으로 존재하는 것보다 더 많은 메모리가 있는 것처럼 보이게 합니다.
Definition
가상 메모리는 프로그램이 사용하는 가상 주소를 페이지 테이블을 통해 물리적 메모리 주소에 매핑하는 메모리 관리 기법으로, 메모리를 고정 크기 페이지로 분할하고 필요에 따라 페이지가 물리적 메모리 또는 보조 저장소에 상주할 수 있도록 합니다.
Scope
이 주제는 페이지 테이블을 통한 주소 변환, 변환을 캐시하는 변환 색인 버퍼(TLB), 페이지 폴트 및 요구 페이징, 페이지 교체 및 워킹-셋 원리, 그리고 가상 메모리가 제공하는 보호 기능을 다룹니다. 이는 아키텍처와 운영 체제의 경계에 있습니다. 페이징된 데이터의 파일 저장(파일 시스템) 및 온칩 데이터 캐싱(캐시 구성 및 정책)은 제외하지만, 이 둘 모두와 상호 작용합니다.
Core questions
- 페이지 테이블을 통해 가상 주소가 물리적 주소로 어떻게 변환됩니까?
- TLB는 변환을 어떻게 가속화하며, TLB 미스 시 어떤 일이 발생합니까?
- 페이지 폴트 시 어떤 일이 발생하며, 요구 페이징은 어떻게 처리됩니까?
- 워킹-셋 개념은 페이지 교체를 어떻게 안내하고 스레싱을 방지합니까?
Key concepts
- 가상 및 물리적 주소 공간
- 페이지 및 페이지 프레임
- 페이지 테이블
- 변환 색인 버퍼(TLB)
- 페이지 폴트 및 요구 페이징
- 페이지 교체
- 워킹-셋 및 스레싱
- 메모리 보호
Key theories
- 워킹-셋 모델
- 워킹-셋은 프로세스가 최근 시간 창 동안 참조하는 페이지들의 집합입니다. 각 활성 프로세스의 워킹-셋을 물리적 메모리에 상주시키면 과도한 페이징으로 성능이 저하되는 스레싱을 방지하고, 교체 및 승인 결정에 정보를 제공합니다.
Mechanisms
프로그램의 가상 주소는 페이지 번호와 오프셋으로 분할됩니다. 페이지 번호는 페이지 테이블(종종 다단계)을 인덱싱하여 물리적 프레임을 찾습니다. TLB는 모든 접근에서 테이블을 탐색하는 것을 피하기 위해 최근 변환을 캐시합니다. 참조된 페이지가 상주하지 않으면 페이지 폴트가 제어권을 운영 체제로 넘겨주고, 운영 체제는 보조 저장소에서 페이지를 가져오며 지역성 및 워킹-셋 동작에 따라 교체 정책에 따라 다른 페이지를 제거할 수 있습니다.
Clinical relevance
가상 메모리는 최신 운영 체제의 기본입니다. 이는 보안 및 안정성을 위해 프로세스를 서로 격리하고, 많은 프로그램이 물리적 메모리를 공유할 수 있도록 하며, 물리적 RAM보다 큰 프로그램도 실행할 수 있도록 합니다. TLB 및 페이지 폴트 동작은 성능에 크게 영향을 미치며, 주소 공간 레이아웃은 보호 및 메모리 안전 방어의 기반이 됩니다.
History
가상 메모리는 1960년대 초 맨체스터의 아틀라스(Atlas) 컴퓨터에서 시작되었으며, 페이징 및 페이지 폴트 메커니즘을 도입했습니다. 데닝(Denning)의 1968년 워킹-셋 모델은 지역성 및 스레싱(thrashing)에 대한 원칙적인 설명을 제공했습니다. TLB 및 다단계 페이지 테이블을 통한 하드웨어 지원과 나중에 대용량 페이지와 같은 기능은 가상 메모리를 범용 시스템에서 보편화시켰습니다.
Key figures
- Peter J. Denning
- Maurice Wilkes
- John L. Hennessy
- Abraham Silberschatz
Related topics
Seminal works
- denning1968
- hennessy2019
- silberschatz2018
Frequently asked questions
- 페이지 폴트 시 어떤 일이 발생합니까?
- 페이지 폴트는 프로그램이 현재 물리적 메모리에 없는 가상 페이지에 접근할 때 발생합니다. 하드웨어는 운영 체제로 트랩을 발생시키고, 운영 체제는 보조 저장소에서 페이지를 찾아 비어 있거나 제거된 프레임으로 가져오고, 페이지 테이블을 업데이트한 다음 아무 일도 없었던 것처럼 프로그램을 다시 시작합니다.
- 스레싱(thrashing)이란 무엇입니까?
- 스레싱은 활성 프로세스의 결합된 워킹-셋이 물리적 메모리를 초과할 때 성능이 급격히 저하되는 현상으로, 시스템이 유용한 작업을 수행하기보다는 데이터를 페이징하는 데 대부분의 시간을 소비하게 됩니다. 워킹-셋을 상주시키거나 부하를 줄이면 이를 방지할 수 있습니다.