저는 Debian Linux를 실행하고 있습니다. uname -m
라고 i686
32 비트 아키텍처 기계를 의미하는 pae
플래그 사용 가능. getconf LONG_BIT
입니다 32
. 설치된 RAM 용량은 6GB입니다.
내 /proc/cpuinfo
항목이 address sizes : 40 bits physical, 48 bits virtual
있습니다. 그러나 내 프로그램은 32 비트 주소 만 생성합니다. ( Address of x is 0xbfbaf5cc
)
로 표시된 48 비트 가상 주소 cat /proc/cpuinfo
와 C 프로그램에서 생성 한 가상 주소 의 관계를 이해하지 못합니다 . 전체 CPU 정보는 여기 에서 찾을 수 있습니다.
누군가 설명 할 수 있습니까?
PAE 는 가상 주소에 대해 아무것도 변경하지 않습니다. 이름에서 알 수 있듯이 실제 주소에 관한 것입니다. 애플리케이션 프로그래머로서 PAE는 당신을 위해 아무것도 변경하지 않습니다. 프로그램에는 여전히 32 비트 주소 공간이 있으며,이 중 커널은 약 1 비트를 사용합니다 (Linux는 컴파일 옵션에 따라 사용자 공간에 1GB, 2GB 또는 3GB를 부여합니다). 더 큰 주소 공간을 원하면 64 비트 시스템이 필요합니다.
PAE의 요점은 커널이 4GB 이상의 물리적 RAM을 처리 할 수 있도록하는 것입니다. 이 모든 RAM을 사용하려면 각각 최대 2GB (또는 1GB 또는 3GB)까지 매핑 할 수있는 여러 프로세스가 필요합니다.
PAE 모드에서 MMU 테이블은 3 레벨 테이블을 사용하여 32 비트 가상 주소를 40 비트 물리적 주소에 매핑합니다 (MMU 테이블이 32 비트 가상 주소를 2 개를 사용하여 32 비트 물리적 주소에 매핑하는 비 PAE 모드와는 달리). 레벨 테이블).
"48 비트 가상"표시는 CPU의 기능을 나타냅니다. 이것은 CPU가 64 비트라는 것을 의미한다고 생각합니다 (즉, amd64 일명 x86-64 를 지원하는 것 ). 48 비트 가상 주소를 사용하려면 64 비트 운영 체제를 실행해야합니다. 여기서 48 비트는 응용 프로그램 프로그래머에게 약간 혼란 스럽습니다. CPU는 주소의 48 비트 만 변환하지만 주소는 64 비트로 인코딩됩니다. 포인터는 6이 아니라 8 바이트를 차지합니다. 상위 16 비트는 다음에서 사용하는 추가 태그를 포함 할 수 있습니다. 운영 체제 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다