线性内存概括
线性内存是应用程序运行的空间(或房间),而物理内存是需要时分配到此空间的能使用的建筑材料。
或者考虑另外一个比喻。当你出去度假时,你或许向旅店预订房间。当你这样做时,旅店用你的名字保留一个房间,但是只有你到达他们的前台时,房间的钥匙才会给你。如果你实际上没来的话, 旅店或许会把为你保留的房间给另一个到来的顾客用。因此旅店房间的预订的就像Windows—两者都负责分配‘房间’。当你向旅店预订房间时,这就像Windows应用程序在实际需要使用RAM前就申请RAM一样。当你在旅店的前台登记时, 这就像Windows应用程序试图访问分配给它的线性内存范围。当你登记时,旅店就从可用的房间之中选一间给你住。当Windows应用程序想访问其线性内存时, Windows就意识到并试图提供物理内存给应用程序(即给它RAM房间的钥匙)去处理眼前的任务。
Windows95/98中的线性内存
在Windows95/98中的线性内存模式由三部分组成而不是一部分。原来在Widows3.1x中的线性内存区域现在叫做系统区域。另外加入两个内存区域:
私有内存区域,Windows32位应用程序就在这里运行
共享内存区域,内存映射文件驻留在这里,Windows32位应用程序相互之间在这里共享信息,Windows32位应用程序与Windows 16位应用程序也在这里共享信息。
不必担心Windows95/98提供三个线性内存范围而不是一个。线性内存仍然只是房间—在Windows95/98中只是有更多的房间,并且没有必要设置PageOverCommit, 因为Windows95/98能动态地生成它的线性内存地址范围,几乎高达386处理器结构的完全4GB(gigabyte)容量。这意味着Windows 95/98不会用完线性内存。因此如果你使用Windows95/98,你不必担心线性内存的使用。它仍然只是房间,只有当Windows分配物理内存(RAM) 给线性内存的一段范围时它才能使用。如果你用完了RAM,你仍然需要保存某些RAM中的东西到磁盘(即你应该保存自你最后一次保存后做过改动的文档)。一当你保存了这些改动, Windows就能使用RAM去填充某些另外的房间。
内存映射文件
内存映射文件的概念简单而优美。一个内存映射文件只是一个文件,它的整个长度已经被分配了线性内存(房间)。当一个应用程序访问分配到此文件的任意一部分线性内存时, 此文件的相应部分被读入内存,而RAM被放在这个应用程序访问的线性内存地址。
如果需要RAM的话,Windows能分辨这个文件区域是否被改动,如果没改动的话,它能完全扔掉RAM的内容,它知道信息仍然存储在磁盘上。如果文件区域已经被改动的话, 那么在RAM被重新使用之前RAM的内容被写到这个文件。对于应用程序文件,这使得事情简单了。Windows仅仅分配线性内存给整个应用程序,然后开始执行它。当应用程序的各个部分被需要时, 它们就被装进RAM。当应用程序的一个部分一段时间不曾被用到时,这个部分能被丢弃,而需要到时候能被重新装载。