32 비트 OS 시스템이 8GB RAM + 20GB 페이지 파일을 모두 사용할 수 있습니까?


98

32 비트 OS에 대해 이해하는 것은 주소가 32 비트로 표현되므로 대부분의 OS는 2 32 = 4G 메모리 공간을 사용할 수 있습니다 . 단위는 바이트이므로 4GB입니다.

이는 32 비트 OS (Windows 또는 Unix)를 사용하는 시스템이 하드 디스크에 총 4GB 이상의 RAM + 페이지 파일 (예 : 8GB RAM 및 20GB 페이지 파일)을 가지고있는 경우 메모리가 "사용되지 않음"을 의미합니다 "?

으로 "최대 사용" 나는 RAM 또는 페이지 파일을 늘리면 성능이 도움이되지 않습니다 것을 의미한다; 물론 응용 프로그램이 OS에서 메모리를 계속 요청하지만 실패 할 가능성은 항상 있습니다.

마찬가지로이 32 비트 OS 시스템에 2GB RAM 및 2GB 페이지 파일이 있으면 페이지 파일 크기를 늘려도 성능에 도움이되지 않습니다. 이것이 사실입니까?


2
참고로, 4GB 이상의 RAM과 32 비트 OS 만 있으면 RAM 디스크를 만들 수 있습니다. 이것은 당신의 RAM에있는 하드 드라이브이며, 사용하지 않거나 처리되지 않은 RAM을 사용하여 그것을 넣을 수 있습니다.
Simon Verbeke

10
당신은 할 수 없습니다. 램 디스크는 여전히 OS를 통해 생성되어야합니다. OS가 메모리를 사용할 수없는 경우 램 디스크도 생성 할 수 없습니다. (바이오가 램 디스크를 만들 수 없다면, 드물게 나타납니다).
AVee

1
짧은 대답은 "예"입니다. 일반적으로 프로세스에 사용할 32 비트 주소 공간이 제공되지만 OS 자체는 그 이상을 사용할 수 있습니다 (80 년대와 같은 은행 전환 또는 Intel의 PAE와 같은 주소 확장 트릭 학교에 의한 것). 한 번에 하나의 프로그램으로 여러 프로세스로 구성 될 수 있으며 (Chrome은 다른 프로세스에 탭을 넣습니다) OS 자체는 로컬 고정 디스크에서 데이터를 캐싱하는 등의 작업에 메모리를 사용하므로 이미 데이터에 더 빠르게 액세스 할 수 있습니다 사용
rbanffy

답변:


145

32 비트 OS에 대해 이해하는 것은 주소가 32 비트로 표현되므로 최대 OS는 2 ^ 32 = 4GB 메모리 공간을 사용할 수 있다는 것입니다

이 가장 프로세스가 있습니다 주소는 4GB입니다. 메모리주소 공간이 혼동 될 수 있습니다 . 프로세스는 주소 공간보다 더 많은 메모리를 가질 수 있습니다. 이는 비디오 처리 및 기타 메모리 집약적 응용 프로그램에서 완벽하게 합법적 이며 매우 일반적입니다. 프로세스는 수십 GB의 메모리를 할당하고 마음대로 주소 공간 안팎으로 스왑 할 수 있습니다. 한 번에 2GB 만 사용자 주소 공간에 들어갈 수 있습니다 .

집에 4 대짜리 차고가 있다면 여전히 50 대의 차를 소유 할 수 있습니다. 차고에 보관할 수는 없습니다. 최소한 46 개를 저장하려면 보조 저장 장치가 있어야합니다. 차고에 보관하는 차와 길 아래 주차장에 보관하는 차는 귀하에게 달려 있습니다.

이것은 32 비트 OS를 의미합니까? Windows 나 유닉스 일 경우, 컴퓨터에 8GB RAM 및 20GB 페이지 파일과 같이 4GB 이상의 하드 디스크에 RAM + 페이지 파일이있는 경우 "메모리 사용"이 발생하지 않습니까?

물론 그런 의미는 아닙니다. 단일 프로세스는 그보다 더 많은 메모리를 사용할 수 있습니다! 다시 프로세스가 사용하는 메모리의 양은 공정에서 사용하는 가상 주소 공간의 크기에 거의 무관하다. 차고에 보관하는 자동차의 수는 소유 한 자동차의 수와 완전히 관련이 없습니다.

