어떻게 윈도우 / 리눅스는 메모리 페이지에 액세스 된 마지막 시간을 결정 X64합니까?

나는 :

가상 메모리 시스템은 디스크에 메모리 페이지를 축출하기로 결정하면, 가끔 메모리 페이지의 액세스 마지막으로 축출 된 페이지를 결정하는 데 도움이되는 것을 언급 한 것. 그러나 메커니즘은 메모리 페이지의 액세스의 마지막 시간을 추적하는 데 사용됩니다?

나는 TLB는 페이지의 현재 설정에 대한 정보는없는 그들 모두를 저장 믿습니다. 아니면 단순히 TLB에 존재하지 않는 그 무엇이든 그 기준에 따라 퇴거 게임이다?

mightyWOZ :

페이지 프레임 탈환 알고리즘 ( PFRA 리눅스 커널은) acutally 매우 복잡이며 퇴거하는 페이지를 결정하는 여러 가지 추론을 사용합니다. 실제 결정은 많은 요인에 따라, 그러나 두 눈에 띄는 따르고있다.

1. 최소 최근 사용 (LRU) 목록

다른에 리눅스 분할 메모리 메모리 영역은 각 영역은 영역 기술자 및 다른 것들을 저장 참조와 함께이 기술자가 , 즉 활성 및 비활성 매우 중요한 두 가지 목록을 .

비활성 목록 얼마 동안 액세스되지 않은 페이지가 포함되어있는 동안 활성 목록은 최근에 액세스 한 페이지가 포함되어 있습니다. 다른 페이지 프레임은 하나의 목록에서 다른 및 액세스 패턴에 따라 목록에서 이동합니다.

2. 페이지 기술자 플래그

페이지의 설명에 두 플래그 다음은 해당 페이지가 위의 목록 중 하나에 포함되어 있는지 확인하는 커널 수 있습니다.

PG_lru은 - 페이지가 활성 또는 비활성 페이지 목록에

PG_active 년 - 페이지는 활성 페이지 목록에

리눅스 커널의 이해 가 PFRA 실제로 위의 정보 사용 방법을 설명 할 때 다음 사항을 말한다.

LRU 알고리즘 뒤에 주요 아이디어는 각 페이지와 페이지의 나이를 저장하는 카운터에 연결하는 것입니다 RAM을 - 즉, 시간의 간격은 페이지 마지막 액세스 이후 경과. 이 카운터는 PFRA는 모든 프로세스의 가장 오래된 페이지를 확보 할 수 있습니다. 일부 컴퓨터 플랫폼은 LRU 알고리즘에 대한 정교한 지원을 제공, † 불행하게도, 80 × 86 프로세서 따라서 리눅스 커널은 모든 페이지의 나이를 추적 페이지 카운터에 의존 할 수 없다, 이러한 하드웨어 기능을 제공하지 않습니다. 이러한 제한을 극복하기 위해, 리눅스는 자동으로 페이지 액세스는 하드웨어에 의해 설정되는 각각의 페이지 테이블 엔트리에 포함 된 비트가 상기 접속을 이용한다; 또한, 페이지의 나이는 두 개의 서로 다른 "가장 최근에 사용한 (LRU) 목록 '중 하나의 페이지 기술자의 위치로 표시됩니다.

추천

출처http://43.154.161.224:23101/article/api/json?id=7428&siteId=1