Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 6. 4GB 메모리 구성 [링크 복사], [링크+제목 복사],
조회: 20498
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

분위기가 제법 무르익었나 봅니다. ^^
요즘 들어, 심심치 않게 4GB 메모리에 대한 이야기가 흘러나오는군요. 그만큼 질문이 많아졌다는 것이고, 그것은 곧 4GB 구성한 개발자들이 많아졌다는 얘기일 것입니다.

현재는, 4GB 메모리를 꽂았다고 해서 4GB 메모리 전체를 사용할 수는 없습니다.
예전 도스 시절에 640KB 메모리를 설치하고 프로그램을 배우시던 분들은 아시겠지만, 바이오스 및 비디오 램등을 640KB 이후의 영역으로 밀어내기 위해서 갖은 애를 다 쓰곤 했었지요.

즉, 4GB 메모리 영역은 물리 램만 매핑되는 것이 아니라, 그 외의 바이오스나 비디오 램 등이 같이 매핑이 되는 영역이기도 합니다.
그렇기 때문에 4GB 물리 램을 설치하게 되면, 비디오 램 등에 영역을 빼앗겨서 그 부분은 여분의 램으로 사용할 수 없게 되어 버립니다.

이러한 문제점은, 우선 메인보드 자체가 4GB 이상을 처리할 수 없기 때문에 발생합니다. 메인보드 사양을 보면 4GB 물리 램까지 지원한다고 되어 있기는 하지만, 현실적으로 비디오 램 영역까지 하면 그것이 의미가 없게 되버립니다.

최근 들어서는, 4GB 이후의 영역에 PCI 장치들의 메모리 영역을 매핑할 수 있도록 해주는 옵션이 있던 것 같은데요. 아마도 그걸 사용하게 되면 4GB 물리 램에 대한 인식 영역을 좀 더 넓힐 수 있을 것입니다.

그런데, 마더보드만 그것을 지원한다고 해서 되는 것이 아닙니다. 운영체제 자체가 32bit인 경우에는 그나마도 4GB 자체가 한계이므로, 아마도 마더보드 설정으로 4GB 이후로 밀어냈다면 시스템에 문제가 있을 지도 모릅니다. 오히려, 32bit 윈도우즈 시스템에서는 마더보드 설정을 통한 메모리 매핑을 설정하지 말고, 비디오 램 등으로 밀려진 램 영역을 사용 할 수 있도록 /PAE 옵션을 주는 것이 권장됩니다. 하지만 이 방법도 그리 좋은 해결책은 아닙니다. 왜냐하면, PAE 영역은 일반 램의 메모리 할당 API가 아닌 별도의 API를 사용해야만 사용이 가능하기 때문에, 그 부분을 사용하기 위해서는 응용 프로그램 자체가 그 영역의 램을 사용할 수 있도록 프로그래밍 되어져야 합니다.

따라서, 근본적인 해결책은 운영체제를 64bit로 설치하는 것입니다.

그럼, 정리를 해볼까요? ^^ 4GB 메모리를 완전하기 쓰기 위해서는 마더보드를 4GB 이상을 지원하는 시스템 또는 바이오스 또는 PCI 메모리 등을 4GB 이상으로 밀어낼 수 있는 옵션을 가진 것으로 구매를 해야 되고, 운영체제는 64bit 시스템으로 설치를 해야만 합니다.

참고 URL:
Windows - When 4 = 3
; http://www.kudzuworld.com/blogs/Tech/2006_08_13.aspx

Why can't I see all of the 4GB of RAM in my machine?
; http://blogs.msdn.com/oldnewthing/archive/2006/08/14/699521.aspx

-----------------------------

요즘 들어 나온 마더보드는 최대 메모리가 8GB / 16GB까지도 가는군요.
AMD CPU 마더보드 쪽의 nVIDIA nForce 570 이상의 칩셋들은 16GB 메모리를 지원하고,
Itenl CPU 마더보드 쪽의 Intel 965P 칩셋 이상에서는 8GB 메모리를 지원합니다.









