64位体系下,一个32位的法度毕竟可以申请到几许内存,4GB还是更多?(一)
添加时间:2013-6-25 点击量:
媒介:
cpu的位是指一次性可处理惩罚的数据量是几许,1字节=8位,32位处理惩罚器可以一次性处理惩罚4个字节的数据量,依次类推。32位操纵体系针对的32位的CPU设计。64位操纵体系针对的64位的CPU设计。操纵体系只是硬件和应用软件中心的一个平台。我们的CPU从本来的8位,16位,到如今的32位和64位。
靠山:
电脑的内存是8GB, 装的是32位的Win 7 32位版本,体系认出的内存是3.5GB, 应当说是4GB,因为还有0.5GB内存分派给了显存。
笔者十分疾苦,花重金购买的骇客神条单条8GB竟然被刹时阉割了4GB。为了物尽其用以及尝鲜体系,又在别的一个分区上安装了Win 8的64位版
- Win 7(X86)下的内存状况:
- Win 8(X64)下的内存状况:
题目:
在满足的看着8G内存全部启用以及体验Win 8 Metro华丽的界面后,脑海里忽然飘出一个题目:64位体系下8G内存是否完全能为32位的法度所用。
实验景象:
- Windows 7 ultimate(x86)
- Windows 8 Professional(X64)
- Visual Studio 2010 C++ 编译一个32位法度把握台应用法度
- 以GB为单位向体系申请内存
- 以32位体式格式编译
- 主函数代码:
-
1 // CPP_MemoryStudy.cpp : Defines the entry point for the console application.
2 //
3
4 #include stdafx.h
5 #include <iostream>
6 using namespace std;
7
8 int _tmain(int argc, _TCHAR argv[])
9 {
10 int a = 5;
11 int MEM_SIZE = 0;
12 const int GIGABTYE = 102410241024sizeof(char); #1GB 内存
13 int p = NULL;
14 cout<<Please input how many GB memoroy you want allocate:<<endl;
15 cin>>MEM_SIZE;
16 p = (int )malloc(GIGABTYEMEM_SIZE);
17 if(NULL == p)
18 {
19 cout<<Allocate Memory Error<<endl;
20 }
21 else
22 {
23 cout<<Succeed Allocate Memory<<endl;
24 }
25 getchar();
26 getchar();
27 return 0;
28 }
- 法度界面
- Win 7下运行(测试申请1GB内存 OK)
- Win 8下运行(测试申请1 GB内存 OK)
-
- Win 8下运行(单过程测试申请3 GB内存(总内存已 > 4GB) FAIL)
-
- Win 8 下(多32位过程在64位体系下申请内存>4GB OK)-- 这个点子是在和石友评论辩论的时辰想到的,测试了一下竟然可以
结论:
- 从初步实验成果来看一个32位的法度在64位的景象下不具备应用4GB+内存的才能。
- 多个32位法度可以申请跨越4GB的内存,
- 还有一个有趣的现象,当我申请内存大于4GB的时辰,有的时辰会显示内存显示成功,然则资料经管器里面没有更新,证实本质还是没有成功,是保护的原因还是其他的原因还须要深究,这将作为下一章节的题材。
- 64位体系对于常年运行32位法度的用户的意义只是有可以运行更多地单个32位法度的才能,32位的法度在64位体系下依然不具有寻址4GB+的才能
- 通俗点说,就是扩大仓库的容量,让其可以放下更多货色
后续研究思路:
- 将上述法度在64位景象下从头编译,研究内存应用景象
- Linux Ubuntu 32位体系可以支撑8GB内存,我会实验一下单个法度的寻址才能。
- 那些号称支撑64GB RAM的32位办事器体系,如Windows Server等,就竟单个法度可以应用到几许内存
以上是笔者一些肤浅的懂得,尚待更多的研究论证,我会持续跟进这个话题也迎接您参加这个话题的评论辩论。
我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》
媒介:
cpu的位是指一次性可处理惩罚的数据量是几许,1字节=8位,32位处理惩罚器可以一次性处理惩罚4个字节的数据量,依次类推。32位操纵体系针对的32位的CPU设计。64位操纵体系针对的64位的CPU设计。操纵体系只是硬件和应用软件中心的一个平台。我们的CPU从本来的8位,16位,到如今的32位和64位。
靠山:
电脑的内存是8GB, 装的是32位的Win 7 32位版本,体系认出的内存是3.5GB, 应当说是4GB,因为还有0.5GB内存分派给了显存。
笔者十分疾苦,花重金购买的骇客神条单条8GB竟然被刹时阉割了4GB。为了物尽其用以及尝鲜体系,又在别的一个分区上安装了Win 8的64位版
- Win 7(X86)下的内存状况:
- Win 8(X64)下的内存状况:
题目:
在满足的看着8G内存全部启用以及体验Win 8 Metro华丽的界面后,脑海里忽然飘出一个题目:64位体系下8G内存是否完全能为32位的法度所用。
实验景象:
- Windows 7 ultimate(x86)
- Windows 8 Professional(X64)
- Visual Studio 2010 C++ 编译一个32位法度把握台应用法度
- 以GB为单位向体系申请内存
- 以32位体式格式编译
- 主函数代码:
-
1 // CPP_MemoryStudy.cpp : Defines the entry point for the console application.
2 //
3
4 #include stdafx.h
5 #include <iostream>
6 using namespace std;
7
8 int _tmain(int argc, _TCHAR argv[])
9 {
10 int a = 5;
11 int MEM_SIZE = 0;
12 const int GIGABTYE = 102410241024sizeof(char); #1GB 内存
13 int p = NULL;
14 cout<<Please input how many GB memoroy you want allocate:<<endl;
15 cin>>MEM_SIZE;
16 p = (int )malloc(GIGABTYEMEM_SIZE);
17 if(NULL == p)
18 {
19 cout<<Allocate Memory Error<<endl;
20 }
21 else
22 {
23 cout<<Succeed Allocate Memory<<endl;
24 }
25 getchar();
26 getchar();
27 return 0;
28 }
-
- 法度界面
- Win 7下运行(测试申请1GB内存 OK)
- Win 8下运行(测试申请1 GB内存 OK)
- Win 8下运行(单过程测试申请3 GB内存(总内存已 > 4GB) FAIL)
- Win 8 下(多32位过程在64位体系下申请内存>4GB OK)-- 这个点子是在和石友评论辩论的时辰想到的,测试了一下竟然可以
结论:
- 从初步实验成果来看一个32位的法度在64位的景象下不具备应用4GB+内存的才能。
- 多个32位法度可以申请跨越4GB的内存,
- 还有一个有趣的现象,当我申请内存大于4GB的时辰,有的时辰会显示内存显示成功,然则资料经管器里面没有更新,证实本质还是没有成功,是保护的原因还是其他的原因还须要深究,这将作为下一章节的题材。
- 64位体系对于常年运行32位法度的用户的意义只是有可以运行更多地单个32位法度的才能,32位的法度在64位体系下依然不具有寻址4GB+的才能
- 通俗点说,就是扩大仓库的容量,让其可以放下更多货色
后续研究思路:
- 将上述法度在64位景象下从头编译,研究内存应用景象
- Linux Ubuntu 32位体系可以支撑8GB内存,我会实验一下单个法度的寻址才能。
- 那些号称支撑64GB RAM的32位办事器体系,如Windows Server等,就竟单个法度可以应用到几许内存
以上是笔者一些肤浅的懂得,尚待更多的研究论证,我会持续跟进这个话题也迎接您参加这个话题的评论辩论。
我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》