第七章 WINDOWS 7.1 WINDOWS的内存分配 令内存是操作系统的核心部分,所以我们非常有必要了 解内存的分配机制。在DOS下,访问内存的指针是 用段地址:偏移量来表示,所有程序共用一个内存空 间,由低向高分配内存空间,所以任何程序都可以随 便修改内存中的数据,包括不属于自己程序的内存 空间和中断向量表。而且所有程序被局限在1M的基 本内存( Base Memory)中,不能直接访间扩充内存
第七章 WINDOWS ❖ 7.1 WINDOWS的内存分配 ❖ 内存是操作系统的核心部分,所以我们非常有必要了 解内存的分配机制。在DOS下,访问内存的指针是 用段地址:偏移量来表示,所有程序共用一个内存空 间,由低向高分配内存空间,所以任何程序都可以随 便修改内存中的数据,包括不属于自己程序的内存 空间和中断向量表。而且所有程序被局限在1M的基 本内存(Base Memory)中,不能直接访问扩充内存
第七章 WINDOWS 当你启动电脑时, WINDOWS的系统代码会 加载到不同的内存部分。负责管理应用程序 的窗口和图形的代码部分,即∪SER和GD, 加载到内存的低端。 WINDOWS操作系统的 核心是VMM(虚拟机管理器),它将加载到 内存的顶部,并在内存的高端运行。对于 Windows下的程序来说,它所访问的内存地 址不再是真实的
第七章 WINDOWS ❖ 当你启动电脑时, WINDOWS的系统代码会 加载到不同的内存部分。负责管理应用程序 的窗口和图形的代码部分,即USER和GDI, 加载到内存的低端。 WINDOWS操作系统的 核心是VMM(虚拟机管理器),它将加载到 内存的顶部,并在内存的高端运行。对于 Windows下的程序来说,它所访问的内存地 址不再是真实的
第七章 WINDOWS 冷而是虚拟的、独立的全平坦式(fat)的内存空 间。如一个32位的程序可访问内存地址是 0x0000000到0xf4G),指针不再存储段 地址。所谓独立,指的是当进程A加载到内存 0x400000处时,进程B加载到内存的地址时 样是0x400000,两者的地址空间是相互独 立的。程序访问内存地址时,由 Windows自 动换算为真实的内存地址
第七章 WINDOWS ❖ 而是虚拟的、独立的全平坦式(flat)的内存空 间。如一个32位的程序可访问内存地址是 0x00000000到0xffffffff(4G),指针不再存储段 地址。所谓独立,指的是当进程A加载到内存 0x400000处时,进程B加载到内存的地址时 一样是0x400000,两者的地址空间是相互独 立的。程序访问内存地址时,由Windows自 动换算为真实的内存地址
第七章 WINDOWS 这样,程序A是无法直接访问程序B的内存空 可的,也就提高了系统的稳定性。其实,在这 4G的内存地址中,我们能使用的内存地址不到 半。我们的程序是无法分配到0X80000000 以上的内存地址的,这2G的内存地址都是被系 统占用,是只读的
第七章 WINDOWS ❖ 这样,程序A是无法直接访问程序B的内存空 间的,也就提高了系统的稳定性。其实,在这 4G的内存地址中,我们能使用的内存地址不到 一半。我们的程序是无法分配到0x80000000 以上的内存地址的,这2G的内存地址都是被系 统占用,是只读的
第七章 WINDOWS 我们都知道,虽然在运行速度上硬盘不如内 存,但在容量上内存是无法与硬盘相提并论 的。当运行一个程序需要大量数据、占用大 量内存时,内存就会被“塞满”,并将那些 暂时不用的数据放到硬盘中,而这些数据所 占的空间就是虚拟内存。不知大家发现没有, 在 Windows2000(XP)目录下有一个名为 pagefile.sys的系统文件( Windows98下为 Wn386Wp),它的大小经常自己发生变动
第七章 WINDOWS ❖ 我们都知道,虽然在运行速度上硬盘不如内 存,但在容量上内存是无法与硬盘相提并论 的。当运行一个程序需要大量数据、占用大 量内存时,内存就会被“塞满”,并将那些 暂时不用的数据放到硬盘中,而这些数据所 占的空间就是虚拟内存。不知大家发现没有, 在Windows 2000(XP)目录下有一个名为 pagefile.sys的系统文件(Windows 98下为 Win386.swp),它的大小经常自己发生变动