浏览器之家


菜鸟必看 揭开系统资源的神秘面纱

许多朋友对计算机里头的“当红”名词“系统资源”可能并不陌生,在报刊或书籍上我们经常可以看到它的影子,但对于这位朝夕相处的朋友,你究竟了解多少呢?不少朋友一直存在认识上的误区,他们把系统资源和内存占用当作一回事了。真实的情况如何呢?想弄清楚问题的答案,那就随本文一起揭开系统资源的神秘面纱。
  
  一、溯本清源,弄清各类资源的含义

  “物以类聚,人以群分”,对于资源的概念划分,我们听得最多的主要有:CPU资源、内存资源、系统资源、用户资源、GDI资源,这些不同名称的资源,彼此间究竟有没有联系?要走出认识上的误区,首先必须弄清楚它们的含义。  

  先从系统资源说起吧。简单地说,当应用程序运行时,内存需要一块空间来追踪、保留正在执行的程序的状态,比如按钮、光标、菜单位置和位图、窗口状态等,存储这些信息的空间有个专有名词来形容,那就是我们熟悉的“系统资源”,而存储这些信息的空间是一种称为“堆”的内存块,你可以把“堆”理解成采用特殊机制管理的内存空间。

  根据存储对象类型的不同,系统资源分为两个方面:用户资源和GDI(Graphic Device Interface,图形设备接口)资源。由系统内核程序“User.exe”管理的堆叫作用户资源堆,用来存储窗口状态、菜单位置等信息;由系统内核程序“Gdi.exe”管理的堆叫作GDI资源堆,用来存储画刷、画笔、字体、调色板等图形对象信息。用户资源堆和GDI资源堆合称为系统资源堆,习惯上我们称之为系统资源。

  现在大家应该明白,系统资源和内存资源并不是同一回事。我们说一个程序使用了多少内存资源,实际上就是指该程序运行时须要占用多少内存空间,依据软件设计的优化程度、功能强弱等因素,有的只需几百KB,有的却需要几十MB甚至数百MB,通常比系统资源要大得多。

  CPU资源就更好理解了,它实际上指的是CPU使用率,软件运行时都要通过CPU进行数据运算,占用一定的CPU执行时间,CPU使用率是衡量软硬件设计的重要指标。某些设计不完善或陷入死循环的程序,往往会让系统处于无反应状态,原因就是它们的CPU使用率很高。在某些软件评测文章里,我们通常还可以看到“资源占用过高”的评语,但实际上这种提法并不全面,应该具体指出是哪类资源占用过高,比如CPU资源、内存资源或系统资源。   

二、寻根把脉,探讨系统资源管理机制  

  “瘟酒五”、“瘟酒八”的不稳定是众所周知的,Windows 2000/XP的稳定性就好多了。事实上,引发Windows 9x不稳定的罪魁祸首就是系统资源的管理方式。基于NT内核设计的windows 2000/XP,同使用Win9x内核的Windows 95/98/ME相比,管理系统资源的机制是完全不同的。  

  1.Windows 9x

  在Windows 9x系统下,微软将系统资源分为五个堆,其中用户资源堆占据三个,GDI资源堆为两个。三个用户资源堆分别是:16位的用户堆,大小为64KB;32位的窗口堆,大小为2MB;32位的菜单堆,大小为2MB。两个GDI资源堆分别是:16位的GDI堆,大小为64KB;32位的GDI堆,大小为2MB。从划分类型来分析,我们不难发现有16位和32位两种,Windows 9x如此设计系统资源的原因,就是为了让旧的16位程序能在新的操作系统上正常运行。   

  著名的“木桶原理”大家都知道吧?如果组成木桶的木板长短不一,那么这个木桶的最大容量不取决于长的木板,而取决于最短的那块木板。木桶原理同样适用于系统可用资源,道理很简单,当某个类型可以分配的资源被占尽时,即使其它部分剩下的资源还很多,系统也会因资源不足而出现问题。所以说,可用的系统资源一定等于可用用户资源和可用GDI资源中较小的那一个。为了保持与16位应用程序的兼容性,Windows 9x的大量数据要占用16位的64KB的资源堆,这部分资源首先被大量消耗,限制系统资源使用的是64KB的资源堆而不是2MB的资源堆。

评论

没安装畅言模块