32 비트 Windows에서의 메모리 관리


-1

32 비트 시스템에서 전체 OS 용 4GB 가상 주소 공간이 있습니까? 아니면 개별 프로세스 용입니까?

전체 운영체제의 경우 OS가 자체적으로 4GB의 주소 공간을 가진 모든 프로세스를 속일 수 있습니까?

프로세스가 시작될 때 모든 가상 주소 공간을 사용합니까? 가상 주소를 저지르고 예약하는 것입니까?

프로세스에서 얼마나 많은 가상 주소 공간이 필요한지를 어떻게 알 수 있습니까? 프로세스가 3GB (확장 사용자 모드 시스템)보다 더 많은 가상 주소를 필요로 할 경우 어떻게 될까요?


각 1GB RAM으로 설계된 32 비트 창에서 3 개의 프로세스를 실행하는 경우 2GB RAM 시스템에 메모리 할당 문제가있을 것입니다. 그렇지 않다면, 어떻게 창문이 이것을 얻을 수 있습니까? 프로세스의 모든 가상 주소 공간에 물리적 메모리에 물리적 주소가 할당되어 있습니까? 아니면 가상 주소에 액세스 할 때 매핑 만 수행되는 게으른 할당입니까?
Aman Yadav

1
Pleasedonot은 주석에서 질문을 확대합니다. 편집하다 귀하의 질문은 명확하고 더 완벽하게 이해합니다.
Scott

답변:


1

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는 어떻게이 작업을 수행합니까? 프로세스의 모든 가상 주소 공간에 물리적 메모리에 물리적 주소가 할당되어 있습니까? 아니면 가상 주소에 액세스 할 때 매핑 만 수행되는 게으른 할당입니까?

전체 가상 주소는 다음과 같습니다. 아니 맵핑 된 거대한 덩어리로 선형 적으로 물리적 주소 공간에 저장합니다. 메모리가 매핑 됨 페이지들 , 이렇게 프로세스 주소 공간에 많은 정의되지 않은 주소가있을 것입니다.

pagetable

또한 일부 실제 페이지가 여러 가상 주소 공간에 나타나 프로세스가 데이터를 공유 할 수 있습니다. 읽기 전용으로 표시된 일부 공유 페이지는 메모리 저장을 위해 쓰여질 때 자동으로 복제됩니다. 그건 복사 중 복사

먼저 가상 메모리에 대해 읽어야합니다.


0

프로세스 당 4 기가 바이트의 가상 주소 공간이 생성되며 이는 OS와 프로세스간에 공유됩니다. OS는 경계를 결정합니다 (모든 프로세스에서 고정되어 있음).
OS는 모든 가상 주소 공간에 존재합니다.
IOW "프로세스는 4GB의 주소 공간을 가지고 있습니다" OS와 공유해야하고 커널이 소유 한 가상 메모리 부분을 읽거나 쓰거나 실행할 수 없습니다.

각 1GB RAM으로 설계된 32 비트 창에서 3 개의 프로세스를 실행하는 경우 2GB RAM 시스템에 메모리 할당 문제가있을 것입니다. 그렇지 않다면, 어떻게 창문이 이것을 얻을 수 있습니까?

사용자 프로세스는 상주하는 (즉, 스왑 아웃 할 수없는) 물리적 메모리를 요구할 특권을 가지고 있지 않습니다.
가상 메모리 체계는 스와핑 (대용량 저장 장치에서 페이지 파일 또는 스왑 공간 사용)을 사용하기 때문에 일반적으로 실제 메모리가 가상 크기보다 작은 4GB 가상 주소 공간의 여러 프로세스를 실행하는 데 문제가 없습니다.

프로세스가 대량의 메모리 요구를 생성하고 충분한 물리적 메모리 및 스왑 공간이없는 경우 메모리 부족 (일명 OOM) 조건을 만들 수 있습니다.

프로세스의 모든 가상 주소 공간에 물리적 메모리에 물리적 주소가 할당되어 있습니까? 아니면 가상 주소에 액세스 할 때 매핑 만 수행되는 게으른 할당입니까?

전체 프로그램이 물리적 메모리를 할당 받아 메모리에로드해야한다는 요구 사항은 없습니다.
프로세스의 실제 메모리 맵핑은 필요에 기반합니다.
프로세스는 실제로 실행될 때 메모리 상주 만 있으면되고 크기에 관계없이 최소한 현재 프로그램 카운터 레지스터와 데이터 참조 페이지에서 참조하는 코드 한 페이지 만 실제로 상주해야합니다 .

그래서 예. "가상 주소가 액세스 될 때만 매핑이 수행되는 지연 할당" , 일명 수요 페이징.


0

아니요, 속일 수는 없습니다. OS 전체에 최대 4GB의 RAM이 있습니다.

PAE를 활성화 할 수 있습니다. PAE가 작동하는 경우 Windows에서 4GB 이상을 인식 할 수 있습니다. 64 비트 OS만큼 멀리는 아무데도 갈 수 없습니다.


사실 32 비트 Windows는 NX 비트가 필요하기 때문에 오랜 시간 동안 PAE가 필요했습니다. 32 비트 버전의 4GB 제한은 순전히 라이센스 제한입니다. 오래된 드라이버가 잘못 작성되어 PAE에서 제대로 작동하지 않기 때문에 약간의 기술적 인 문제가 있습니다. 한도를 제거하는 다양한 패치가 있습니다. Windows 7 (32 비트)에서 PAE를 사용하여 3.5GB 이상의 RAM을 지원하려면 어떻게해야합니까? , 32 비트 Windows OS에서 4GB 이상의 RAM을 사용할 수 있습니까?
phuclv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.