Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 6. 4GB 메모리 구성 [링크 복사], [링크+제목 복사],
조회: 15684
글쓴 사람
정성태 (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

1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13515정성태1/6/20242620닷넷: 2195. async 메서드 내에서 C# 7의 discard 구문 활용 사례 [1]
13514정성태1/5/20242306개발 환경 구성: 702. IIS - AppPool의 "Disable Overlapped Recycle" 옵션
13513정성태1/5/20242223닷넷: 2194. C# - WebActivatorEx / System.Web의 PreApplicationStartMethod 특성
13512정성태1/4/20242176개발 환경 구성: 701. IIS - w3wp.exe 프로세스의 ASP.NET 런타임을 항상 Warmup 모드로 유지하는 preload Enabled 설정
13511정성태1/4/20242197닷넷: 2193. C# - ASP.NET Web Application + OpenAPI(Swashbuckle) 스펙 제공
13510정성태1/3/20242120닷넷: 2192. C# - 특정 실행 파일이 있는지 확인하는 방법 (Linux)
13509정성태1/3/20242169오류 유형: 887. .NET Core 2 이하의 프로젝트에서 System.Runtime.CompilerServices.Unsafe doesn't support netcoreapp2.0.
13508정성태1/3/20242219오류 유형: 886. ORA-28000: the account is locked
13507정성태1/2/20242865닷넷: 2191. C# - IPGlobalProperties를 이용해 netstat처럼 사용 중인 Socket 목록 구하는 방법파일 다운로드1
13506정성태12/29/20232456닷넷: 2190. C# - 닷넷 코어/5+에서 달라지는 System.Text.Encoding 지원
13505정성태12/27/20232983닷넷: 2189. C# - WebSocket 클라이언트를 닷넷으로 구현하는 예제 (System.Net.WebSockets)파일 다운로드1
13504정성태12/27/20232572닷넷: 2188. C# - ASP.NET Core SignalR로 구현하는 채팅 서비스 예제파일 다운로드1
13503정성태12/27/20232441Linux: 67. WSL 환경 + mlocate(locate) 도구의 /mnt 디렉터리 검색 문제
13502정성태12/26/20232556닷넷: 2187. C# - 다른 프로세스의 환경변수 읽는 예제파일 다운로드1
13501정성태12/25/20232321개발 환경 구성: 700. WSL + uwsgi - IPv6로 바인딩하는 방법
13500정성태12/24/20232414디버깅 기술: 194. Windbg - x64 가상 주소를 물리 주소로 변환
13498정성태12/23/20233100닷넷: 2186. 한국투자증권 KIS Developers OpenAPI의 C# 래퍼 버전 - eFriendOpenAPI NuGet 패키지
13497정성태12/22/20232494오류 유형: 885. Visual Studiio - error : Could not connect to the remote system. Please verify your connection settings, and that your machine is on the network and reachable.
13496정성태12/21/20232485Linux: 66. 리눅스 - 실행 중인 프로세스 내부의 환경변수 설정을 구하는 방법 (gdb)
13495정성태12/20/20232416Linux: 65. clang++로 공유 라이브러리의 -static 옵션 빌드가 가능할까요?
13494정성태12/20/20232584Linux: 64. Linux 응용 프로그램의 (C++) so 의존성 줄이기(ReleaseMinDependency) - 두 번째 이야기
13493정성태12/19/20232716닷넷: 2185. C# - object를 QueryString으로 직렬화하는 방법
13492정성태12/19/20232388개발 환경 구성: 699. WSL에 nopCommerce 예제 구성
13491정성태12/19/20232267Linux: 63. 리눅스 - 다중 그룹 또는 사용자를 리소스에 권한 부여
13490정성태12/19/20232399개발 환경 구성: 698. Golang - GLIBC 의존을 없애는 정적 빌드 방법
13489정성태12/19/20232178개발 환경 구성: 697. GoLand에서 ldflags 지정 방법
1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...