2011-11-13 2 views
5

몇 가지 기사를 읽음으로써 필자는 PAS (Process Address Space)와 VM (Virtual Memory)을 동일하게 생각했습니다. 내 이해가 결함이 있습니까? 어떤 사람이 이것에 약간의 빛을 비춰 주시겠습니까? 나는 혼란 스럽다.프로세스 주소 공간과 가상 메모리

프로세스 주소 공간이 RAM 또는 실제 메모리와 아무런 관련이 없음을 알고 있습니다.

하지만 PAS와 VM에 대해 혼란스러워합니다.

답변

7

첫 번째 :"memory" is not equal to "address space". 주소 공간은 가능한 주소 범위입니다. 나는. 32 비트 포인터의 경우 4Gb이고 64 비트 포인터의 경우 16Gb입니다. 반면에, 기억은 ... 음, 실제로 사용할 수있는 기억입니다 (최소한 가능하면). 따라서 "프로세스 메모리"가 "가상 메모리"와 동일한 지 또는 "프로세스 주소 공간"이 "가상 주소 공간"과 같은지 묻는 중입니다.

두 번째 : 가상 메모리는 사용자 모드에서 사용할 수있는 유일한 메모리입니다. 실제 메모리는 액세스 할 수 없습니다. 물리적 메모리는 커널 모드 및 드라이버 용입니다. 사용자 모드 응용 프로그램은 가상 메모리에서만 작동합니다. 따라서 모든 메모리는 사용자 모드에서 가상입니다. "가상"을 추가 할 필요가 없습니다. 기본적으로입니다.

따라서 "프로세스 주소 공간"= "[가상] 프로세스 주소 공간"즉 단일 프로세스의 가상 주소 공간. "메모리"= "프로세스 메모리"= "[가상] 프로세스 메모리"에도 동일하게 적용됩니다.

세 번째 : 이제 "가상 메모리"라는 용어는 "하나의 프로세스"보다 큰 "시스템 가상 메모리"(글로벌 일)를 나타냅니다. 반면에 주소 지정은 프로세스에 고유 한 것이므로 "시스템 가상 주소 공간"(모든 프로세스와 커널의 전체 주소 공간) 같은 것은 없습니다.

그래서, 대답은 :

  1. "프로세스 주소 공간"= "가상 주소 공간"= "주소 공간"
  2. "프로세스 메모리"<> "가상 메모리"

예를 들어 프로세스 주소 공간의 일반적인 제한은 4GB (32 비트 응용 프로그램의 경우)입니다. 그러나 프로세스 가상 메모리의 일반적인 한계는 2Gb입니다 (32 비트 컴퓨터에서는 3Gb까지, 64 비트 컴퓨터에서는 4Gb까지 확장 가능).

반면에 가상 메모리는 프로세스보다 큽니다. CreateFileMapping 함수를 통해 메모리를 할당하는 경우를 생각해보십시오. 64 Gb 가상 메모리 블록을 만들 수 있습니다. 64Gb> 2Gb이더라도 괜찮습니다. 물론 프로세스 주소 공간이 4Gb이기 때문에 동시에 64Gb를 모두 사용할 수는 없지만 512Mb 단위로 처리 할 수는 있습니다.

동일한 가상 메모리 블록을 mupliple 위치 (다중 주소)로 매핑하는 경우도 고려하십시오.

즉 가상 메모리와 가상 주소 간의 일대일 매핑이 존재하지 않습니다.