또한 두 프로세스가 개인 메모리가 아닌 메모리 페이지를 공유 할 수 있습니다 . 20 개의 프로세스가 모두 같은 DLL을로드하면 프로세스는 모두 해당 코드의 메모리 페이지를 공유합니다. 그들은 가상 메모리 주소 공간을 공유하지 않고 메모리 를 공유 합니다 .

내 요점은 명확하지 않은 경우 메모리와 주소 공간에 대한 생각을 멈춰야한다는 것입니다. 왜냐하면 그것들은 전혀 같지 않기 때문입니다.

이 32 비트 OS 시스템에 2GB RAM 및 2GB 페이지 파일이 있으면 페이지 파일 크기를 늘려도 성능에 도움이되지 않습니다. 이것이 사실입니까?

당신은 50 대의 차와 4 대의 차고와 100 대의 주차장이 길 아래에 있습니다. 주차장 크기를 200 개 지점으로 늘립니다. 50 개의 추가 주차 공간 대신 ​​150 개의 추가 주차 공간을 확보 한 결과 자동차가 더 빨라 집니까?


26
이 질문에 대한 답을 얻지 못하고 거의 현혹 적입니다.
Rig

48
@Rig : 굉장합니다. 건설적인 비판을 듣고 다행입니다. 이제 더 나은 답변작성하고 덜기만적이고 적절한 답변이라고 생각할 수있는 기회를 가지십시오 .
Eric Lippert

4
@BlueRaja : 실제 메모리메모리를 혼동하고 있다고 생각합니다 . 실제 메모리는 메모리에 더 빠르게 액세스 할 수있는 최적화입니다. 프로세서 캐시가 메모리에 더 빠르게 액세스 할 수있는 최적화와 마찬가지로. 메모리페이지 파일에 예약 된 모든 의도와 목적을위한 공간입니다. 페이지 파일의 특정 페이지가 (1) 가상 메모리 주소에 매핑되는지 또는 (2) 디스크에서 실제 메모리로 복사되는지 여부는 할당 여부에 대한 질문과 관련이 없습니다.
Eric Lippert

4
@BlueRaja :이 주제에 관한 Raymond Chen의 기사가 도움이 될 것입니다. 그는 페이지 파일에서 4GB를 할당하는 방법을 보여줍니다. 즉 프로세스가 소유하고 메모리 . 이 과정은 없습니다 해결 한번의 코스에서 모든 일을하지만, 해결할 수 있는 페이지를 , 사용하지 않는 VM 페이지에 페이지를 매핑 잠시 동안 그것을 사용하고 그것을 버리고. blogs.msdn.com/b/oldnewthing/archive/2004/08/10/211890.aspx
Eric Lippert

3
Eric은 Windows (및 기타 OS)에서 실제로 가상 주소 공간에 메모리를 두지 않고 "예약"하고 명백한 질문에 대답 할 수 있다고 명시했다면이 대답은 더 명확했을 것입니다. 해결 하시겠습니까?” 그 대답은 "가상 주소 공간으로 페이지를 보내기 위해 참조 할 때 사용하는 일종의 페이지 ID가 있고 거기에서 처리 할 수 ​​있습니다"라고 생각합니다. 당신의 대답은 말하지 않습니다 :)
Timwi

67

CPU는 최대 4Gb의 RAM 만 처리 할 수 ​​있습니다. 그러나 현재 CPU는 MMU ( 메모리 관리 장치 )를 사용하여 프로세스 별 메모리 주소를 실제 메모리 주소로 변환합니다.

이 MMU는 메모리 격리 (프로세스 A는 프로세스 B의 메모리를 조작 할 수 없음)에서 메모리 공유 (프로세스 A는 프로세스 B와 동일한 물리적 메모리 영역에 액세스하여 이러한 방식으로 데이터를 교환 할 수 있음)에 이르기까지 모든 종류의 다양한 트릭에 사용됩니다.

32 비트 CPU는 프로세스 당 4Gb의 메모리 만 지원하지만 Physical Address Extension을 사용할 때 최대 64Gb의 RAM을 처리 할 수 ​​있습니다 . 이는 프로세스 A가 첫 번째 4Gb의 메모리를 사용하는 반면 프로세스 B는 다음 4Gb를 사용합니다. 전체적으로 4Gb 이상의 실제 메모리가 사용 되지만 단일 프로세스에서 사용하는 총 메모리 양은 여전히 ​​4Gb로 제한됩니다 .

