三、Windows的存储管理 1.内存管理的基本方法- M9 _" C( e! P9 `2 U
多任务处理系统中,存储管理的主要任务包括:内存分配和回收、地址变换、内存扩充、内存共享和保护等功能。( Y) ?7 K5 n5 ~" U
(1)分区式存储管理
8 ]: }" B5 x! @( A9 i& G (2)段页式存储管理' b$ z# d/ e0 ?
2.虚拟存储器9 T- _# U9 R+ T0 C& |, r
(1)虚拟存储技术
2 u2 ^5 X/ h; U6 q2 X( y9 w, M 虚拟存储技术的基本思想是:在程序装入时,不必将其全部读入到内存,而只需将当前需要执行的一部分页读入内存,就可让程序开始执行。在程序执行过程中,如果需执行的指令或访问的数据在内存,就可让程序开始执行。在程序执行过程中,如果需执行的指令或访问的数据尚未在内存(称为缺页),则由处理器通知操作系统将相应的页调入到内存,然后继续执行程序。另一方面,操作系统也将内存中暂时不使用的页调出,保存在外存上,从而腾出空间存放将要装入的程序以及将要调入的页。页的调入和调出完全是由操作系统自动完成的,从编程的角度来看,该系统具有的内存容量,将比实际的内存容量大得多,所以称之为虚拟存储器。
2 L8 @! c3 Z* Q# ?: R (2)虚拟存储器的实现) z' T. P# @& d1 ~/ B' S
在Windows98中,虚拟存储器是由计算机中的物理内存(插在主板上的RAM)和硬盘上的交换文件“制造”出来的,系统通过在物理内存和交换文件之间来回地交换程序和数据页来管理总的可用内存。6 L; o( a/ d' q0 x
(3)Windows虚拟存储器的设置与维护3.Windows地址空间的结构
# S7 @0 s: C" D/ v6 z, t% A 在保护模式下,Windows程序的逻辑地址空间为4GB。为了进行有效地使用和管理,操作系统对它们的区域划分作了统一的规定。% }$ D9 n8 t5 k* S
(1)Win32程序的地址空间8 i9 T3 J1 C: S* V$ y
NULL指针分配的地址空间私有地址空间共享地址空间系统地址空间
$ T: E1 x: w& s4 @+ \ (2)Win16程序的地址空间- K# ~: N; j" f0 I8 M8 g. ]; F5 y# k u
(3)MS DOS应用程序的地址空间
) j9 ]. E8 } m 4.在应用程序中使用虚拟存储器5 s7 T- \, [) u# T( A4 T4 A
Windows98为应用程序开发提供了3种使用和管理虚拟存储器的方法,Win32API也提供了相应的3组内存管理函数,以适应不同的使用情况。
3 T9 K- d$ V2 O- a: M2 c (1)以页为单位的虚拟内存使用方式' l0 Z# d, {0 j+ l/ r
(2)内存映射文件2 h% K5 u3 U) q9 k
(3)堆 |