Wi n d o w s的内存结构

进程的虚拟地址空间

在Windows 2000中,属于操作系统本身的内存也是隐藏的,正在运行的线程无法访问。这意味着线程常常不能访问操作系统的数据。Windows 98中,属于操作系统的内存是不隐藏的,正在运行的线程可以访问。因此,正在运行的线程常常可以访问操作系统的数据,也可以破坏操作系统(从而有可能导致操作系统崩溃)。在Windows 98中,一个进程的线程不可能访问属于另一个进程的内存。

 

13.2 虚拟地址空间如何分区

每个进程的虚拟地址空间都要划分成各个分区。地址空间的分区是根据操作系统的基本实现方法来进行的。不同的Wi n d o w s内核,其分区也略有不同。表1 3 - 1显示了每种平台是如何对进程的地址空间进行分区的。

表13-1 进程的地址空间如何分区


如你所见, 3 2位Windows 2000的内核与6 4位Windows 2000的内核拥有大体相同的分区,差别在于分区的大小和位置有所不同。另一方面,可以看到Windows 98下的分区有着很大的不同。下面让我们看一下系统是如何使用每一个分区的。

注意 M i c r o s o f t公司正在积极开发6 4位Windows 2000。但是当我撰写本书时,该系统仍在开发之中。应该使用本书中关于6 4位Windows 2000的信息,将它们用于你的当前项目的设计和实现中。不过应该知道,等到6 4位Windows 2000上市时,本章中介绍的一些详细信息很可能已经发生了变化。至于I A - 6 4(6 4位I n t e l结构)的内存管理,分区和系统页面大小的特定虚拟地址范围也有可能变更。

将虚拟地址转换成物理存储器地址的流程图