PAE는 커널 버전 2.3.23부터 Linux 및 일부 32 비트 버전의 Windows Server에서 지원되지만 32 비트 Windows XP, Vista 또는 7에서는 지원되지 않습니다.

CPU가 PAE를 지원하지 않으면 4GB의 실제 메모리로 제한됩니다 (또는 다른 요인에 따라 더 적음).

운영 체제는 PAE를 지원하는 CPU에 관계없이 실제 메모리의 일부를 디스크 (페이지 파일)로 제거 할 수 있습니다. 이를 통해 4Gb 이상의 결합을 사용하는 여러 프로세스를 시작할 수 있습니다. PAE가 갖는 유일한 영향은 프로세스 A를 실행하는 동안 프로세스 B의 4Gb를 실제 메모리에 유지할 수 있는지 여부입니다.


그것이 지원하지 않는다면, 내가 위에서 말한 것이 맞습니까?

10
Windows XP는 PAE (SP2부터 시작)를 지원하지만 컴퓨터가 PAE를 지원하더라도 4GB 이상의 RAM은 무시합니다. 여기를 참조 하십시오 . 하드웨어 기반 데이터 실행 방지에 사용됩니다. NX / XD 비트는 "일반"페이지 테이블 항목이 아닌 PAE 페이지 테이블 항목에서만 사용할 수 있습니다.
Wyzard

칩셋은 선택한 OS 또는 해킹에 관계없이 지원 / 사용 가능한 메모리 양의 제한 요소가 될 수 있습니다.
Moab

5
32 비트 윈도우의 소비자 버전이 4GB보다 큰 램을 지원하지 않는 이유는 많은 수의 하드웨어 드라이브가 많은 메모리에서 올바르게 작동하지 않기 때문이라고 덧붙였습니다. 그리고 당시 4GB 이상의 램은 서버 / 초 고성능 워크 스테이션 외부에서는 극히 드물기 때문에 드라이버를 유지 관리하는 대부분의 회사는 고객 기반의 0.1 % 만 사용하는 드라이버를 업데이트하는 데 돈을 소비하는 데 관심이 없었습니다.
Dan Neely

6
@DanNeely OS 메모리를 지원 하지만 라이센스 문제로 인해 제한 됩니다. 이것이 타사 핵이라는 데 동의하지만, 이는 Windows의 일반 소비자 변형을위한 것입니다. Windows 2000 부터 서버 기반 Windows 배포 는 4GB 이상의 메모리를 지원했습니다 (첫 번째 링크 참조).
획기적인

15

32 비트 Windows 변형에 대해 구체적으로 말하면 Windows 2003 변형 이후 4GB 이상의 RAM을 지원했습니다 (또한 모든 RAM을 32 비트로 사용할 수 있도록 Windows 7 용 커널 핵을 얻을 수 있습니다). 그러나 질문의 ​​첫 부분에서 설명한 것처럼 비용이 발생합니다.

32 비트 운영 체제에서 포인터 (메모리 주소)의 크기는 CPU의 워드 길이 인 32 비트와 동일하며 2 ^ 32 = 4GB 메모리 공간을 허용합니다. Windows는 또한 응용 프로그램에 "가상 메모리"접근 방식을 취하므로 각 응용 프로그램에는 자체 메모리 공간이 있습니다.

각 포인터의 너비는 32 비트이므로 시스템에서 4GB 이상의 RAM을 지원할 수 있지만 각 응용 프로그램 의 포인터는 최대 4GB의 메모리 만 처리 할 수 ​​있습니다. 내가 아는 한, 이것은 32 비트 운영 체제에서 4GB 이상의 RAM을 사용하는 유일한 경고입니다. 전체적으로 4GB 이상의 RAM을 사용하는 많은 응용 프로그램을 가질 수 있지만 특정 프로세스 하나만 최대 4GB를 할당 / 액세스 할 수 있습니다.


귀하의 질문으로 돌아가서 2GB의 RAM을 사용하는 프로그램이 있다고 가정 해 봅시다. 이 프로그램의 인스턴스가 10 개이면 20GB입니다. 8GB의 RAM과 12GB의 다른 페이지 파일이 모두 사용됩니다. 따라서 32 비트 운영 체제에서는이 메모리를 모두 사용할 수 있습니다.

