가상 메모리와 페이지 파일은 어떤 관계가 있나요?

가상 메모리와 페이지 파일은 어떤 관계가 있나요?

우리는 프로그램이 실행되는 동안 CPU가 가상 주소라고도 알려진 논리 주소를 생성한다는 것을 알고 있습니다. 그런 다음 해당 가상 주소는 MMU(메모리 관리 장치)에 의해 물리적 주소로 변환됩니다. 우리는 가상 메모리가 페이지 파일(스왑 공간)로 알려진 디스크의 일부 부분을 메모리로 사용할 수 있다는 것을 알고 있습니다. 따라서 가상 주소는 메모리(RAM) + 페이지 파일(스왑 공간)의 일부 공간을 가리킵니다. 그러나 CPU가 가상 주소를 생성하고 해당 가상 주소가 항상 메모리(RAM) + 페이지 파일(스왑 공간)의 일부 주소를 가리킬 때 프로그램이 메모리나 페이지 파일에 없는 디스크에서 로드되는 방법은 무엇입니까? 그 주소의 이름은 무엇입니까? 처음에는 논리 주소/가상 주소가 하드 디스크의 물리적 메모리 위치를 가리키는 주소라고 생각했습니다.

나는 매우 혼란스럽다. 도와 주셔서 감사합니다.

답변1

메모리에 없는 페이지는 유효하지 않은 태그로 지정되며, 모든 액세스는 운영 체제에서 페이지가 로드될 수 있는 위치(페이지 파일, 매핑된 파일…)를 검색하고 페이지를 로드하고 페이지 포인터를 업데이트하고 일정을 다시 잡는 페이지 오류를 트리거합니다. 일시 중지된 프로세스.

FreeBSD에는 각 세그먼트(연속 페이지 집합)의 물리적 주소와 해당 페이저 속성(페이저 개체, 인덱스, 파일 설명자…)이 포함된 테이블이 있습니다. Windows에도 비슷한 시스템이 있다고 생각합니다.

답변2

그런 다음 해당 가상 주소는 MMU(메모리 관리 장치)에 의해 물리적 주소로 변환됩니다.

가상 주소는 프로세스의 메모리 내용이 상주하거나 매핑된 경우에만 실제 메모리 주소로 변환될 수 있습니다.
그렇지 않으면 (페이지) 오류가 발생하고 새 매핑이 생성되거나 메모리 내용(예: 필요한 페이지)는 백업 저장소(예: 페이지 파일)에서 검색되어야 합니다. 이 콘텐츠 검색은 저장 장치(예: HDD 또는 SSD)용 장치 드라이버를 사용하여 커널에 의해 수행됩니다. 그 사이에 프로세스 스케줄러는 현재 프로세스를 일시 중지하고 실행할 준비가 된 프로세스를 활성화하여 CPU를 사용합니다.

우리는 가상 메모리가 페이지 파일(스왑 공간)로 알려진 디스크의 일부 부분을 메모리로 사용할 수 있다는 것을 알고 있습니다. 따라서 가상 주소는 메모리(RAM) + 페이지 파일(스왑 공간)의 일부 공간을 가리킵니다.

잘못된.
가상 주소 자체에는 구성 요소나 백업 저장소에 대한 참조가 없습니다.
백업 저장소(예: 페이지 파일)의 구성은 운영 체제(예: 소프트웨어) 커널의 제어를 받습니다.

또한 가상 메모리의 메모리 내용은 페이지 파일이나 스왑 영역에 보관되지 않을 수도 있습니다.
절대 변경되지 않는 프로그램 코드는 교체할 필요가 없으며 프로그램 파일에서 다시 검색할 수 있습니다.
메모리 매핑된 파일은 페이지 파일이나 스왑 영역에 중복된 파일을 두는 대신 직접 액세스됩니다.

따라서 가상 주소 자체는 실제 메모리 매핑을 식별하는 데 정보가 충분하지 않으며 백업 저장소 정보는 더욱 적습니다.

그러나 CPU가 가상 주소를 생성하고 해당 가상 주소가 항상 메모리(RAM) + 페이지 파일(스왑 공간)의 일부 주소를 가리킬 때 메모리나 페이지 파일에 없는 디스크에서 프로그램이 로드되는 방식입니다.

프로그램(또는 모든 파일)은 파일 시스템 인터페이스와 기본 블록 장치 인터페이스를 사용하여 파일 이름으로 액세스됩니다.
주변 장치의 데이터는 (주) 메모리 액세스가 아닌 입/출력 명령/작업을 사용하여 전송됩니다.
I/O 작업의 개념은 메모리 매핑된 I/O의 구현으로 인해 모호해집니다. 여기서 장치 레지스터는 I/O(또는 포트) 공간의 주소가 아닌 메모리 공간의 특수 주소를 사용하여 액세스됩니다.
장치 드라이버는 읽기 및 쓰기 작업을 위해 이러한 장치의 복잡성을 처리하는 커널의 하위 수준 소프트웨어입니다.

이는 단순한 Q&A 형식의 간략한 설명에는 적합하지 않은 기본적인 디지털 컴퓨터 아키텍처 개념입니다.

그 주소의 이름은 무엇입니까?

대용량 저장 장치(예: HDD 및 SSD)(블록 장치라고도 함)는 LBA(논리적 블록 주소)(섹터 번호라고도 함)를 사용하여 장치 수준에서 액세스됩니다. 각 LBA는 일반적으로 512바이트 상당의 고정 크기 데이터의 논리 블록을 참조합니다.

처음에는 논리 주소/가상 주소가 하드 디스크의 물리적 메모리 위치를 가리키는 주소라고 생각했습니다.

잘못된.
대용량 저장 장치(예: HDD 및 SSD)는 LBA(논리 블록 주소)를 사용하여 장치 수준에서 액세스됩니다.
더 높은 수준에서 파일 시스템은 파일 시스템 할당 단위의 주소(예: 클러스터 번호)를 사용하여 파일 내용을 참조합니다. 파일 시스템은 파일 이름과 디렉터리별로 파일을 참조하여 구성을 제공합니다.
더 높은 수준에서는 볼륨 또는 드라이브 관리가 액세스 가능한 파티션과 파일 시스템을 처리합니다.

LBA와 가상 메모리 주소 사이에는 고정된 관계나 연결이 없습니다.
백업 저장소(예: 페이지 파일)의 내용과 가상 메모리 간의 모든 관계는 프로세스 정보와 페이지 테이블과 같은 정보를 사용하여 커널의 제어를 받습니다.

최신 가상 메모리 구현은 대부분 고정 크기 페이지를 사용하지만 다른 방식도 가능합니다.

관련 정보