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.