Linux에서 커널은 모든 TLB 미스 사례를 처리해야 합니까?

Linux에서 커널은 모든 TLB 미스 사례를 처리해야 합니까?

저는 Linux 메모리 관리에 대한 몇 가지 개념을 머릿속에 정리하려고 노력 중이며 다음과 같은 질문이 있습니다.

Linux에서는 TLB 누락이 커널 코드로 처리됩니까? 놓치더라도 쉽게 찾을 수 있어요페이지 테이블에 매핑이 있는지 확인(페이지 순회)[1]? 내 말은, 소위페이지 워킹커널 코드로 실행되나요?

소위인가?페이지 워킹(어떤 종류의 TLB 미스에 대한 응답)은 소프트 페이지 오류로 간주됩니까?

답변1

프로세서에 따라 다릅니다. x86 아키텍처에서 TLB 누락은 하드웨어에 의해 처리되므로 커널에 투명합니다. 커널 코드가 TLB를 처리하는 유일한 시간은 TLB의 내용이 폐기될 때(TLB 플러시)입니다.

"소프트 페이지 오류"는 일반적으로 RAM에 메모리 페이지가 있지만 MMU가 이 상황을 인식하지 못하는 것을 의미합니다. 즉, 페이지 테이블에 해당 페이지 프레임에 대한 항목이 없습니다.

관련 정보