보통 32 비트 컴퓨터에서 일반 C 프로그램에서 사용되는 포인터의 크기는 32 비트입니다. PAE가있는 x86 시스템에서는 어떻습니까?PAE 시스템에서 C의 포인터 크기는 얼마입니까?
답변
PAE는 페이지 테이블의 구조를 변경하여 32 비트 이상의 물리적 메모리를 처리 할 수 있도록합니다. 가상 메모리 주소 지정은 변경되지 않은 채로 남아 있습니다. 사용자 공간 응용 프로그램의 포인터는 여전히 32 비트입니다.
즉, 32 비트 응용 프로그램은 PAE 시스템에서 수정되지 않고 사용할 수 있지만 여전히 4GB의 메모리 만 사용할 수 있습니다.
아직 32 비트입니다.
PAE는 물리적 메모리 주소의 크기를 늘려 운영 체제가 응용 프로그램을 실행하는 데 4GB 이상의 RAM을 사용할 수 있도록합니다. 응용 프로그램을 실행하기 위해 운영 체제는 더 큰 실제 주소를 32 비트 가상 주소로 매핑합니다. 즉, 각 응용 프로그램의 주소 공간은 여전히 4GB로 제한됩니다.
이 32 bit
only.Because는
PAE is a feature to allow 32-bit central processing units (CPUs) to access a physical address space (including random access memory and memory mapped devices) larger than 4 gigabytes.
을 볼 수 있습니다. 그 범위를 벗어나는 것을 사용할 때마다 시스템 호출을 사용하여 다른 범위를 매핑해야합니다. 창 (포인터) 내에서 오프셋을 사용하여 다중 힙 사용을 고려하십시오. 그러면 전체 힙 포인터와 힙 식별자 (구조)가 완전히 64 비트가됩니다. 현재 힙 외부로 나가야 할 때마다 다음을 수행해야합니다. 그들을 전환하십시오.
응용 프로그램 코드 또는 커널 코드에 대해 이야기하고 있습니까? –
@DavidHeffernan 응용 프로그램 코드 –
응용 프로그램 관점에서 볼 때 포인터는 여전히 32 비트입니다. 모든 PAE 사양은 커널 측면에 있습니다. –