2013-12-18 2 views

답변

2

페이지 크기가 더 작은 경우 오류 비율이 줄어들고 다른 방향으로 극단적 인 예가 고려되는 이유를 고려하십시오. 실제 메모리가 2GB이고 크기가 1GB 인 페이지가 있다고 가정합니다. 2GB 이상의 가상 메모리를 할당하는 즉시 적어도 3 페이지를 가지게되며 그 중 2 페이지 만 메모리에 저장됩니다. 1-in-3 메모리 액세스가 넘으면 페이지 오류가 발생합니다.

페이지 크기가 더 작 으면 더 세분화되어 OS에서보다 많은 대상 스와핑을 수행 할 수 있습니다.

물론 항상 그렇지는 않습니다. 단점이 있습니다. 하나는 페이지 크기가 작을수록 더 많은 페이지를 의미하므로 페이지를 관리하는 데 더 많은 오버 헤드가 발생합니다.

페이지 폴트를 줄이는 한 가지 방법은 같은 페이지에서 동시에 사용 될 가능성이있는 메모리를 할당하는 것에 관한 스마트 한 메모리 할당기를 사용하는 것입니다.

예를 들어 응용 프로그램 수준에서 버킷 할당 자 (example)를 사용하면 응용 프로그램이 응용 프로그램에서 할당 할 메모리 덩어리를 요청할 수 있습니다. 응용 프로그램은 프로그램 실행의 특정 단계에 대해 버킷을 사용하고 버킷을 하나의 단위로 해제 할 수 있습니다. 이렇게하면 프로그램의 활성 및 비활성 부분이 동일한 실제 페이지에서 메모리 할당을 수신하지 않도록하는 메모리 조각화를 최소화하는 데 도움이됩니다.

+0

답변 해 주셔서 감사합니다. 하지만 작은 페이지 크기 이외의 페이지 폴트를 줄이는 다른 방법이 있습니까 ?? – eChung00

+0

몇 가지 생각을 추가했습니다. –

+0

* 큰 * 페이지를 사용하는 * 간단한 * OS (적어도 메모리 압력이 낮은 페이지는 프리 페치하지 않음)를 사용하면 페이지 크기가 절반 인 경우 인접 페이지의 프리 페치를 효과적으로 수행하여 페이지 오류 수를 줄일 수 있습니다. 페이지 크기도 TLB 성능에 영향을줍니다. 더 큰 페이지는 주어진 수의 항목에 대해 더 많은 TLB 범위를 제공하므로 페이지 크기를 최적화하는 것이 분명하지 않습니다. ISA는 페이지 크기의 다양성을 지원하지 않아서 선택을 단순화하지만 최적화를 방해 할 수 있습니다. (계층 형 페이지 테이블을 사용하면 거대한 페이지에서 수준을 건너 뛰고 작은 페이지를 절약 할 수 있습니다.) –