Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1424
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-26 20:04
文章分类
文章存档

2014年(1)

我的朋友
最近访客

分类: 其他平台

2014-06-06 17:28:39

分析Windows用1G内存还慢的起因





当初的内存基础到达了1元/MB的均价,不少友人的电脑离别了可怜的64MB、128MB内存,256MB已经成为尺度配制,512MB甚至1GB的内存也不再是"骇人听闻"。然而有一件事件让良多朋友怀疑:"为什么使用1G内存我的Windows启动、软件运行速度仍是这么慢·"

  装置大容量内存后,系统、程序运行效力没有得到大幅度进步,这是因为系统自身运行机制限制了其管理和应用硬件资源的才能。所以纵然硬件资源异常丰富,如果超越了Windows治理的范畴,那么机能也不会得到显明晋升。

  内存和硬盘

  很多菜鸟经常将物理内存和硬盘混杂在一起,因为两者的容量都是用MB或GB这类的单位表现,阐明物理内存和硬盘之间关联的最好比方是:一个带一张桌子和一个文件柜的小办公室。

  文件柜就像硬盘,程序和数据可以长期保险地寄存在那里,桌面代表物理内存,容许在办公桌上工作的人(作用和处置器雷同)直接用放在桌面上的任何文件(程序跟数据)。为了对一个特定文件进行操作,首先必需从文件柜中掏出文件并放在桌面上。如果桌面够大,可以在桌面上同时打开多个文件。相似地,如果你有更多物理内存,那么可以运行更多或更大的程序并对更多或更大的材料进行处理。

  给电脑增长硬盘空间就好比在办公室里放一个更大的文件柜,而增添更多内存就好比得到一个更大的办公桌,可以同时对更多程序和数据进行操作。

  一、Windows这样使用内存

  想要知道为什么系统速度提升不再显著,必须先懂得Windows 怎么使用内存。这里要波及一个概念——资源。

  这不是平时所说的CPU资源,内存资源或同一的"系统"资源。咱们接下来要讲到的"资源"就是程序可以把持的Windows物件。举例来说,屏幕上显示的每个窗口都是一个资源,每幅图片也都能够能是一个资源。如果一个应用程序翻开了磁盘上的一个文件,那么这个被打开的文件也是一个资源。以此类推,如果一个应用程序需要应用一个资源,它就会向操作体系提出恳求,请求新建一个或从存储器里调用。

  1.情景再现:程序与系统的对话

  程序说:"嗨,Windows,我要新建一个300像素宽,200像素高的窗口,ok·"于是,Windows即时按要求创建或调用这个资源进内存,而后反馈给应用程序一个代,:"好,我已经创立好你要的窗口,它的代,是#38710。"尔后,需要用到新建的这个窗口时,应用程序都用Windows反馈的代,代表这个资源。"Windows,麻烦你在显示屏幕左上角显示#38710。""好!"最后,当应用程序不需要用到该资源的时候,它会要求Windows去除这个资源。"OK,请你删除#38710。""好!"。

  2.指针——内存中的邮政编码

  那么这个代,是根据什么标准天生的呢·在绝大多数操作系统中,它是靠一种叫做"指针"的货色来断定的。你可以把全部内存想像成一个邮局,邮递员把需要寄往各地的信件分类放到许多个不同的信箱里。信箱一个接一个,足足占领了一堵墙。每个心细那个都装了一些函件,包括要送往一个特定地区的信息。而且,就似乎每个地域都有邮政编码一样,每一块可以存储数据的内存空间也有一个地址——指针。代表这个存储空间的一串数字。内存中某局部数据的"指针",也就是这些数据占据的第一处内存空间的地址。所以,如果我是一个一般的操作系统,有一个应用程序要求我调用一个窗口,我就会依照它告知我的要求调用这个窗口进内存,如果这个资源的数据在内存中存储的地址开端于#1234567,那么我就会返回一条信息给应用程序:"好了,我调出了这个窗口,它是#1234567。"

  3.解决指针带来的问题

  在PC中,这种指针有4个字节长。所以假如一个利用程序需要给内存里的某个数据配一个指针,那就需要4字节的内存空间。这样的工作方法给早期的Windows设计者带来了不小的麻烦,由于那时制造工艺尚不发达,内存无比昂贵,一台电脑上有8MB的内存就足以让用户无数次从梦里笑醒了,大多数电脑只能配制4MB内存。在内存如斯缓和的情形下,一个运用程序却常常须要用到多少百万个资源。要用这些资源,就要个每个资源配发一个指针。每个指针盘踞4个字节,几百万个指针,就会耗费掉数目客观的一块内存空间。这就比如一份钱很少,但如果要发给全国国民每人一份钱,那就是至少一千三百万元的巨款了。

  所以,Windows设计者采取了另外一种替换计划。他们创建了资源表。就是把当前调入内存的所有资源的信息登记到一个清单。这样一来,当应用程序要求系统调用一个资源时,系统调用后就不给它配发指针了,而是直接告诉应用程序该资源在资源表中的序,。"好了,我已经调用了你需要的资源,它在资源表里面的序,是#383"因为需要不是内存地址,所以就可以用一个只要占用2字节的数字表示。这只是两个字节的差距。但当你只有几MB内存,而你运行的程序动咎调用大批资源时,这两字节的差距就会带来很大的上风。


你晓得吗·

  微软64位操作系统没1GB内存就别玩

  在32位Windows 2000/XP中,最大支撑4GB的内存,每个应用程序最多只能使用2GB内存,因为另一半的内存也留给系统使用了。而在64位WindowsXP中,这个限度不了,每个程序能完整使用4GB内存,除Windows,微软还在开发64位版本的SQL Server 2000和Windows Server2003,不外要运行这些应用程序,需要你的电脑至少得有1GB内存。

  4.时过境迁,妙计成缺点

  但这种方式也有它的弊病——两个字节可能表示的不同数字十分有限

  我们可以做个试验:请你写不同的数字。如果只准你写一位数,那就只能写出十个不同数字。如果制约写两位数,固然能写出更多,但总数依然有限。以此类推,许可位数越多,能写出的不同数字就越多。但只有位数有限制,写出的不同数字的总数就始终有限。同理,如果答应系统使用4字节的序,,那么在这个"位数限制"下,可以有几十亿个不同的序,可供使用。但如果只准系统使用2字节序,,能用的序,就会锐减到65536个。于是,前面我们讲的资源表就不能无穷的拉长。其中的序,最多只有65536个

  于是问题来了。当调用了65536个资源后,再想调用更多的资源,纵然内存空间还有1GB,足以存储数百亿个资源,但只有2字节的资源表却无法生成更多的序,!没有序,,就象征着无法将各资源区离开来,应用程序天然无奈使用这些没有"户口"的资源!事实上,因为没有序,可用,系统基本无法同时调用65536个以上的资源。

阅读(238) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~