内存随着计算机“飞入寻常百姓家”,逐渐的介入人们的生活……
魔兽世界的fans:我的内存不够,玩不了魔兽……
古墓丽影的fans:我的内存不足,跑不了古墓……
那么,本文就和大家谈谈几个问题:
1.内存是什么玩意?
2.内存的访问机制是怎样?
3.内存的大小限制是是什么?
4.内存常见相关问题。
1.内存是什么玩意?
在早期的计算机,使用CPU的寄存器来存储数据,如ENIAC,那时候的计算机还是电路,很多电阻、电容、电感……到了后来
出现集成电路,这些电子元件微型化集成到一片小小的半导体硅中,速度有很大提高,但是价格也随之飞升,为了缓和存储危
机,人们把不常访问的数据放在外部的存储器中,于是出现了内存。内存的本质仍然是电路(集成电路)。
2.内存的访问机制是怎样?
在16位时代(DOS时代)8086的CPU中,地址线是20位,能够表示的范围是2的20次方=1M,CPU将段寄存器,如堆栈段SS
给出的段值,加上段内偏移,如堆栈指针SP,组合成20位的实际地址。CPU就能够访问这个内存单元……
在32位时代,80386以上的CPU中,地址线是32位,能够直接寻址2的32次方=4G的内存空间,然而如果用这个地址线去直接
寻址内存单元需要在实方式下,也就是8086方式下,这时仍然用20位去寻址,也就是只能识别1M内存……
大家不要认为掉牙,当电脑关机重启,就是进入这个模式下,当操作系统启动才会做其他操作,进入保护模式运行。
而所谓的保护模式,也采用内存分段的方式,用段值加上偏移得到一个线性地址,这个线性地址在非分页方式下,它就是一个
物理地址,即确确实实的内存单元;而在分页模式下,将更加复杂,但是它为模块化程序设计等提供了强有力的帮助,限于水
平问题(因为不能保证我的理解是正确的,不想误导人,呵呵),就不说了。
但是无论是否分页,段内偏移都有2的32次方=4G的空间,也就是我们所说程序虚拟的4G空间的来由……
这些文字性的东西太多,我相信有人打瞌睡了……
3.内存大小的限制是什么?
我们还是来看几张图片吧,第一张是Windows XP 32位下 4G内存的截图
这是我的个人计算机,4G内存在Windows下,只能识别除3.25G,那些所谓的RamDisk并不能从根本上解决问题,早在去年之
前,我曾为这个问题苦恼不久,还试图装过Win2003来家用,甚至是Windows XP x64版本(该版本不错,但是不兼容此前多数
的32位程序)
当然,今年的几台Server机到手,就爽多了,其中一个马马虎虎的机子在这篇文章的后面附有,这里就不写了。
http://blog.csdn.net/prsniper/article/details/6712569
另外一台更强大的,关系服务器安全问题,也不贴出来。呵呵……
在这里,还引发另外一个概念:虚拟内存,这个东西在不同情况下有不同的意义。在Windows下,他是被当做应急使用的硬盘空
间(硬盘做永久存储用的,也可以缓解内存的使用危机,随着内存性能提升和成本降低,意义不大了),如图:
在对应盘符下,会有一个pagefile.sys的隐藏文件,删也删不掉,那么大,又不知道干嘛。呵呵,虚拟内存(页面文件)是可以禁用
的,不过没什么意义,这里就不说怎么搞了。
而在硬件检测软件Everest中,这个名称却是这样:
图中物理内存当然是内存条上的空间了,交换区则是物理内存加上页面文件的总数,而虚拟内存则是交换区加上物理内存的总数,
其实就是物理内存X2加上页面文件(也就是Windows的虚拟内存)……
到这里,你会发现内存的数值,被大块大块切掉了。
实际上,现在去追究Windows XP 如何真正意义识别4G已经不重要了,64位即将到来,现在已经很多64位的双核CPU,Server还
有4核、6核、8核的,不久的将来,将能够寻址2的64次方=4G的4G次方大小的内存(这个只是偏移量,具体要看地址线数量)。
存储空间的简写如下:
1KB=1024字节
1MB=1024KB=1048576字节
1GB=1024MB=1073741824字节
1TB=1024GB=1099511627776字节
1PB=1024TB=1125899906842624字节
1EB=1024PB=1152921504606846976字节
1ZB=1024EB=1180591620717411303424字节
1YB=1024ZB=1208925819614629174706176字节
2的64次方=18446744073709551616字节,已经大于1EB了,只要地址线也是64位,……也许,威尔·史密斯那部《智能叛变》
的硬件基础,马上就要完成……
其实各个计算机部件:显卡,声卡,网卡等等,都需要占用一定份额的内存,尤其是显卡,这里就不详细说了。
4.内存相关常见问题
内存故障,开机黑屏(也可能是显示器没开- -)或者报警(间歇长鸣),如果你的主板有自检指示灯,那么它应该在C1停止,可以
初步认定是内存问题。多数是没插好,松动,或者金手指磨损或氧化等等。
下面这样的对话框:
说明内存访问冲突,一般是缓冲区溢出等造成了,也可能是远线程注入,遇到一些异常情况造成访问不能访问的内存地址
内存容量减半,如原本明明是2G,现在开机突然变1G,如果只有一个内存条,那么检查是否是有金手指脱落,断脚等,如果是两条
应该检查是否另外一条没有插牢……
经常死机,死掉了。杀毒,先软后硬,确认无毒,则检查内存是否有单元损坏,有专门的内存检测工具,很小的,有绿色版。
很多东西,时间问题,就不多说了;以上内容,有些是我几年来总结的,没有理论基础,不对的地方,望诸位贤能之士批评指正。
相关文章可参考:http://baike.baidu.com/view/976.htm
就这么多吧。