프로세스의 페이지 테이블은 언제 메모리에 로드됩니까?

프로세스의 페이지 테이블은 언제 메모리에 로드됩니까?

운영 체제가 특정 프로세스의 페이지 테이블을 언제 주 메모리에 로드하는지 알고 싶습니다. 과정이 정리되는 때인가요? 운영 체제가 프로세스 페이지 테이블을 메인 메모리에 직접 로드할 수 있습니까?

프로세서가 페이지에 해당하는 페이지 오류를 생성하지 않는 한 아무것도 메인 메모리에 들어갈 수 없다는 생각이 있습니다. 페이지 테이블에도 동일하게 적용됩니까? 아니면 내 개념이 잘못되었습니다.

PS: Linux 기반 시스템에 대한 답변을 주시면 감사하겠습니다.

답변1

특정 운영 체제와 프로세서에 대해 언급하지 않았으므로 이 질문에 이론적으로 답변하겠습니다. 이는 대부분의 UNIX 계열 시스템에 적용되지만 미묘한 차이가 있을 수 있습니다.

프로세스의 메모리에 페이지가 있으면 페이지 테이블은 (커널) 메모리에 있어야 합니다. 프로세스를 실행하려면 페이지 테이블을 사용할 수 있어야 하며 프로세스를 실행하도록 선택할 때 활성화되어야 합니다. 일부 시스템에서는 실행 중인 프로세스의 전체 페이지 테이블이 실제로 프로세스 활성화의 일부로 하드웨어에 로드됩니다. 다른 시스템에서는 페이지 테이블이 메모리에 남아 있고 이에 대한 포인터가 하드웨어 레지스터에 로드됩니다.

그러나 프로세스가 완전히 교체되어 더 이상 실제 메모리가 할당되지 않은 경우 페이지 테이블은 실제로 전혀 필요하지 않습니다. 프로그램을 실행하기 위해 페이지가 처음 로드되면 관련 페이지 테이블이 다시 작성될 수 있습니다. 일부 시스템은 이 최적화를 수행하지 않고 대신 커널 공간의 각 프로세스에 대해 활성 페이지 테이블을 유지합니다.

그러나 위의 내용은 일반화된 것이며 구체적인 세부 사항은 매우 다양합니다. 자세한 내용은 RTSL을 참조하세요.

답변2

UNIX에서는 MMU 설명자 오류가 발생한 후 MMU의 페이지 테이블 항목이 "페이지 오류"에서 로드됩니다.

특히 언급한 "페이지 테이블"은 일반적으로 존재하지 않습니다. 커널에는 주소 공간 설명이 있으며 MMU 설명자 오류로 인해 일반적으로 PTE(페이지 테이블 항목)가 생성되고 커널 공간에서 관련 RAM이 할당됩니다.

MMU의 PTE가 제한된 리소스라는 사실로 인해 자동 로딩 MMU가 생성되었습니다. 이러한 MMU의 경우 PTE 이전의 백업 저장소는 "페이지 테이블"처럼 보일 수 있습니다.

관련 정보