기본적으로 32 비트만으로 8GB를 처리 할 수 없습니다. 특정 시점에서 32 비트를 사용하면 4G 메모리 위치에서만 선택할 수 있습니다.
널리 사용되는 해결 방법은 page tables에서 32 비트보다 큰 실제 주소를 사용하는 것입니다. 이를 통해 운영 체제는 프로그램이 액세스 할 수있는 8GB의 하위 집합을 정의 할 수 있습니다. 그러나이 하위 집합은 4GB보다 클 수 없습니다. x86 PAE이 하나의 예이지만, 동일하게 적용되는 others이 있습니다.
이 해결 방법을 사용하면 운영 체제 자체에서 자체 페이지 테이블을 변경하여 전체 8GB에 액세스 할 수 있습니다. 예 : 메모리 위치에 액세스하기 위해서는 먼저 페이지 테이블을 변경하여 메모리 위치를 자체 주소 공간에 매핑해야만 메모리 위치에 액세스 할 수 있습니다. 물론 이것은 매우 성가신 일입니다. 또한이 유형의 메모리 확장을 고려하지 않고 운영 체제의 일부를 작성하는 경우 문제가 발생할 수 있습니다. 장치 드라이버가 대표적인 예입니다.
이 문제는 새로운 것이 아닙니다. Commodores C64와 같은 8 비트 컴퓨터는 bank switching을 사용하여 16 비트 주소로 64KB 이상에 액세스했습니다. 초기 PC는 expanded memory을 사용하여 640KB 제한을 해결했습니다. Right Thing (TM)은 추악한 솔루션에 의존하기 전에 더 큰 주소로 전환해야합니다.
[실제 주소 확장] (http://en.wikipedia.org/wiki/Physical_Address_Extension) (PAE라고도 함)을 찾고 있습니다. 그래서 프로그래밍 관련 질문입니다; 그래서 당신의 질문은 주제와는 거리가 먼 것 같습니다. –
이것은 주제와 관련이 없습니다. PAE는 하드웨어와 프로그래머 간의 인터페이스 인 명령어 세트 아키텍처의 일부입니다. 베어 메탈을 프로그래밍하는 경우 이러한 유형의 정보를 알아야합니다. –