32 비트 시스템에서 전체 OS 용 4GB 가상 주소 공간이 있습니까? 아니면 개별 프로세스 용입니까?
각 프로세스는 고유 한 4GB 가상 주소 공간을 가지며 2GB는 커널 공간 용입니다. 32 비트 Windows에서는 다음을 사용할 수 있습니다. LARGEADDRESSAWARE
와 함께 /3GB
부팅 옵션 커널 공간을 1GB로 줄이기 위해
운영체제는 더 넓은 주소 버스를 갖게 될 것입니다. PAE 그래서 실제로 4GB 이상의 RAM을 처리 할 수 있습니다.
전체 운영체제의 경우 OS가 자체적으로 4GB의 주소 공간을 가진 모든 프로세스를 속일 수 있습니까?
여기 바보 같은 건 없어요. 가상 주소! = 실제 주소 . 모든 프로세스는 물리적 RAM의 양에 관계없이 항상 다른 프로세스의 데이터를 엉망으로 만들 수 없도록 자체 4GB 주소 공간을 가지고 있습니다. 128MB의 RAM 만 가지고 있어도 4GB의 주소 공간이 있습니다. 이는 32 비트 프로그램의 포인터가 항상 32 비트이기 때문입니다. 주소 공간은 RAM뿐만 아니라 MMIO 장치에도 사용되며 프로세스는 파일을 주소 공간에 직접 매핑한다.
시스템에 4GB 이상의 RAM이 있으면 프로세스에서 사용할 수 있습니다. 두려움 더 높은 주소를 4GB 창에 매핑하여 사용 가능한 모든 메모리에 액세스 할 수 있도록합니다. 또는 다음과 같이 여러 프로세스를 생성 할 수도 있습니다. 어도비 프리미어 CS4 단일 프로세스의 메모리 제한 이상을 활용하려면
프로세스가 시작될 때 모든 가상 주소 공간을 사용합니까? 가상 주소를 저지르고 예약하는 것입니까?
이 프로세스는 2 ~ 4GB의 주소 공간을 갖지만 물론 원하는 메모리 양을 결정하는 프로세스에 따라 다릅니다. 프로세스가 사용 가능한 것보다 많은 메모리를 요청했지만 실제로 해당 영역에 쓰지 않은 경우 실제로는 메모리를 소비하지 않습니다. 그건 오버 커밋 ~이고 리눅스에서 허용 그러나 Windows 사용 가능한 총 RAM + 페이지 파일보다 많은 용량을 할당 할 수 없습니다.
프로세스에서 얼마나 많은 가상 주소 공간이 필요한지를 어떻게 알 수 있습니까? 프로세스가 3GB (확장 사용자 모드 시스템)보다 더 많은 가상 주소를 필요로 할 경우 어떻게 될까요?
가상 주소 공간은 항상 2 / 3 / 4GB입니다. 32 비트 이상의 가상 주소가있는 아키텍처로 변경하지 않는 이상 가상 주소 공간은 더 이상 가질 수 없습니다. 3GB 이상의 RAM을 필요로하는 것은 다른 문제입니다. 이 경우 몇 가지 해결책이 있습니다.
- 64 비트 Windows에서 프로세스를 실행하십시오.
LARGEADDRESSAWARE
,이 경우 4GB의 메모리에 액세스 할 수 있습니다
- 위의 Premiere CS4 예제와 같은 둘 이상의 프로세스 사용
- 용도 두려움 상술 한 바와 같이
- 소스 코드가있는 경우에 대비하여 메모리를 적게 사용하도록 알고리즘을 다시 작성하십시오.
- 64 비트 버전의 프로그램 사용
각 1GB RAM으로 설계된 32 비트 창에서 3 개의 프로세스를 실행하는 경우 2GB RAM 시스템에 메모리 할당 문제가 있습니까?
그 중 일부는 페이지 파일로 이동할 수 있기 때문에 보통 문제가 없습니다. 그러나 물론 훨씬 더 느려질 것입니다.
그렇지 않다면 Windows는 어떻게이 작업을 수행합니까? 프로세스의 모든 가상 주소 공간에 물리적 메모리에 물리적 주소가 할당되어 있습니까? 아니면 가상 주소에 액세스 할 때 매핑 만 수행되는 게으른 할당입니까?
전체 가상 주소는 다음과 같습니다. 아니 맵핑 된 거대한 덩어리로 선형 적으로 물리적 주소 공간에 저장합니다. 메모리가 매핑 됨 페이지들 , 이렇게 프로세스 주소 공간에 많은 정의되지 않은 주소가있을 것입니다.
또한 일부 실제 페이지가 여러 가상 주소 공간에 나타나 프로세스가 데이터를 공유 할 수 있습니다. 읽기 전용으로 표시된 일부 공유 페이지는 메모리 저장을 위해 쓰여질 때 자동으로 복제됩니다. 그건 복사 중 복사
먼저 가상 메모리에 대해 읽어야합니다.