第7章实例分析: Vindows XP操作系统 本章讲述内容: 7.1 Windows XP的处理机管理; 7.2 Windows XP的存储管理; 7.3 Windows XP的设备管理; 7.4 Windows XP的文件管理
第7章 实例分析: Windows XP操作系统 7.1 7.2 7.3 本章讲述内容: Windows XP的处理机管理 ; Windows XP的存储管理 ; Windows XP的设备管理 ; 7.4 Windows XP的文件管理
7.1 Vindows XP的处理机管理 。7.1.1 Windows XP的结构 1.“微内核”模式 ·“客户/服务器”模型构造操作系统,方法是把操作系统分成若干进程,每个进程 完成单一的功能服务,称这样的进程为“服务器”。用户应用程序(即客户)为请求 所需服务,向指定服务器发消息。消息先被核心态的操作系统内核俘获,再由它把传递 给相应的服务器去处理。服务器执行完操作,仍通过内核,把回应的消息发还给用户。 。微内核的基本原理是,把最 用户进程客户) 系统进程(服务器) 基本的操作系统功能放在内核, 内存 网络 非基本的服务和应用程序在内核 服务器 服务器 之外构造,并在用户模式下执行 用户 进程 文件 显示 应用程序 服务器 服务器 服务器 。只把最关键的进程管理、内 存管理及进程通信等功能组成系 用户态个 统的内核,而把设备管理程序、 核心态十 内 核 文件系统、虚拟存储管理、窗口 系统等功能,放在内核之外。 。用微内核模式构造的操作系统, 便于系统功能的扩充
7.1 Windows XP的处理机管理 • 7.1.1 Windows XP的结构 1. “微内核”模式 “客户/ 服务器”模型构造操作系统,方法是把操作系统分成若干进程,每个进程 完成单一的功能服务,称这样的进程为“服务器” 。用户应用程序(即客户)为请求 所需服务,向指定服务器发消息。消息先被核心态的操作系统内核俘获,再由它把传递 给相应的服务器去处理。服务器执行完操作,仍通过内核,把回应的消息发还给用户。 硬 件 内 核 用户态 核心态 用户 应用程序 进程 服务器 文件 服务器 内存 服务器 网络 服务器 显示 服务器 微内核的基本原理是,把最 用户进程(客户) 系统进程(服务器) 基本的操作系统功能放在内核, 非基本的服务和应用程序在内核 之外构造,并在用户模式下执行。 . . 只把最关键的进程管理、内 存管理及进程通信等功能组成系 统的内核,而把设备管理程序、 文件系统、虚拟存储管理、窗口 系统等功能,放在内核之外。 . 用微内核模式构造的操作系统, 便于系统功能的扩充。
登录上网进程 OS/2 Winl6 Win32 MSDOS POSIX 2.Windows XP 应用程序 应用程序 应用程序 应用程序 应用程序 的整体结构 粗线下方 安全子系统 OS22 Winl6 MSDOS POSIX 子系统 子系统 子系统 子系统 是Windows XP 操作系统的核心, 全部运行在统一 验证数据包 的核心地址空间 中。 安全账号 Win32 .粗线上方运 管理数据库 子系统 行在用户模式, 用户模式↑ 最左边一列是保 核心模式↓ 护子系统:右边 VO管理器 执行体 的上一行是各种 文件系统 对象 安全 即插即用本地过程进程、线程 虚拟内存 窗▣ 管理器 访问器 管理器调用工具 管理器 管理器 管理器 类型的用户应用 高速缓存 程序;右边的下 管理器 一行是环境子系 设备 内核 驱动器 统 图形设备 网络 驱动器 驱动器 硬件抽象层(HAL】
Windows XP 的整体结构 2. . 硬 件 窗口 管理器 对象 管理器 进程、线程 管理器 安全 访问器 即插即用 管理器 本地过程 调用工具 虚拟内存 管理器 文件系统 高速缓存 管理器 设备 驱动器 网络 驱动器 I/O管理器 执行体 内 核 硬件抽象层(HAL) 用户模式 核心模式 图形设备 驱动器 Win32 子系统 安全账号 管理数据库 验证数据包 安全子系统 登录上网进程 OS/2 应用程序 OS/2 子系统 Win16 应用程序 Win16 子系统 Win32 应用程序 MSDOS 应用程序 MSDOS 子系统 POSIX 应用程序 POSIX 粗线下方 子系统 是Windows XP 操作系统的核心, 全部运行在统一 的核心地址空间 中。 . 粗线上方运 行在用户模式, 最左边一列是保 护子系统;右边 的上一行是各种 类型的用户应用 程序;右边的下 一行是环境子系 统
3.Windows XP的注册表 .Windows XP的注册表,是一个内部数据库,包含着应用程序和计算机系统的全部 配置信息、初始化信息,应用程序和文档文件的关联关系,硬件设备的说明、状态和属 性。因此,注册表在整个系统中起到核心作用 d .Windows XP启动时,就和注册表做数 Windows 开始”菜单 设备 据交换。系统工作时,也不断地与注册表中 XP内核 驱动程序 的数据进行相互交换。即Windows XP所做的 任何操作,都离不开注册表的支持。 .用工具Regedit打开注册表编辑器:即在 安装卸载 注册表 桌面设置 应用程序 【开始】菜单单击【运行R)】。在弹出对 话框输入‘Regedit,然后单击【确定】按钮。 注用表编辑墨 ▣x 初始化 添加新硬件 系统 文件(E编辑() 查看0收藏夹(色)帮助 (n文件 管理工具 日我的电脑 名称 类型数 由▣HKEY_CLA55ES_ROOT 的默认) REG_SZ (数值未设置) HKEY CURRENT_USER 根键 由□HKEY_LOCAL_MACHINE ·注册表的结构与资源管理器中的目录 SY OIRREN □HKEY_CURRENT_CONFIG 结构类似,其中以“HKEY”打头的结点 日白Software -Fonts 称为根键。Windows XP的注册表里有5个 E自Microsoft 根键。 CurrentVersion 由☐System 我的电脑HKEY_CURRENT_CONFIG\Software Microsoft windows
3. Windows XP的注册表 . Windows XP的注册表,是一个内部数据库,包含着应用程序和计算机系统的全部 配置信息、初始化信息,应用程序和文档文件的关联关系,硬件设备的说明、状态和属 性。因此,注册表在整个系统中起到核心作用。 . Windows XP启动时,就和注册表做数 据交换。系统工作时,也不断地与注册表中 的数据进行相互交换。即Windows XP所做的 任何操作,都离不开注册表的支持。 Windows XP内核 安装/卸载 应用程序 初始化 (ini)文件 “开始”菜单 添加新硬件 设备 驱动程序 桌面设置 系统 管理工具 注册表 . 用工具Regedit打开注册表编辑器:即在 【开始】菜单单击【运行(R) ...】。在弹出对 话框输入‘Regedit’,然后单击【确定】按钮。 根键 . 注册表的结构与资源管理器中的目录 结构类似,其中以“HKEY_”打头的结点 称为根键。Windows XP的注册表里有5个 根键
。7.1.2 Windows XP的进程和线程 1.关于线程 ()线程的概念 。为提高进程的并发执行程度,为减少系统在进程切换时的开销,Windows XP把 进程的特征分开来处理,形成不同的实体:让进程只具有“资源拥有者”这个特征,而 “调度和运行”这个特征则赋予一个新的实体—线程。 。“线程(thread)”是进程的一个实体,是进程中实施调度和处理机分派的单位。 若视进程为在逻辑上需要完成的一个任务,那么线程则是完成该任务时可以并发执行的 多个子任务。 ·这时,线程基本上不拥有系统资 线程 进程 源,有的只是运行中不可或缺的一点资 源(如程序计数器、一组寄存器和堆 栈),但它可以与同属一个进程的其他 (a)单进程,单线程 b)单进程,多线程 线程共享进程所拥有的全部资源, ·图给出了进程和线程间的各种关系。 方框表示单进程,曲线表示线程。引入了线 程概念后,就可以把原先的进程概念理解为 (c)多进程,每个进程一个线程(d多进程,每个进程多个线程 是这种只有一个线程的进程情形
• 7.1.2 Windows XP的进程和线程 1. 关于线程 线程的概念 “线程(thread)”是进程的一个实体,是进程中实施调度和处理机分派的单位。 若视进程为在逻辑上需要完成的一个任务,那么线程则是完成该任务时可以并发执行的 多个子任务。 (1) . 为提高进程的并发执行程度,为减少系统在进程切换时的开销,Windows XP把 进程的特征分开来处理,形成不同的实体:让进程只具有“资源拥有者”这个特征,而 “调度和运行”这个特征则赋予一个新的实体——线程。 . . . 这时,线程基本上不拥有系统资 源,有的只是运行中不可或缺的一点资 源(如程序计数器、一组寄存器和堆 栈),但它可以与同属一个进程的其他 线程共享进程所拥有的全部资源。 图给出了进程和线程间的各种关系。 方框表示单进程,曲线表示线程。引入了线 程概念后,就可以把原先的进程概念理解为 是这种只有一个线程的进程情形。 (a)单进程,单线程 (b)单进程,多线程 (c)多进程,每个进程一个线程 (d)多进程,每个进程多个线程 进程 线程
(2)线程的实现 ·用户级线程的实现方法 若有关线程的管理工作都是由运行在用户空间的应用程序完成,那么这样的线程称 为“用户级”线程。完成线程管理的应用程序,称为“线程库”,它将被系统中的所有 用户程序共享使用。 。这时的一切活动都是针对同一个进程发生的,且都发 生在用户空间,系统一点也感知不到这些活动的存在。这时 用户空间 的系统内核,只是以进程为单位管理和调度进程,指定其所 线程库 处的状态(就绪、运行、阻塞)。 。内核级线程的实现方法 内核空间 进程- 若果有关线程的管理工作都由内核完成,用户空间 运行在 里没有任何进行线程管理的程序,只是向应用程序提供 用户态◆ 相应的系统调用和应用程序编程接口,以便用户程序可 的线程 以创建、执行、撤消线程。那么称为“内核级”线程。 用户空间 。采用这种方法,用户程序的所有线程都在一个进管理在 程内。内枝为该进程以及内部的每个线程(深色圆圈) 内核空间 维护上下文信息,调度在内核基于线程架构的基础上完 成,线程运行则在用户空间进行。 进程-
若有关线程的管理工作都是由运行在用户空间的应用程序完成,那么这样的线程称 为“用户级”线程。完成线程管理的应用程序,称为“线程库”,它将被系统中的所有 用户程序共享使用。 (2) 线程的实现 . 用户级线程的实现方法 这时的一切活动都是针对同一个进程发生的,且都发 生在用户空间,系统一点也感知不到这些活动的存在。这时 的系统内核,只是以进程为单位管理和调度进程,指定其所 处的状态(就绪、运行、阻塞)。 . 线程库 用户空间 内核空间 进程 P 线程 用户空间 内核空间 进程 P 运行在 用户态 的线程 管理在 核心态 的线程 . 内核级线程的实现方法 若果有关线程的管理工作都由内核完成,用户空间 里没有任何进行线程管理的程序,只是向应用程序提供 相应的系统调用和应用程序编程接口,以便用户程序可 以创建、执行、撤消线程。那么称为“内核级”线程。 . 采用这种方法,用户程序的所有线程都在一个进 程内。内核为该进程以及内部的每一个线程(深色圆圈) 维护上下文信息,调度在内核基于线程架构的基础上完 成,线程运行则在用户空间进行
(3)进程与线程的比较 单线程进程模式 单线程进程模式里,与进程有关的是进程控制块和用户的虚拟地 址空间:与线程有关的是用户堆栈和内核堆栈。当运行在用户空间时, 进程 用户 控制块 堆栈 利用用户堆栈记录和保护运行环境,若运行在内核空间,则用内核堆栈记 录和保护运行环境。 用户 内核 。在多线程进程模式里,与进程有关的仍是进程控制块和用户的虚 地址 空间 堆栈 拟地址空间:各线程都有自己的用户堆栈和内核堆栈,以便各自运行。 若运行在用户空间,则用自己的用户堆栈记录和保护运行环境:若运行 在内核空间,则用自己的内核堆栈记录和保护运行环境。 ·进程和线程间的不同 多线程进程模式 1)进程是拥有资源的基本单位,线程则是程序执 行的基本单位。 线程 线程 线程 2)不同进程的地址空间相互独立,同一进程的各 进程 线程 线程 线程 线程共享同一个地址空间。 控制块 控制块 控制块 控制块 3)不同进程间的通信,须使操作系统提供的进程 用户 通信机制。同一进程各线程间的通信,可直接通过访问 地址 户 空间 堆栈 堆栈 堆栈 共享的进程地址空间实现。 4)不同进程间的调度切换,系统要花费很大开销: 同一进程的线程间切换,无须转换地址空间。 内核 内核 内核 堆栈 堆栈 堆栈 )多个进程间可并发执行,多个线程间也可并发 执行
多个进程间可并发执行,多个线程间也可并发 执行。 不同进程间的调度切换,系统要花费很大开销; 同一进程的线程间切换,无须转换地址空间。 不同进程的地址空间相互独立,同一进程的各 线程共享同一个地址空间。 不同进程间的通信,须使操作系统提供的进程 通信机制。同一进程各线程间的通信,可直接通过访问 共享的进程地址空间实现。 进程是拥有资源的基本单位,线程则是程序执 行的基本单位。 (3) 进程与线程的比较 . 单线程进程模式里,与进程有关的是进程控制块和用户的虚拟地 址空间;与线程有关的是用户堆栈和内核堆栈。当运行在用户空间时, 利用用户堆栈记录和保护运行环境;若运行在内核空间,则用内核堆栈记 录和保护运行环境。 单线程进程模式 进程 控制块 用户 堆栈 内核 堆栈 多线程进程模式 进程 控制块 用户 地址 空间 线程 控制块 用户 堆栈 内核 堆栈 线程 用户 地址 空间 线程 控制块 用户 堆栈 内核 堆栈 线程 线程 控制块 用户 堆栈 内核 堆栈 线程 在多线程进程模式里,与进程有关的仍是进程控制块和用户的虚 拟地址空间;各线程都有自己的用户堆栈和内核堆栈,以便各自运行。 若运行在用户空间,则用自己的用户堆栈记录和保护运行环境;若运行 在内核空间,则用自己的内核堆栈记录和保护运行环境。 . . 进程和线程间的不同 1) 2) 3) 4) 5)
2.Windows XP线程的状态及状态变迁 Windows XP里,进程仍有就绪、运行、等待三种基本的状态。线程可有六种可能 的状态:就绪、备用、运行、 等待、转换和终止。 可运行 选择运行 切换 。就绪:这种线程已获得除 备用 处理机外所需的资源,因此可 被调度执行。 就绪 运行 ·备用:这种线程已被选 终止 为下一次在$MP的一个特定处 资源可用 抢占 理器上运行。该线程等待,直 到那个处理器可用。若备用线 不可运行 解除阻塞恢 程的优先级足够高,正在那个 复资源可用 处理器上运行的线程就可能被 转换 等待 终止 备用线程抢占。 解除阻塞 ·运行:拥有处理器的线 资源不可用 阻塞挂起 程,处于运行状态。 。等待:一个运行的线程,因某一事件(如O)而被阻塞,则进入等待状态。 ·转换:当处于等待状态的线程所等待的条件已经得到满足、但它所需要的资源此时 还不可能满足时,那么就转为转换状态。 ·终止:一个线程执行完毕或者被另一个线程撤销,它就成为终止状态
2. Windows XP线程的状态及状态变迁 Windows XP里,进程仍有就绪、运行、等待三种基本的状态。线程可有六种可能 的状态:就绪、备用、运行、 等待、转换和终止 。 . 切换 可运行 备用 就绪 运行 转换 等待 终止 终止 阻塞/挂起 解除阻塞 资源不可用 资源可用 选择运行 抢占 解除阻塞/恢 复资源可用 不可运行 . 就绪:这种线程已获得除 处理机外所需的资源,因此可 被调度执行。 . 备用:这种线程 已被选 为下一次在SMP的一个特定处 理器上运行。该线程等待,直 到那个处理器可用。若备用线 程的优先级足够高,正在那个 处理器上运行的线程就可能被 备用线程抢占。 . 运行:拥有处理器的线 程,处于运行状态。 . 等待:一个运行的线程,因某一事件(如I/O)而被阻塞,则进入等待状态。 . 转换:当处于等待状态的线程所等待的条件已经得到满足、但它所需要的资源此时 还不可能满足时,那么就转为转换状态。 . 终止:一个线程执行完毕或者被另一个线程撤销,它就成为终止状态
。7.1.3 Windows XP的线程调度 ·Windows XP处理机调度的对象是线程,进程只以资源和运行环境提供者的身份出 现。实施的是基于优先级的、抢占式的多处理机调度策略。调度时,只针对线程队列进 行,不考虑被调度线程属于哪一个进程。通常,一个线程可安排在任何可用处理机上运 行,但也可以限制只在指定的处理机(称为“亲合处理机”)上运行。 。引起线程调度的情况:一个线程进入就绪状态:一个线程运行的时间片到时:一 个线程的优先级被改变:一个运行线程改变其对亲合处理机的要求。 1.Windows XP进程的优先级 .在Windows XP里,进程可有四种优先级:实时、高、普通以及空闲。这四种优先 级的默认取值是:24、13、7/9、4。 ()实时优先级主要适用于核心态的系统进程,它们执行着存储器管理、高速缓存 管理、本地和网络文件系统、甚至设备驱动程序等。 (②)高优先级是为一些必须及时得到响应的进程设置的。 (3)用户进程创建时,都被默认赋予普通优先级。Windows XP根据进程是在前台还 是后台运行,给予9或7的优先级。 (4)空闲优先级是专为系统空闲时运行的进程设置的。具有空闲优先级的进程,是 那些在计算机无事可做时才去做的进程的优先级
实时优先级主要适用于核心态的系统进程,它们执行着存储器管理、高速缓存 管理、本地和网络文件系统、甚至设备驱动程序等。 • 7.1.3 Windows XP的线程调度 Windows XP处理机调度的对象是线程,进程只以资源和运行环境提供者的身份出 现。实施的是基于优先级的、抢占式的多处理机调度策略。调度时,只针对线程队列进 行,不考虑被调度线程属于哪一个进程。通常,一个线程可安排在任何可用处理机上运 行,但也可以限制只在指定的处理机(称为“亲合处理机”)上运行。 引起线程调度的情况:一个线程进入就绪状态;一个线程运行的时间片到时;一 个线程的优先级被改变;一个运行线程改变其对亲合处理机的要求。 1. Windows XP进程的优先级 . 在Windows XP里,进程可有四种优先级:实时、高、普通以及空闲。这四种优先 级的默认取值是:24、13、7/9、4。 高优先级是为一些必须及时得到响应的进程设置的。 用户进程创建时,都被默认赋予普通优先级。Windows XP根据进程是在前台还 是后台运行,给予9或7的优先级。 . . (1) (2) (3) (4) 空闲优先级是专为系统空闲时运行的进程设置的。具有空闲优先级的进程,是 那些在计算机无事可做时才去做的进程的优先级
2.Windows XP线程的优先级 .在Windows XP里,一旦线程被创建,就继承所属进程的优先级,在运行过程中又有 自己的优先级。线程优先级被分为三个部分:16个实时线程优先级(16~31):15个可 变线程优先级(1~15):1个系统线程优先级(0)。 。进程只能有单个优先级取值,称其为基本优先级。进程里的线程,除了仍然有所属 进程的基本优先级外,还有运行时的当前优先级。线程的当前优先级,随占用CPU时间 的长短等因素,会不断地得到调整。 3.线程时间的配额 线程时间的配额,即时间片,但它不是时间的长度值,而是一个配额单位的整数。 每个线程都有代表本次运行最大时间长度的时间配额。一个线程有可能在没有用完它的 时间配额时,被其他线程所抢先。 每次产生时钟中断,中断服务程序就从线程时间配额中减一个固定值。一个线程用 完自己的时间配额后,系统一方面会判断是否需要降低该线程的优先级,另一方面就去 查找是否有其他更高优先级的线程等待运行,并重新开始调度。 。线程运行时的时间配额,是由用户在注册时指定的。注册项由三个部分构成:“时 间配额长度”,“前后台变化”,以及“前台线程时间配额的提升”。系统根据这三个 取值,决定线程运行时的时间配额
2. Windows XP线程的优先级 在Windows XP里,一旦线程被创建,就继承所属进程的优先级,在运行过程中又有 自己的优先级。线程优先级被分为三个部分:16个实时线程优先级(16~31);15个可 变线程优先级(1~15);1个系统线程优先级(0)。 . 进程只能有单个优先级取值,称其为基本优先级。进程里的线程,除了仍然有所属 进程的基本优先级外,还有运行时的当前优先级。线程的当前优先级,随占用CPU时间 的长短等因素,会不断地得到调整。 . 3. 线程时间的配额 . 线程运行时的时间配额,是由用户在注册时指定的。注册项由三个部分构成:“时 间配额长度” , “前后台变化”,以及“前台线程时间配额的提升”。系统根据这三个 取值,决定线程运行时的时间配额。 线程时间的配额,即时间片,但它不是时间的长度值,而是一个配额单位的整数。 每个线程都有代表本次运行最大时间长度的时间配额。一个线程有可能在没有用完它的 时间配额时,被其他线程所抢先。 . 每次产生时钟中断,中断服务程序就从线程时间配额中减一个固定值。一个线程用 完自己的时间配额后,系统一方面会判断是否需要降低该线程的优先级,另一方面就去 查找是否有其他更高优先级的线程等待运行,并重新开始调度。