이 질문이 Linux 배포판에 따라 달라지는 경우 "일반적인 방법"(예: Linux 배포판에서 가장 일반적인 구현)으로 답변해 주십시오.
프로세스의 페이지 테이블에서 우리가 찾고 있는 페이지가 주 메모리에 매핑되는 물리적 방향을 찾을 수 있습니다. 또는 찾고 있는 페이지가 주 메모리에 없고 디스크에서 캡처해야 하는 경우 디스크에 대한 포인터를 찾을 수 있습니다. 디스크. 하지만 내 질문은: 우리가 찾고 있는 페이지가 스왑에 배치되면 프로세스의 페이지 테이블에서 무엇을 찾을 수 있을까요? 디스크에 대한 포인터(그러나 스왑 영역의 페이지에 대한 포인터)를 찾거나 물리적 방향을 찾을 수 있지만 이 물리적 방향은 "가상 방향"이므로 mainMemory + swapArea 통합 메모리를 만듭니다(예: 16GB를 사용하는 경우). 주 메모리) 메모리 + 2GB 스왑 메모리 페이지 테이블에서 우리가 찾고 있는 페이지가 X 방향(X는 17GB에 해당하는 방향)에 있음을 볼 수 있습니다. 즉, 스왑 메모리에서 찾을 수 있다는 뜻입니다(왜냐하면 > 16GB 방향))? 기억하세요. 우리는 16GB 메인 메모리 + 2GB 스왑 메모리를 가정하고 있습니다.
답변1
스왑 아웃되는 페이지에 대한 페이지 테이블 항목에는 해당 사실을 나타내는 비트(최소 하나, 세부 사항은 아키텍처에 따라 다름)와 스왑된 페이지를 설명하는 정보에 대한 두 부분으로 구성된 포인터가 포함되어 있습니다. 각 전환 장치 또는 파일에는 해당하는swap_info
구조, 각각은 페이지 테이블 항목을 스왑 장치 또는 파일의 위치에 연결하는 매핑을 가지고 있습니다.
바라보다커널은 스왑 파티션\파일의 스왑 메모리 페이지를 어떻게 처리합니까?그리고"교환 관리" 장멜 고먼의Linux 가상 메모리 관리자 이해더 알아보기.