![Linux 프로세스의 가상 메모리 구조](https://linux55.com/image/180487/Linux%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EA%B0%80%EC%83%81%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EA%B5%AC%EC%A1%B0.png)
가상 메모리를 다음과 같이 보여주는 교과서를 읽고 있습니다.
Linux는 또한 연속적인 가상 페이지 세트(시스템의 총 DRAM 크기와 동일한 크기)를 해당하는 연속적인 물리적 페이지 세트에 매핑합니다. 이는 커널이 물리적 메모리의 특정 위치에 액세스할 수 있는 편리한 방법을 제공합니다.
나는 여기서 약간 혼란 스럽습니다. 제 생각에는 두 번째 부분인 "물리적 기억"을 가리키는 것 같아요. 하지만 i가 물리적 메모리의 특정 위치에 액세스하는 편리한 방법이라는 것은 무엇을 의미합니까? 특정 위치에 액세스하려면 CPU는 여전히 TLB에서 사용할 수 있는 가상 주소로 명령을 발행해야 하며, 이는 물리적 메모리에 액세스하기 위한 물리적 주소를 생성하므로 "물리적 메모리" 부분은 정확히 무엇입니까? ? 을 위한?
답변1
실제 메모리를 매핑하는 부분은 실제로 실제 메모리에 액세스하는 편리한 방법을 제공하기 위한 것입니다. 이 매핑을 사용하는 아키텍처에서는 다음과 같습니다.x86-64addr
, 가상 주소 +에 액세스하면 모든 물리적 주소에 액세스할 수 있습니다 .page_offset_base
addr
이 매핑이 없으면 지정된 물리적 주소에 액세스하려면 해당 주소가 포함된 매핑을 찾거나, 존재하지 않는 경우 매핑을 만들어야 합니다. 이것은 훨씬 더 비쌉니다.