이 32 비트 OS 시스템에 2GB RAM 및 2GB 페이지 파일이 있으면 페이지 파일 크기를 늘려도 성능에 도움이되지 않습니다. 이것이 사실입니까?

페이지 파일 크기를 늘려도 RAM과 페이지 파일이 절대 최소값으로 설정되거나 컴퓨터가 지속적으로 스 래시되도록 설정하지 않는 한 일반적으로 성능이 향상 되지 않습니다 . 그러나 컴퓨터에 (가상) 메모리가 부족하지는 않습니다. 페이지 파일로 무언가를 제거해야 할 때마다 하드 드라이브가 RAM보다 훨씬 느리기 때문에 이미 엄청난 성능 저하를 겪고 있습니다.


각 프로세스가 얻는 4GB의 주소 공간 중에서 실제로 프로그램에서 2GB 만 사용할 수 있습니다. 다른 2GB는 커널에서 사용하도록 예약되어 있습니다. / 3GB의 부팅 옵션은 일부 프로그램은 더 많은 RAM을 사용하도록 할 수 있습니다.
Wyzard

1
@Breakthrough : "페이지 파일 크기를 늘리면 성능이 향상되지 않습니다"이것이 사실이라고 생각하지 않습니다. 예를 들어, 스왑이 더 많은 경우 OS는 사용하지 않는 프로그램 데이터를보다 적극적으로 스왑하고 디스크 캐싱과 같은 사용 가능한 RAM을 사용할 수 있습니다. 일부 구성에서는 성능이 향상 될 수 있습니다. 페이지 오류가 중요한 이유에 대한 ServerFault에 대한 좋은 답변이 있습니다. serverfault.com/questions/23621/…
sleske

2
"페이지 파일 크기를 늘리면 성능이 향상되지 않습니다" 와 같은 담요 설명에주의하십시오 . 페이지 파일이 너무 크면 페이지 파일이 더 큰 것보다 디스크 스 래싱이 더 많이 발생할 수 있습니다! 이 질문 에 대한 답변과 의견을 참조하십시오 .
Mark Booth

1
@ sleske 좋은 점은 "보통 그렇지 않은"유형으로 업데이트했습니다. 대부분의 사람들에게 서버에서 큰 차이를 만들 수 있다는 데 동의하지만, 내가 극복하려는 요점은 더 많은 RAM을 얻는 것이 더 나을 것입니다 (페이징 할 때 성능이 상당히 느리기 때문에) 얻을 수있는 것처럼).
획기적인

-1

프로세서가 32 비트라고 말하면 단일 명령을 사용하여 32 비트 숫자로 작동 할 수 있다는 의미입니다. 이것은 1995 년 Pentium Pro가 출시 된 이래 인텔 아키텍처에서 36 비트 인 주소 버스의 너비와 관련이 없습니다 .

유명한 4GB 제한은 대부분의 PC 소프트웨어가 각 메모리 바이트를 포인터로 처리 할 수있는 플랫 메모리 모델을 사용한다는 사실에서 비롯됩니다 . 포인터는 사용할 레지스터에 맞아야하고 레지스터의 너비는 32 비트이므로 4GB로 제한됩니다.


위의 다른 이전 답변에서 지적했듯이 이것은 올바르지 않습니다.
ChrisInEdmonton 2014 년

내가 틀렸다는 특정 사실을 지적 해 주시겠습니까?
Dmitry Grigoryev

1
단일 프로세스는 4GB 이상을 사용할 수 있습니다. 특히, 이전 답변은 "프로세스가 주소 공간보다 더 많은 메모리를 가질 수 있습니다"라고 지적합니다.
ChrisInEdmonton 2016 년

2
예를 들어 blog.superuser.com/2011/04/23/을 참조하십시오. 이제 4GB 이상을 동시에 사용할 수는 없지만 단일 프로세스에서 메모리를 매핑 해제하고 다시 매핑 할 수 있으므로 단일 프로세스에서 4GB, 약간의 부기가 있습니다. 해당 블로그 게시물은 Windows에만 국한됩니다. 32 비트 Linux 설치에서 4GB 이상의 메모리가 할당 된 데이터베이스 서버를 실행했습니다. 요즘에는 64 비트 Linux 만 실행하면됩니다.
ChrisInEdmonton

1
알겠습니다. 사과드립니다. 나는 mmap여분의 메모리 에 대한 가능성에 대해서는 생각하지 않았다 .
Dmitry Grigoryev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.