[최초 등록일: ]
[최종 수정일: 6/28/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2008-11-24 01시18분
Pushing the Limits of Windows: Virtual Memory
; http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx

4GB 메모리를 32bit 윈도우즈에서 모두 사용하지 못하는 이유에 대해 자세히 설명하고 있습니다.
kevin25

... 46  47  48  49  50  51  52  53  54  55  56  57  58  [59]  60  ...
NoWriterDateCnt.TitleFile(s)
12462정성태12/27/202019447디버깅 기술: 177. windbg - (ASP.NET 환경에서 유용한) netext 확장
12461정성태12/21/202019805.NET Framework: 985. .NET 코드 리뷰 팁 [3]
12460정성태12/18/202017846기타: 78. 도서 소개 - C#으로 배우는 암호학
12459정성태12/16/202019128Linux: 35. C# - 리눅스 환경에서 클라이언트 소켓의 ephemeral port 재사용파일 다운로드1
12458정성태12/16/202016756오류 유형: 694. C# - Task.Start 메서드 호출 시 "System.InvalidOperationException: 'Start may not be called on a task that has completed.'" 예외 발생 [1]
12457정성태12/15/202017012Windows: 185. C# - Windows 10/2019부터 추가된 SIO_TCP_INFO파일 다운로드1
12456정성태12/15/202017907VS.NET IDE: 156. Visual Studio - "Migrate packages.config to PackageReference"
12455정성태12/15/202017297오류 유형: 693. DLL 로딩 시 0x800704ec - This Program is Blocked by Group Policy [1]
12454정성태12/15/202017869Windows: 184. Windows - AppLocker의 "DLL Rules"를 이용해 임의 경로에 설치한 DLL의 로딩을 막는 방법 [1]
12453정성태12/14/202018790.NET Framework: 984. C# - bool / BOOL / VARIANT_BOOL에 대한 Interop [1]파일 다운로드1
12452정성태12/14/202019172Windows: 183. 설정은 가능하지만 구할 수는 없는 TcpTimedWaitDelay 값
12451정성태12/14/202017183Windows: 182. WMI Namespace를 열거하고, 그 안에 정의된 클래스를 열거하는 방법 [5]
12450정성태12/13/202018326.NET Framework: 983. C# - TIME_WAIT과 ephemeral port 재사용파일 다운로드1
12449정성태12/11/202019294.NET Framework: 982. C# - HttpClient에서의 ephemeral port 재사용 [2]파일 다운로드1
12448정성태12/11/202020700.NET Framework: 981. C# - HttpWebRequest, WebClient와 ephemeral port 재사용파일 다운로드1
12447정성태12/10/202018790.NET Framework: 980. C# - CopyFileEx API 사용 예제 코드파일 다운로드1
12446정성태12/10/202019884.NET Framework: 979. C# - CoCreateInstanceEx 사용 예제 코드파일 다운로드1
12445정성태12/8/202015679오류 유형: 692. C# Marshal.PtrToStructure - The structure must not be a value class.파일 다운로드1
12444정성태12/8/202017129.NET Framework: 978. C# - GUID 타입 전용의 UnmanagedType.LPStruct [1]파일 다운로드1
12443정성태12/8/202016546.NET Framework: 977. C# PInvoke - C++의 매개변수에 대한 마샬링을 tlbexp.exe를 이용해 확인하는 방법
12442정성태12/4/202015470오류 유형: 691. Visual Studio - Build Events에 robocopy를 사용할때 "Invalid Parameter #1" 오류가 발행하는 경우
12441정성태12/4/202014904오류 유형: 690. robocopy - ERROR : No Destination Directory Specified.
12440정성태12/4/202016458오류 유형: 689. SignTool Error: Invalid option: /as
12439정성태12/4/202018520디버깅 기술: 176. windbg - 특정 Win32 API에서 BP가 안 걸리는 경우 (2) [1]
12438정성태12/2/202017779오류 유형: 688. .Visual C++ - Error C2011 'sockaddr': 'struct' type redefinition
12437정성태12/1/202017972VS.NET IDE: 155. pfx의 암호 키 파일을 Visual Studio 없이 등록하는 방법
... 46  47  48  49  50  51  52  53  54  55  56  57  58  [59]  60  ...