2012-09-11 6 views
0

안녕하세요 사람들은 운영 체제가 확장 가능한 RAM에 사용하는 주소 지정 스키마라는 것에 대해 궁금합니다. 이에 대해 약간의 예를 들어 보겠습니다.확장 가능한 RAM에 사용되는 주소 지정 체계는 무엇입니까?

"컴퓨터에 32 비트 아키텍처가있는 경우 컴퓨터 주소가 32 비트 길이로 2^32 개의 주소 지정 메모리 위치에 약 4GB의 데이터가 있음을 의미합니다."

그러나 실제로 8GB의 RAM 인 4GB의 주 메모리를 추가하면 컴퓨터가 여분의 주 메모리 위치를 어떻게 처리합니까? 추가 메모리가 2^32 인 32 비트 주소 범위를 초과하기 때문입니다.

누구나이 질문에 빛을 낼 수 있습니까?

+1

[실제 주소 확장] (http://en.wikipedia.org/wiki/Physical_Address_Extension) (PAE라고도 함)을 찾고 있습니다. 그래서 프로그래밍 관련 질문입니다; 그래서 당신의 질문은 주제와는 거리가 먼 것 같습니다. –

+0

이것은 주제와 관련이 없습니다. PAE는 하드웨어와 프로그래머 간의 인터페이스 인 명령어 세트 아키텍처의 일부입니다. 베어 메탈을 프로그래밍하는 경우 이러한 유형의 정보를 알아야합니다. –

답변

0

기본적으로 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)은 추악한 솔루션에 의존하기 전에 더 큰 주소로 전환해야합니다.