[질문] win64에서 win32 어플리케이션을 실행할 때, 사용가능한 메모리양은?
글쓴이: bizzare / 작성시간: 일, 2006/02/19 - 5:56오후
제가 지난번에 질문을 올릴 때 제목과 질문 내용을 조금 오해의 소지가 있게 올렸었더군요 -_- 많은 분께서 의견말씀해주셔서 감사했고요.
다시한번 질문을 올립니다. 좀더 구체적으로. ^^
32bit윈도우는 총 4G의 메모리를 사용할 수 있지요.
그리고 보통 OS가 2G, 프로그램이 2G까지 사용할 수 있다고 알고 있습니다.
그런데
만일 64bit윈도우에서 win32프로그램을 사용할 경우, 총 몇G까지 메모리를 사용할 수 있나요?
즉, 64비트로 빌드하지 않은, 32비트로 빌드한 어플리케이션입니다!
1) 32bit 윈도우와 마찬가지로 2G까지.
2) OS가 사용하던 2G의 제약이 없어지므로 4G까지.
어느쪽일까요?
win64에서 64비트 어플리케이션이 사용 가능한 메모리양이 아니라,
win64에서 32비트 어플리케이션이 사용 가능한 메모리양이 저의 질문입니다.
답변 부탁드려요.
_________________
정말 깨끗하고 멋진 프로그램을 짜고 싶습니다.
Forums:
EM64t의 경우는..
인텔의 x86-64 기술인 EM64T의 경우
64비트 OS에서 32비트 에플리케이션을 구동하는것을
호환 모드라고 하는데 호환 모드에서 사용가능한 메모리는
64비트 플렛폼에서 이용할수 있는 메모리 양과 같다고 하고있습니다.
AMD64의 경우도 퍼포먼스의 차이만 있을뿐 비슷한 방식이라고
알고 있습니다 그렇다면 AMD64의 경우도 마찬가지일거라고 생각됩니다.
그리고 64비트의 경우 가용 메모리가 4기가가 아니라 테라단위인걸로
알고 있습니다. 제가 잘못 안건가요?
win64 에서 win32 를 돌릴때, 당연히 2G 로 제한될꺼라고 생
win64 에서 win32 를 돌릴때, 당연히 2G 로 제한될꺼라고 생각합니다.
win32 어플자체에서 포인터가 32bit 로 사용하는데, 메모리 제한이 win32 와 동일한건 당연하겠죠.
win32도 36비트 이상의 어드레싱을 지원하는 함수를 제공하고 있습니다
win32도 36비트 이상의 어드레싱을 지원하는 함수를 제공하고 있습니다. (최초의 펜티엄이 32비트가 아닌 36비트 어드레싱을 지원했기 때문입니다.) 다만 도스 시절의 EMS를 쓰는 듯한 코딩을 해야 하고 그런 방식으로 제작된 프로그램이 별로 없다는 것입니다. 따라서 일상적인 win32 프로그램은 64비트 환경에서 32비트 어드레싱을 합니다.
- 죠커's blog / HanIRC:#CN
Jeffrey Richter 책 440page 를 보면link 할 때
Jeffrey Richter 책 440page 를 보면
link 할 때, /LARGEADDRESSAWARE 옵션을 주지 않으면,
Windows 가 실행파일을 위한 가상 주소 공간을 생성할 때 2GB 만을 사용한다고 되어 있네요.
다시 말해 따로 링크 옵션을 주지 않았다면, 64 bit Windows 에서 실행하더라도 메모리 사용량은 2GB 를 넘을 수 없습니다.
즐겁게 살아 볼까나~*
댓글 달기