3.3 Windows XP操作系统的存储管理 3.3.1存储管理概述 操作系统中的存储器管理是指对主存 ( 又称内存 ) 的管理。由于程序运行和数据处理都是在主存中进行, 所以主存和 CPU 一样也是一种重要的资掘。如何对主存进行有效的管理, 不仅直接影响到存储器的利用率, 还影响到系统的性能。 1. 存储器管理的功能 存储器管理主要有以下几个功能: (1) 存储分配按分配策略和分配算法分配主存空间。 (2) 地址变换将程序在外存空间中的逻辑地址转换为在内存空间中的物理地址。 (3) 存储保护保护各类程序 ( 系统、用户、应用程序 ) 及数据区免遭破坏。 (4) 存储扩充解决在小的存储空间中运行大程序的问题,即虚拟存储问题。 2. 存储分配 存储分配主要考虑如何提高空间利用率问题。常用的存储分配方式有三种: (1) 直接分配程序员在编写程序时,在源程序中直接使用主存的物理地址。这种方 式对用户要求高, 使用不方便, 容易出错, 空间利用率不高。早期就使用这种分配方式。 (2) 静态分配在程序装入前, 一次性申请程序所需要的地址空间。存储空间确定后在整个程序执行过程中不再改变。要求整个程序必须一次性整体装人, 若主存空间不够, 则不能执行。这种方式简单, 但存储空间利用率低, 在多道程序系统中难于实现主存的共享。 (3) 动态分配在程序被装入主存或执行过程中, 才确定其存储分配。在程序执行过程中可以根据需要对存储空间提出动态申请。不要求程序一次性整体装入, 装入的程序在执行过程中, 其相应位置可以发生变化。这种方式管理复杂, 但存储空间利用率高, 容易实现主存资源的共享。在现代多道程序系统中, 主要采用动态分配方式。 3. 地址变换 在用各种程序设计语言编写的源程序中规定, 必须用符号名来定义被处理的数据, 将其称为符号名空间。源程序经编译后产生目标程序, 它是以逻辑地址存放 (不是实际运行的地址 ), 被称为逻辑地址空间。当程序运行时要装入主存, 则要将逻辑地址转换成主存中的物理地址, 称其为物理地址空间。三个不同空间的关系如图 3-10 所示。  图 3-10 地址转换示意图 例如,在图 3-10 所示样例中, 程序的符号名空间中定义了三个变量a、b和c。程序经编译后, 在目标程序的地址空间中为a、b 和c分配了逻辑地址。当程序被装入主存空间运行时, 操作系统的存储分配程序将a、b 和c的逻辑地址转换成能够在主存中存放和处理的物理地址(绝对地址)。图3-15中所示的物理地址分别为 Ox2FF0、Ox3ECOH 和 Ox6DAA 。 地址变换是将存放在外存逻辑地址空间中的程序装人主存, 重新分配物理地址, 因此也 被称为地址重定位;又分静态重定位和动态重定位。下面介绍动态重定位。 动态重定位是指在程序执行过程中进行重定位, 更确切地说是在每次访问内存单元前 才进行地址变换。该方法是通过硬件的地址变换机构来实现重定位的。最简单的方法是设置一个重定位寄存器,用来存放装入主存空间时的起始地址。程序的实际地址是由逻辑地址加重定位寄存器的值来确定。如图 3-11 所示。  图 3-11 动态重定位示意图 例如,在图 3-11 所示样例中, 程序语句“Load1,[300]”是在逻辑地址 300 单元处读入数据“1500”, 经动态重定位操作后, 该语句实际读入数据“1500”的物理地址是 1300( 即1000+300) 。 4.存储保护 在计算机中运行的系统程序、应用程序和用户程序都存放在主存中。为了确保各类程序在各自的存储区内独立运行, 互不干扰, 系统必须提供安 全保护功能。作为安全保护的一种措施, 就是把各类程序的实际使用区域分隔开, 使得各类程序之间不可能发生有意或无意的损害行为。这种分割是靠硬件实现的。用户程序只能使用用户区域的存储空间, 而系统程序则使用系统区域的存储空间, 如图 3-12 所示。  图 3-12 存储保护示意图 5. 存储扩充 在计算机中主存空间是常数, 要想处理大的程序, 就要想方设法扩充主存空间。主导思想是:如何在有限的主存空间中, 处理大于主存的程序。“自动覆盖”技术、“交换”技术和 “虚拟存储”技术是扩充主存空间常用的有效方法。 自动覆盖技术的主要思想是:将大的程序划分为在主存空间中可以容纳的独立的逻辑程序段, 每次只调入其中的一个程序段运行。后面调人的程序段覆盖当前程序段弃用的主存空间, 以此达到扩充主存空间的目的。 交换技术的主要思想是: 可以根据需要将运行的程序在内、外存之间进行调人或调出的 交换, 即可以把执行了一段时间而因故暂停的进程由系统调出主存, 以文件的形式存入外 存。而将下一个程序装人主存运行。交换技术是对自动覆盖技术的改进, 其目的是为了更 加充分地利用系统的各种资源(包括内、外存储器、CPU 等)。 3.3.2虚拟存储器的设置 1.虚拟存储器的概念 虚拟存储技术是解决在“小内存中求解大问题”的存储管理技术。虚拟存储器是通过交换功能,在逻辑上对主存空间加以扩充的一种存储系统。它是通过采用内、外存结合的办法, 把外存空间作为主存使用, 以此为用户提供足够大的地址空间一一虚存空间。用户可在逻辑地址空间内编程, 而不考虑实际主存的大小。在多道程序系统中, 为每个用户的每个进程都建立一个虚拟存储器环境。虚拟存储器技术是在硬件和软件的共同支持下实现的。硬件负责虚、实地址的转换;软件负责实存( 内存 )和虚存( 外存 )之间的信息调度管理。 程序在虚拟存储器环境中运行时, 并不是一次把全部程序装入到主存中, 而是只将那些当前要运行程序段装人主存运行, 而将其余部分存留在外存中。程序在执行过程中, 若所要 访问程序段尚未装人主存, 则向操作系统发出请求, 将它们调人主存。如果此时主存已满, 无法再装入新的程序段, 则请求操作系统的置换功能, 将主存中暂时不用的程序段置换到外存去, 腾出足够大的主存空间后, 再将所要访问的程序段调入主存, 使程序能够继续运行。 虚拟存储器有以下四个特性: (1) 虚拟扩充。虚拟存储器不是物理上扩大内存空间,而是逻辑上扩充了内存容量。 (2) 部分装入。每个作业不是全部一次性地装入内存,而是分成若干部分。 (3) 离散分配。一个作业分成多个部分, 没有全部装入内存。即使装入内存的部分也不必占用连续的内存空间, 而是“见缝插针”, 即哪里有空闲地方就装入另一部分。这样, 一个作业在内存的部分就可能散布在内存的不同的地方, 彼此并不连续。 (4) 多次对换。在一个进程运行期间,它所需的全部程序和数据要分成多次调入内存。 每次调入的一部分只解决当前需要, 而在内存的那些暂时不被使用的程序和数据, 可换出到外存的对换区。甚至把暂时不能运行的进程在内存的全部映像都换出到对换区, 以腾出尽量多的内存空间供其他运行进程调入内存使用。被调出的程序和数据在需要时再调入内存中(换入)。 虚拟存储器的容量取决于主存和外存之和的容量。一个虚拟存储器的最大容量是由计算机系统的地址结构所确定的, 即由地址长度所确定的。 例如,Windows XP 是 32 位的操作系统, 它的地址空间是按 32 位编址的, 因此, 在 Windows XP 中最大的存储空间是 232B 或 4GB。也可以说, 每个用户程序可使用的最大存储空间是4GB。但是, 对于普通微型计算机来说,4GB 的主存空间无疑是一种资源浪费, 更不要说为每个程序提供如此巨大的存储容量了。显然, 这 4GB 的存储容量是虚拟存储空间。 2.Windows XP虚拟存储器的设置 Windows XP 中的用户可根据自己的需要设置虚拟内存的大小。设置步骤如下: (1)在“我的电脑”上单击鼠标右键, 选择“属性”命令, 在弹出的“系统属性”的对话框中,选择“高级”选项卡,见图3-15所示系统属性对话框。 (2)在系统属性对话框中的“性能”栏上,单击“设置”命令按钮, 在弹出的“性能选项”对话框中, 选择“高级”选项卡,见图3-16所示性能选项对话框。   图 3-15 系统属性对话框 图 3-16 虚拟内存对话框 (3)单击虚拟内存中的“更改”按钮, 弹出“虚拟内存”对话框, 如图 3-17所示。 首先选择要作虚拟内存的磁盘, 如图3-17中选择 D 盘。 在下面“自定义大小”的单选按钮中, 输入初始值的大小和最大值, 单击“设置”按钮, 最后单击“确定”按钮即可。  图 3-17 虚拟内存对话框 3.4 Windows XP 操作系统的设备管理 3.4.1设备管理概述 这里所说的“设备”是指所有输入/输出设备、控制器和通道。设备管理的目标一是在操作系统统一调度和控制下, 让用户便捷、有效地使用输入/输出设备, 实现各种用途的输入/输出操作:二是提高设备的利用率以及提高 CPU 与输入/输出设备之间的并行工作能力。 设备管理的重要任务就是负责控制和操纵所有输入/输出设备,实现不同类型的输入/输出设备之间、 输入/输出设备与 CPU 之间、输入/输出设备与通道和输入/输出设备与控制器之间的数据传输, 使它们能协调地工作, 为用户提供高效、便捷的输入/输出操作服务。 1.设备管理的目的 设备管理的目的是: (1)方便用户操作 由于设备的物理特性十分复杂, 为了控制设备完成输入输出操作, 首先需要掌握设备的硬件结构和工作原理等, 然后才能编制输入/输出程序。通常使设备完成一个简单输入/ 输 出的程序可能要使用几十甚至几百条指令。因此, 面对设备的程序设计是一项十分复杂且繁重的工作。设备管理的主要目标之一就是面对用户把设备复杂的物理特性屏蔽起来, 不同设备之间的差异交由操作系统来处理。 (2)设备独立于用户程序 在多道系统中物理设备是由操作系统控制和管理的, 用户程序不能直接对物理设备进行操作。用户使用设备时需要向系统提出请求。操作系统把物理设备逻辑化, 仅向用户提供逻辑设备。用户在程序中使用的是逻辑设备, 由操作系统建立逻辑设备与物理设备之间的联系。这样就使得用户在程序中使用的设备与实际使用的物理设备无关, 从而使物理设备独立于用户程序, 这种特性称为设备独立性。 (3)提高设备利用率和处理效率 在多道程序系统中, 设备管理必须和进程管理有效地配合, 使设备和处理机能够高度地并行工作, 同时各个设备之间也要能够并行工作, 从而达到提高设备利用率的目的。同时设 备管理要为各个作业或进程合理地分配各种设备, 处理好多个进程对设备的竞争与共享, 还 要均衡各个同类设备的工作状况, 避免出现忙闲不均的现象, 使各个设备都能以较高的工作效率执行各种输入输出操作。 2.设备分类 从不同角度、按不同的方式,输入/输出设备可以分为不同的类型。 1)按所属关系分类 (1)系统设备 在操作系统生成时己登记在系统中的标准设备称为系统设备。这些设备是计算机系统运行所需的基本设备。通常有键盘、打印机、磁盘机、显示器等。系统设备由操作系统提供设备的处理程序。 (2)用户设备 在系统生成时并未登记到系统中 , 由用户根据其运行需要向系统提供的设备称为用户设备。这类设备的处理程序是由用户提供的。操作系统要通过适当的手段把用户设备纳入到系统中, 以便对它们实施统一的管理。系统中可以由用户加入设备的方法具有灵活性 , 同时也要求操作系统具有较强的设备控制能力。 2)从系统对资源分配的角度分类 (1) 独占设备 指在一段时间内只允许一个用户访问的设备,如打印机。 (2) 共享设备 指在一段时间内允许多用户同时访问的设备,如磁盘。 (3) 虚拟设备 通过虚拟技术将慢速独占设备模拟成高速共享设备, 以供多个用户使用。 3)按数据组织和存取方式分类 (1)块设备 块设备是以一定大小的数据块为单位输入/输出数据的, 并且在设备中的数据也是以物理块为单位进行组织和管理的。这类设备一般是作为计算机的辅助存储设备使用的, 它们比内 存储器的读/写速度要低, 但它们的存储容量很大。例如, 磁盘机、磁带机、磁鼓及光盘等都属于块设备。 (2)字符设备 字符设备是以字符为单位进行输入/输出数据的设备, 并且以字符为单位对设备中的信息进行组织和处理。例如, 如磁盘、光盘等都是字符设备。它们以每次一个字符的方式进行数据传输, 所以数据在设备与系统 (通常为内存) 之间的传送形成了字符流。 3.设备控制器 计算机的 输入/输出 设备一般包含机械部分和电子部分。电子部分被称为设备控制器, 它负责在 CPU 和输入/输出设备之间传输数据, 机械部分负责实现输入/输出的操作。 4.通道 在现代计算机系统中,把专门负责I/O操作的处理机称为通道。由于引人通道, 使得CPU 与通道、通道与通道、通道与控制器之间以及通道和设备之间充分并行工作, 从而使输入/输出系统形成了一个完整、独立的系统部件。 5.设备管理的功能 为实现设备的有效管理, 设备管理程序通常具有以下功能: (1) 建立设备管理数据记录记录并管理系统中的 I/0 设备、控制器、通道的状态信息。 (2) 设备分配根据用户请求按既定分配策略和算法分配 输入/输出 设备、控制器、通道, 同时管理输入/输出设备、控制器、通道的排队队列。 (3) 缓冲区管理为缓解 CPU 处理高速度和输入/输出处理低速度的矛盾, 通常设立一些缓冲区, 使得 CPU 和输入/输出设备之间通过缓冲区来传送数据。缓冲区管理包括缓冲区的建立、分配与释放等。 (4) 实现输入/输出操作通过调度、执行通道程序或输入/输出驱动程序, 实现输入/输出设备的操作。 3.4.2设备管理的操作 1.查看系统设备 Windows XP 可以使用多种系统设备, 包括 DVD/CBROM 驱动器、硬盘控制器、调制解 调器、显示卡、网络适配卡、监视器、数码相机和扫描仪等, 用户可以通过查看这些设备来了解它们的基本情况。查看系统设备的操作步骤是: (1)在桌面 “我的电脑”图标上单击鼠标右键出现快捷菜单,选择“属性”命令。在弹出的“系统属性”窗口中选择“硬件”选项卡,见图3-18系统属性对话框。 (2)在系统属性对话框上单击“设备管理器”按钮。在弹出的“设备管理器”窗口上用户可以查看所有已经安装到系统中的硬件设备。见图 3-19 设备管理器窗口所示。其中那些带有黄色问号的设备是没有正常安装的设备。在默认的情况下, 系统设备是按照类型排序。如果用户要按其他方式排序, 可以在“查看”菜单中进行选择。   图3-18系统属性对话框 图 3-19设备管理器窗口 2.禁用和启用设备 禁用和启用设备, 在设备管理中是经常进行的工作。当某一个系统设备暂时不用时, 用户可将其禁用, 这样有利于保护系统设备。例如,要暂时用调制解调器 (Modem)。操作步骤是: (1)在“设备管理器”窗口中, 双击“调制解调器”选项, 展开该选项。右击展开的调制解调器设备选项, 从弹出的快捷菜单中选择 “停用”命令, 如图 3-20停用调制解调器所示。 (2)选择“停用”命令后, 弹出如确认“停用调制解调器对话框”, 提示禁用该设备会使其停止运行。 (3) 单击“是”按钮, 即可禁用该设备, 此时在设备管理器窗口中, 该设备前的图标上出现禁用符号“╳”。如图 3-21所示   图3-20 停用调制解调器 图3-21调制解调器被禁用 要启用设备, 只需在设备管理器中右击要启用的禁用设备, 例如,刚禁用的调制解调器, 然后从弹出的快捷菜单中选择 “启用”命令即可。 3.查看设备属性 通过“设备管理器”窗口, 用户可以查看系统设备的属性。如果需要, 用户还可以修改设备的属性, 如中断、输入/ 输出范围等。下面以“网络适配器”为例,介绍如何查看设备属性。 在“设备管理器”窗口中, 双击“网络适配器”选项, 右击展开的网络适配器设备选项, 然后从弹出的快捷菜单中选择 “属性”命令; 打开“网络适配器属性”对话框。 在网络适配器属性”对话框的“常规”选项卡中,可以查看到网络适配器的设备类型、制造商、设备状态以及设备用法。 用户也可以单击 “高级”、“驱动程序”和“资源”选项卡, 然后在打开的相应选项卡中进行查看。 4.安装即插即用设备 Windows XP 是基于强大的即插即用机制的设备管理,能够识别并且自动地为其配置驱动程序。 Windows XP 能够识别大部分的硬件, 并通过设备管理器, 对正常安装或非正常安装的设备进行管理。 要安装即插即用设备, 应了解 Windows XP的即插即用技术。即插即用技术的关键特性之一就是事件的动态处理, 可对安装的硬件进行自动的动态识别,包括初始的系统安装、系统启动期间对硬件更改的识别,以及对运行时的硬件事件的反应。它允许以用户模式的代码执行注册并收集某些即插即用事件。 要安装即插即用设备, 只需要进行设备的硬件安装, 不需要安装该设备的驱动程序, 系统会自动识别并加载它的驱动程序。 5.安装非即插即用设备 对于符合即插即用的设备, 在添加或删除时,Windows XP 将会自动识别并完成配置工作。但是, 对于非即插即用设备的安装, 就需要用户自己去安装驱动程序。下面就以非即插即用的声卡为例来介绍设备的安装方法。安装非即插即用型声卡的操作步骤如下: (1) 打开机箱,在计算机上正确地安装声卡硬件。 (2) 打开 “控制面板”窗口, 双击“添加硬件”图标, 打开“添加硬件向导”对话框, 如图3-22 所示。用户可以使用该向导添加新的计算机硬件, 或者用于解决硬件问题。单击“下一步”按钮, 向导将自动对计算机中未安装驱动程序的硬件进行搜索,搜索完成后将打开“硬件是否已连接”对话框,如图 3-23所示。   图3-22添加硬件向导对话框 图3-23选择硬件是否连接 (3) 在“您已经将此硬件连接到计算机了吗?”下面选中“是, 我已经连接了此硬件” 单选项,并单击“下一步”按钮, 这时系统将弹出如图 3-24所示的对话框, 显示用户当前计算机中已经安装的所有硬件列表。 (4) 在 “已安装的所有硬件” 列表最下面, 选择 “添加新的硬件设备”选项, 然后单击“下一步”按钮,打开如图 3-25 所示的选择硬件安装方式对话框。   图 3-24 已经安装的所有硬件列表 图 3-25 选择硬件安装方式 (5) 选中 “安装我手动从列表选择的硬件( 高级 )” 单选项, 然后单击“下一步” 按钮,打开 “硬件类型”对话框, 如图 3-26 所示。 (6) 选中“声音、视频和游戏控制器”选项, 然后单击“下一步”按钮, 弹出如图 3-27所示的“选择要为此硬件安装的设备驱动程序”对话框。在窗口左侧的“厂商”列表中选择硬件的生产厂商, 并在右侧的“型号”列表中选择和当前要安装的硬件相匹配的设备类型。   图 3-26 选择硬件类型对话框 图 3-27选择设备的驱动程序对话框 (7) 用户也可以单击“从磁盘安装”按钮,打开如图3-28所示的“从磁盘安装”对话框, 并在“厂商文件复制来源”下拉列表框中输入驱动程序的位置。或者单击“浏览”按钮,从打开的对话框中进行选择。  图3-28 从磁盘安装对话框 (8) 不论采用方式安装驱动程序,复制文件完成后均会打开提示用户已经正确地安装了该硬件的对话矿, 单击“完成”按钮, 重新启动计算机后, 即可正常运行该硬件。 至此, 该非即插即用声卡的安装完成。对于其他类型的非即插即用设备,Windows XP 的安装方法也是大同小异, 仅仅是一些设置上的不同, 用户还可以通过参考设备的说明书, 来正确地配置非即插即用硬件。 6.更新设备驱动程序 伴随着计算机硬件的更新换代, 硬件设备的驱动程序也被一次又一次地升级。新的硬件驱动程序往往能够更好地支持硬件设备, 提高硬件的整体性能。因而计算机用户难免需要经常升级硬件的驱动程序,目前许多升级的硬件驱动程序都可以从硬件供应商的网站下载。下面以显示卡为例介绍如何更新设备的驱动程序。 (1) 在桌面上的“我的电脑”上单击鼠标右键,从弹出的快捷菜单中选择 “属性”命令,打开“系统属性”对话框。 (2) 单击“硬件”标签,打开“硬件”选项卡,并单击其中的“设备管理器”按钮,打开“设备管理器”窗口。 (3) 在设备列表中选中更新驱动程序的设备,并在该设备上单击鼠标右键,从弹出的快捷菜单中选择“更新驱动程序”命令项,如图3-29所示。  图3-29 更新驱动程序命令项 (4) 选择“更新驱动程序”命令后,系统将打开如图3-30所示的“更新硬件向导”对话框,提示系统将帮助用户安装选定设备的软件。 (5) 在“您期望向导做什么”选项区域中选中“从列表或指定位置安装 ( 高级 )”单选按钮, 并单击“下一步”按钮, 系统打开如图3-31所示的“请选择你的搜索和安装选项”对话框。   图3-30更新硬件向导对话框 图3-31请选择你的搜索和安装选项对话框 (6) 在该对话框中单击“浏览”按钮, 从打开的“浏览文件夹”对话框中选定最新驱动程序所位于的文件夹。如果用户选中了“搜索可移动媒体”项, 则系统将自动从软件或 CD-ROM 中自动搜索相匹配的文件。 (7) 单击“下一步”按钮, 系统将开始该驱动程序的安装。驱动程序安装完成后, 系统提示用户重新启动计算机, 重新启动计算机后, 所更新的硬件驱动程序即可正常使用。 3.5 Windows XP操作系统的进程管理 3.5.1进程的概念 进程管理是操作系统的重要功能之一。那么, 进程是什么? 进程和程序有什么内在的联系? 又有什么区别? 下面从程序和进程的特性入手来讨论进程的问题。 1. 程序 自从人们认识了计算机起, 就知道了“程序”这个概念。程序是为实现特定目的而用计算机语言编写的一组有序指令, 这些指令可能是程序段、语句或命令。 1) 程序顺序执行及特征 为讨论问题的需要, 假设一个程序分为三个程序段, 功能分别为输入(I)、计算(C)和输出(P)操作。显然, 在单道程序处理系统中, 因为程序运行时独占全部系统资源, 它只能按 I-C-P 的顺序执行,即只有输入了信息才能进行计算,只有计算产生了结果才能输出。这种执行方式被称为程序的顺序执行。 程序顺序执行具有三个特征: (1)顺序性程序所有操作严格按规定的顺序执行。 (2)封闭性程序在执行过程中独享系统资源, 不受外界因素的干扰和影响。 (3)可再现性程序执行的结果与其执行速度无关。只要初始条件相同, 则程序重复执行时, 无论是不间断地执行, 还是断断续续地执行, 结果是相同的。 程序顺序执行的封闭性和可再现性为调试程序带来了很大方便, 但系统资源的独占性却严重降低了资源的利用率和计算机的处理效率。 程序的这些特性在多道程序系统中将不复存在, 因此操作所面临的问题就复杂多了。 2) 程序并发执行及特征 在多道程序系统中由于多个程序并发执行, 整个系统资源为多程序共享, 受资源制约, 每个程序处理过程的行为和状态是不确定的。 设有 N 个程序, 它们的执行步骤和顺序相同, 都是Ii(输入)、Ci(计算)、Pi(输出)。当第1个程序的I1执行完毕、执行C1 时, 输入机空闲, 这时可以执行第2个程序的I2 ;在时间上, 操作C1 和操作I2 是重叠的。如图 3-32 所示。 从图 3-32 中可以看出,C1 和 I2 在tl 时刻,Pl 、C2 和 I3 在t2 时刻,P2 和 C3 在 t3 时刻都是并发执行的。在这种情况下, 系统资源是由多个程序所共享。资源共享虽然提高了资源的利用率 , 但却存在多个程序对资源的竞争和相互制约问题。例如, 打印机被 P1 占用,P2 就不能再使用。在多道程序环境下, 由于存在相互依赖和相互制约的关系, 从而使被处理的多个程序失去了程序固有的特性: 封闭性、可再现性。具体表现为:  图 3-32 多道程序并发执行 (1) 制约性在图 3-32 中,P1 、C2 和I3 是并发执行的程序段。如果 CI 未完成,PI 和 C2 就无法执行。由此可见, 程序并发执行时是相互制约的, 将导致并发程序具有 “执行→暂停→执行”这样“走走停停”的情况。 (2) 失去封闭性由于资源为多个程序共享, 所以资源状态的改变不再取决于某一个程序, 而是由并发执行的多个程序所共同决定。 (3) 不可再现性由于程序并发执行时失去了封闭性, 因此, 对一个程序来说, 即使初始条件相同, 在程序重复执行时, 因资源状态受其他并发程序的影响而使运行结果可能不同。对于在多道程序环境下并发程序表现出的这些新特征如何描述? 2. 进程 进程这个概念是 1966 年美国麻省理工学院的 J. H. Sallexer 提出的。由于在多道程序环境下并发程序所产生的新特点, 使得传统程序这个静态概念已经无法描述程序的并发执 行过程。为此, 引入进程这样一个新的概念来反映并发执行程序的特点。 进程是执行起来的程序, 是系统进行资源调度和分配的一个独立单位。进程具有以下六个基本特性: (1) 动态性进程是运行着 (“活着”)的程序, 它是具有生命周期的, 表现在它由“创建”而产生, 由“调度”而执行, 因得不到资源而 “暂停”, 最后由“撤销”而消亡。 (2) 并发性引人进程的目的就是为了程序的并发执行, 以提高资源的利用率。 (3) 独立性进程是一个能独立运行的基本单位, 也是进行资摞分配和调度的独立单位。 (4) 异步性不同进程在逻辑上是相互独立的, 均具有各自的运行 “轨迹”。对单 CPU系统而言, 任何时刻只能有一个进程占用 CPU 。进程获得所需要的资源就可以执行,得不到某种资源时就暂停执行。因此, 进程具有“执行→暂停→执行”这样走走停停的活动规律。 (5) 结构特征为了管理进程, 系统为每个进程创建一套数据结构, 记录该进程有关的 状态信息。通过数据结构中状态信息的不断改变, 人们才能感知进程的存在、运行和变化。 (6) 制约性由于系统资源受限, 多个进程在并发执行过程中相互制约。 3. 进程的状态 进程在其生存周期内, 由于受资源制约, 使其执行过程是间断性的, 因此进程状态也是不断变化的。一般来说, 进程有三种基本状态: (1) 就绪状态 进程已经获得了除 CPU 之外所必需的一切资源, 一旦分配到 CPU, 就可以立即执行。这是一种逻辑上的可运行状态。在多道程序环境下, 可能有多个处于就绪状态的进程, 通常将它们排成一队, 称为就绪队列。 (2) 运行状态 进程获得了CPU 及其他一切所需资源,正在运行。对单个CPU系统而言,只能有一个进程处于运行状态;在多处理机系统中, 则可能有多个进程处于运行状态。 (3) 等待状态 由于某种资源得不到满足, 进程运行受阻, 处于暂停状态, 等待分配到所需资源后,再投人运行。处于等待状态的进程也可能有多个, 也将它们组成排队队列。 处于就绪状态的进程, 在调度程序为其分配了 CPU 后, 该进程即可执行, 这时它由就绪状态转变为运行状态。正在运行的进程在使用完分配的 CPU 时间片后, 暂停执行, 这时它又由运行状态转变为就绪状态。如果正在执行的进程因运行所需资源得不到满足,执行受阻时,再由运行状态转变为等待状态。当在等待状态的进程获得了运行所需资源时,它就又由等待状态转变为就绪状态。进程的三种基本状态之间的关系如图 3-33 所示。  图 3-33 进程状态转换示意图 4. 进程与程序的区别 综上所述, 程序和进程是截然不同的两个概念。它们的主要差异是: (1) 程序是“静止”的,它描述的是静态的指令集合及相关的数据结构,所以程序是无生命的;进程是“活动”的, 它描述程序执行起来的动态行为, 所以进程是有生命周期的。 (2) 程序可以脱离机器长期保存, 即使不执行的程序也是存在的。而进程是执行着的程序, 当程序执行完毕, 进程也就不存在了。进程的生命是暂时的。 (3) 程序不具有并发特征, 不占用 CPU、存储器及输入/ 输出设备等系统资源, 因此不会受到其他程序的制约和影响。进程具有并发性,在并发执行时,由于需要使用 CPU、存储器、输入/ 输出设备等系统资源, 因此受到其他进程的制约和影响。 (4) 进程与程序不一一对应。一个程序多次执行, 可以产生多个不同的进程。一个进程也可以对应多个程序。 3.5.2 Windows XP中进程的运行状态 1.启动任务管理器 在Windows 2000/XP 中提供了一个名为任务管理器的强有力的工具, 通过任务管理器可以实现对作业 ( 应用程序 )、进程、性能等方面的查看、管理。以 Windows XP 中任务管理器为例说明它的用法。 有两种方法可以启动任务管理器: (1) Ctrl+Alt+Delete" 组合键启动。 (2) Ctrl+Shift+Esc 组合键启动。 启动后的窗口界面如图3-34所示。在该任务管理器上可以看到在下方的状态栏里显示了当前运行的进程总数、CPU的占有率以及提交更改的信息。另外在上方有四个选项卡:应用程序、进程、性能、联网。在此介绍进程的功能。  图3-34 任务管理器 2.显示进程的运行状态 在任务管理器窗口单击进程选项卡,就可以显示出当前系统运行的进程, 包括用户进程和系统进程, 以及它们所属的用户、CPU 的占用率和内存的使用情况,如图3-35所示。 这些信息使用户能够详细地了解当前进程的运行状况, 以及资源占有率。在其左下角有一个单选按钮“显示所有用户进程", 当它被选择后会显示当前登录上的所有用户的进程, 这是因为 Windows XP 是一种多用户的操作系统。右下角的“结束进程”按钮可以将选中的进程结束。但不是所有的进程都可以结束, 一些系统的关键进程就不可以结束, 否则会引起系统错误。通过进程选项卡,可以发现并关闭一些恶意的程序, 例如一些病毒, 它们大量地占有CPU 和内存, 影响机器的 运行。  图3-35 当前系统运行的进程 3.6 Windows XP操作系统的注册表 “注册表”对于使用过 Windows XP的用户来说不会陌生, 但注册表中究竟是些什么? 它为什么在系统中占有极其重要的地位? 对于这些问题就不是每个用户都知道的了。加之一些计算机的爱好者, 通过修改注册表来设置个性化的操作界面和实现一些特殊的功能, 更给注册表披上了一层神秘的面纱, 使许多人望而却步。本节将对注册表的一些基础知识和相关的操作进行介绍, 使读者对注册表有一个理性上的认识, 并学会一些注册表的日常维护技术。 3.6.1注册表的工作原理 Windows XP的注册表是一个二进制数据库, 它保存着操作系统正常运转所需的大部分信息。 Windows XP 每次启动时, 会根据计算机关机时创建的一系列文件创建注册表, 注册表一旦载入内存, 就会被一直维护着。注册表实际上是一个系统参数的关系数据库, 从很多方面来看, 它是 Windows XP 计算机行为和能力的数据交换中心。 1.注册表的功能 注册表的主要功能可以简单的概括为记录和保存信息。 1. 记录安装时的信息 注册表在我们安装 Windows XP 操作系统时, 就已经开始记录信息。在安装 Windows 时, 如果选择了一些 Windows XP的组件程序, 如桌面主题、附件等, 则安装程序会将这些选择的信息记录在注册表中, 以便在第一次运行 Windows 时按照此信息进行启动。 2. 保存硬件信息 使用相同的 Windows XP操作系统, 为什么可以在不同配置的计算机上正常运行呢?其实, 这是 Windows XP支持多硬件设备的功能, 而在这个功能中扮演主要角色的正是注册表, 它会记录下计算机的硬件信息, 如声卡、显卡、硬盘等。在启动 Windows XP时, 系统会按注册表中的信息, 分配给这些设备在运行时所需的系统资源。 3. 保存软件信息 在使用 Windows 98 操作系统时, 也许会遇到系统不能正常运行或是崩溃的时候, 这 时除使用克隆软件外, 我们只有一个办法就是重装系统。在重装系统后又会发现原来安装的一些应用软件都不好用了, 如Office、Real player 等。这是因为这类软件在安装时, 都要在注册表中添加自己的信息, 以便让操作系统“识别”它,而在我们重装系统后, 新的注册表中没有它们的信息, 因此,操作系统就不能使用它们。 2.注册表的结构 注册表的结构可以从两个方面进行分析:其一,注册表也是操作系统的一部吩, 它也是以文件形式保存在硬盘上的,所以这就有了注册表的物理结构;其二, 注册表还有与物理结构它相对应的逻辑结构,在逻辑结构中注册表是以项和数值数据的方式与用户进行“交流” 的, 下面我们就分别对这两种结构进行介绍。 1)注册表的物理结构 注册表的物理结构就是指在操作系统中构成注册表的所有文件的关系和结构。注册表实质就是 Windows XP操作系统中的一个大型数据库, 它记录着计算机软、硬件的配置, 并且 是用二进制将其保存在相应的文件中。在 Windows 98 操作系统中, 所有的注册表信息都保存在User.dat ( 用户配置文件 ) 和 System.dat( 系统配置文件 ) 两个文件中, 而 Windows XP 则不仅仅只有两个文件, 它现在所采用的是一系列的注册表文件。(其实从 Windows 2000 开始注册表文件就已经和 Windows 98 不一样了。) 由于 Windows XP 是一个多用户的操作系统, 所以系统为每个用户都建立各自的用户配置文件, 存放在“根目录\Documents and Settings\用户名”这个文件夹内, 其中包括 NTUSER.DAT、 NTUSER.INI 两个隐藏文件。而系统配置文件则存放在“Windows XP 安装目录\System32\Config ”中, 包括DEFAULT、SOFTWARE、SYSTEM、APPEVENT.EVT、SECEVENT.EVT、 SYSEVENT.EVT等多个隐藏文件及其相应的日志文件和 .SAV 文件。两个用户配置文件中存放的是特定用户的配置信息, 如个性化设置、最近打开过的文件等。 而一系列的系统配置文件中包含的是计算机的硬件和软件的信息。 从严格意义上来讲, 注册表的物理文件在应包括 System.ini 和 Win.ini 两个文件, 因为这两个文件也是用来保存软件信息的。虽说是为了兼容16 位应用程序才将这两个文件保留下来, 但它们在系统中的作用也是很大的。在系统启动时, 会将这两个文件的信息调入内存, 当有16 位应用程序运行时, 它们就会在发挥其作用。 2.注册表的逻辑结构 注册表的物理结构是由文件组成的, 而且全部是二进制的信息, 不容易被用户直接编辑和修改。所以Windows XP为用户提供了注册表编辑器 (Regedit.exe或regedt32.exe) 使用户可以方便地编辑和修改注册表的内容。 注册表的逻辑结构是以“树形”的方式展示给用户的,由配置单元(hive key)、项(key)、子项(sub key) 和值 (value) 组成, (1)配置单元:在逻辑结构的最顶层,有五个系统定义的配置单元,以“HKEY_ ”开头。 (2)项:分为系统定义的项和用户定义的项。这些项没有特殊的命名约定,它们以主 HKEY_配置单元的子目录形式存在。项下还可以包含子项、值项和数值数据。 (3)子项:也分为系统定义的子项和用户定义的子项。这些子项也没有特殊的命名约定, 它们是作为系统定义或者用户定义的项的子目录形式存在的。某些文挡不区分项和子项。 还有一点需要说明的就是子项不是单指某一个或某一级的项, 它是一个相对的概念, 在注册表编辑器的任意一个文件夹都可其为项,但相对于其上一级文件夹来说,它就是上一级文件夹的子项。 (4)值:值位于树枝的末端,就像是文件系统中的文件一样,它们包含着计算机及其应用程序执行时使用的实际数据。 3.配置单元 现在, 让我们来看一下每个配置单元所包含的信息,以及它们是如何与 Windows XP 相互作用的。 (1)HKEY_LOCAL_MACHINE HKEY_LOCAL_MACHINE(HKLM) 是包含操作系统及硬件相关信息( 例如计算机总线类型, 系统可用内存, 当前装载了哪些设备驱动程序以及启动控制数据等 )的配置单元。实际上,HKLM保存着注册表中的大部分信息, 因为另外四个配置单元都是其子项的别名。图3-36 显示了运行在 Windows XP 的 Regedt.exe 中的 HKLM 配置单元。其它配置单元有类似的外观和组织结构。  图3-36 展开HKLM 配置单元 (2)HKEY-CURRENT-USER HKEY-CURRENT_USER(HKCU) 配置单元包含着当前登录到由这个注册表服务的计算机上的用户的配置文件。其子项包含着环境变量、个人程序组、桌面设置、网络连接、打印机和应用程序首选项( 环境变量在 Windows XP 中被用来允许脚本、注册表项, 以及其它应用程序使用通配符来代替可能会发生改变的重要的系统信息 )。这些信息是HKEY-USERS 配置单元当前登录用户的 Security ID(SID)子项的映射。 (3)HKEY_CLASSES_ROOT HKEY-CLASSES-ROOT(HKCR) 配置单元包含的子项列出了当前已在计算机上注册的所有 COM 服务器和与应用程序相关联的所有文件扩展名。这些信息是HKEY_LOCAL_MACHI NE\SOFTWARE\Classes 子项的映射。 (4)HKEY USERS HKEY-USERS(HKU) 配置单元包含的子项含有当前计算机上所有的用户配置文件。其中一个子项总是映射为HKEY-CURRENT-USER ( 通过用户的SID值 )。另一个子项 HKEY_USERS \DEFAULT 包含用户登录前使用的信息。 (5)HKEY-CURRENT-CONFIG HKEY-CURRENT_CONHFIG(HKCC) 配置单元包含的子项列出了计算机当前会话的所有硬件配置信息。硬件配置文件允许你选择在机器某个指定的会话中支持哪些设备驱动程序。这些信息是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset子项的映射。 4.Windows XP的数据类型与注册表的数据类型 (1)Windows XP的数据类型 在 Windows XP 中数据类型可以是字符串值、二进制值、DWORD 值、多字符串值、可扩充字符串值五种。在表3-4中列出了各数据类型的具体描述。 表 3-4 Windows XP 的数据类型 数 据 类 型 描 述  字符串值 固定长度的文本串。  二进制值 未处理的二进制数据。多数硬件组制言息都以二进制数据存储,而以+六进制 格式显示在注册表编辑器中。  DWORD值 数据由4字节长的数表示。许多设备驱动程序或服务的参数是这种类型并在注 册表编辑器中以二进制、十六进制或+进制的格式显示。  多字符串值 长度可变的数据串。该数据类型包含在程序或服务使用该数据时确定的变量。  可扩充字符串值 多重字符串。其中包含格式可被用户读取的列表或多值的值通常为该类型。项 用空格、逗号或其他标记分开。   (2)注册表的数据类型 Windows XP 注册表条目共有11种可识别的数据类型, 表3-5提供了其名称和功能。每一种原始数据格式类型(字符串、二进制、 DWORD、多重字符串) 在注册表编辑器中都分别使用一个专门的编辑器。 表3-5注册表的数据类型 数 据 类 型 原 始 数 据 类 型 功 能  REG_NONE 未知 加密数据  REG_SZ 字符串 文本字符  REG_EXPAND_SZ 字符串 带有变量的文本  REG_BINARY 二进制 二进制数据  REG_DWORD 数值 数值数据  REG_DWORD_BIG_ENDIAN 数值 非 Intel 数  REG_LINK 字符串 文件路径  REG_MULTI_SZ 多重字符串 字符串数组  REG_RESOURCE_LIST 字符串 硬件资源列表  REG_FULL_RESOURCE_DESCRIPTOR 字符串 硬件资源 ID  REG_RESOURCE_REQUIREMENTS_LIST 字符串 硬件资源 ID   3.6.2注册表的使用 1.注册表编辑器 注册表编辑器是用来查看和修改注册表设置的高级工具, 启动注册表编辑器, 可单击“开始”按钮菜单,选择“运行”命令,在弹出的“运行”对话框中输入 regedit或c:\windows\system32\regedt32 , 如图 3-37 所示。 然后单击“确定”按钮,进入注册表编辑器,如图3-38 所示。注册表的窗口分为两个窗格:左边是项窗格, 它可以像使用资源管器那样浏览注册表中的内容;右边是数据窗格, 它显示的是当前活动项中的内容。regedt32.exe 比之 regedit.exe 具有更多的功能。  图 3-37 运行对话框  图 3-38 注册表编辑器 2.创建子项或值 创建项和值是编辑注册表的主要操作之一, 也是经常用到的。创建项要比创建值项容易一些,因为创建值要考虑值的名称、数据类型、数值数据, 而项不需要。要创建项的步骤如下: 1)创建子项 (1)启动注册表编辑器,在项窗格中定位到要添加新项的项, 使其成为活动项。 (2)在要添加新项的项上单击鼠右键指向“新建”命令,并在其子菜单中选择“项”命令,此时在左边项窗格所选的项下产生一个子项,系统自动给出默认的名称“新项 #1”。 (3) 更改系统默认给出的名称,给新建的子项输入名称。 2)创建值 (1)启动注册表编辑器,在项窗格中定位到要添加新值的项,使其成为活动项。 (2)在要添加新值的项上单击鼠右键指向“新建”命令,并在其子菜单中选择所需的“数据类型”命令,此时在右边数据窗格中将产生一个新值,系统自动给出默认的名称“新值 #1”。 (3)更改系统默认给出的名称,给新建的值输入名称。 (4)在右边数据窗格中双击新建的值, 将弹出对应的编辑某种数据的对话框。如图3-38 所示。 (5) 在“编辑某种数据的对话框”的“数值数据框”中输入此值的数据,并按“确定”按钮。   图3-39 四种编辑数据类型对话框之一 图3-39 四种编辑数据类型对话框之二   图3-39 四种编辑数据类型对话框之三 图3-39 四种编辑数据类型对话框之四 图3-39 四种编辑数据类型对话框 3.修改数值数据 若要修改某值的数值数据, 可双击此值, 然后弹出编辑某种数据的对话框,在该对话框的数值数据框中输入新数据, 再单击“确定”按钮。由于数据类型的不同, 当双击某值项时所弹出的对话框也不尽相同。 4.删除子项或值 要删除一个子项或值,注意系统不允许删除配置单元, 可把鼠标指针定位到需要删除的子项或值上,右击弹出快捷菜单选择“删除”命令,此时会出现一个警告对话框,只有当你单击“确定”按钮,才会执行删除操作。如果删除的是一个项或子项, 那么所有的子项和值都会被删除。如果所选的是一个值, 那么只删除它和它的信息。 5. 使用查找功能 在编辑注册表的过程中, 有时我们并不知道所要找的内容在注册表的什么地方, 这时就可以使用注册表编辑器为我们提供的查找功能。例如,给“回收站”重命名。查找步骤如下: (1)启动注册表编器, 选择“编辑”菜单中的“查找”命令, 将弹出“查找”对话框,如图3-40 所示。 (2)在“查找目标”框中输入“回收站”后, 单击“查找下一个”命令按钮或按回车键。 (3)系统将查找到的结果显示在数据窗格中, 找到数值数据为“回收站”的值。如图3-41 所示。   图3-40 查找对话框 图3-41 回收站值 (4)双击此值,在弹出的“编辑字符串”对话框中, 将数值数据框中的“回收站”改为“垃圾箱”, 并单击“确定”按钮。 (5) 关闭注册表编辑器, 再“刷新”一下桌面, 修改的效果即可出现。 3.6.3 注册表的备份与恢复 合理地修改注册表可以达到许多奇特的效果, 但若编辑不当就会造成注册表的损坏, 甚至使系统崩溃。 因此,在修改之前一定要先备份注册表, 一旦发现错误马上恢复, 这样就自能避免出现不必要的麻烦或是损失重要的数据。 1.备份注册表 备份注册表可以用许多方法来实现, 这里所介绍的是用系统自带的“导出注册表”的方法。用此方法备份注册表, 可以有两种选择:一种是备份全部注册表, 另一种是备份注册表中的一个分支, 读者可以根据情况进行选择。具体实现步骤如下: (1)启动注册表编辑器。 (2)选择“文件”菜单中的“导出”命令, 会出现如图3-42所示“导出注册表文件”对话框。  图3-42所示“导出注册表文件”对话框。 (3)在“文件名”文本框中, 输入注册表文件的名称。 (4)在“导出范围”下, 可选择执行其中一种操作。 要备份整个注册表, 请单击“全部”。如果只备份注册表树的某一分支, 请单击“所选分支”, 然后输入要导出的分支名称。 (5)单击“保存”。 可以将导出的文件以 Windows 格式、Windows 9x 和 Windows NT 中使用的格式,或二进制配置单元文件,或者文本文件来保存注册表文件。注册表文件以 .reg 为扩展名保存, 而文本文件用 .txt扩展名保存。通过导出创建的注册表文件可以使用文本编辑器 (如记事本) 来进行编辑。并且只要在资源管理器中, 双击扩展名为 .reg 的文件, 便可将该文件导入到计算机的注册表中。 2.恢复注册表 当注册表出现错误,或多次安装软件使注册表出现过多的垃圾文件时,我们可以使用注册表编辑器提供的恢复功能, 把注册表恢复到备份时的执态。具体步骤如下: (1)启动注册表编辑器 (2) 在“文件”菜单上,单击“导入”命令,将出现如图 3-43 所示“导入注册表文件”对话框。  图 3-43 导入注册表文件对话框 (3)在“文件名”文本框中,定位至备份文件所在的目录, 然后选中备份的注册表文件, 再单击“打开”命令按钮。此时所备份的注册表数据就能导入,使当前注册表的数据恢复为备份时注册表。 习题 简答题 1.操作系统的五大管理功能是什么? 2.什么是批处理系统、分时系统和实时系统?它们各自有什么特征? 3.什么是文件、文件系统?文件系统的功能有哪些? 4.文件系统的类型有哪几种?试比较FAT 32与 NTFS 文件系统的不同? 5.在存储管理中, 自动覆盖技术和交换技术所要解决的问题是什么? 两者的主要区别是什么? 6.虚拟存储技术是要解决什么问题?虚拟存储器有哪些特征? 7.简述设备管理的任务和目的? 8.简述更新网卡驱动程序的过程? 9.简述进程与程序的区别? 10.什么是进程?在Windows XP 中如何查看进程状态? 11.注册表有哪些主要功能? 12.Windows XP 中的数据类型有哪几种?简述注册表的备份与恢复过程。