




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章Windows的进程与内存管理 作为完全的32位Windows版本 WindowsNT代表了微软公司Windows操作系统发展中的主流体系结构 Windows的系统服务和应用程序都是以进程的形式驻留在内存中的 处理器通过调度这些进程的执行来完成计算任务 本章以Windows为例 介绍进程与内存管理的方法 Windows是多线程操作系统 处理器调度是以线程为基本单位的 因此 本章在讲解进程的同时 也将介绍Windows线程的概念和结构 7 1WindowsNT的特点及相关的概念7 1 1WindowsNT体系结构的特点WindowsNT是支持多处理器的操作系统 WindowsNT是完全的32位操作系统 设计了4G大小的虚拟地址空间 其中2GB用做进程的私有空间 WindowsNT支持16位的Windows代码 并为其提供独立的运行空间 WindowsNT对访问共享内存的进程有严格的安全限制 WindowsNT的系统内存空间只能在和心态被访问 随着计算机体系结构和Windows家族的发展 WindowsNT内核版本也升级到6 0版本以上 支持64位操作系统 具有更多的特点 新版本增强了ActiveDirectory 使用了新的虚拟化和管理 采用了IIS7 5 可支持多达64个物理处理器或最多256个系统的逻辑处理器 可支持LiveMigration 动态迁移 支持虚拟磁盘动态调整容量 及VM内存动态配置功能 能以虚拟镜像文件于实体主机上开机 可支持无线广域网 网络驱动程序接口规范为6 20 支持AVCHD摄影机以及通用视频类型1 1 能支持新的用户模式调度框架 能完整支持S800 S1600以及S3200数据传输速率的IEEE1394b的火线堆栈 MicrosoftWindowsNT NewTechnology 是Microsoft在1993年推出的面向工作站 网络服务器和大型计算机的网络操作系统 也可做PC操作系统 它与通信服务紧密集成 基于OS 2NT基础编制 OS 2由微软和IBM联合研制 分为微软的MicrosoftOS 2NT与IBM的IBMOS 2 微软把自己的OS 2NT的名称改为WindowsNT 即第一代的WindowsNT3 1 WindowsNT的两个版本分别是WindowsNTWorkstation和WindowsNTServer WindowsNTServer专为服务器进行了优化 配置要求较高 最多支持32个处理器 可以充当网络服务器 可无限制连入客户机 完成繁重的网络任务 最多可支持多达256个远程客户存取 支持Macintosh文件及打印 具备磁盘容错功能 WindowsNTWorkstation硬件适合个人用户 当工作站上有如CAD CAM等高级应用要求时选用 仅可支持2个处理器 充当网络服务器 可以连入不超过10个客户机 完成有限网络服务功能 只能支持一个远程客户存取 不支持Macintosh文件及打印 不具备磁盘容错功能 7 1 2Windows的管理机制1 核心态 kernelmode 和用户态 usermode 为了保证操作系统的稳定性和安全性 Windows将处理器的运行模式分为核心态和用户态 用户的应用程序运行在用户态 而操作系统的内核代码和设备驱动程序则运行在核心态 运行于核心态的操作系统服务可以访问所有的系统内存和所有的CPU指令 可以利用所有的计算机资源来完成复杂的系统管理 Windows对运行于用户态的应用所能访问的系统资源有很多限制 从而保护了核心的系统资源不受侵害 所有运行于核心态的系统服务和设备驱动程序都共享同一系统地址空间 这样可以减少数据交换的中间环节 从而提高系统效率 用户态进程拥有自己独立的虚拟地址空间 它不能访问系统地址空间中的数据 也不能直接访问其他用户进程的地址空间 这种设计将进程执行错误所引起的损害限制在出错进程内 保证了操作系统的和其他应用运行的稳定性 2 Windows操作系统的体系结构Windows操作系统是由运行在用户态和核心态的一些构建组成的 一般将运行于核心态的构件称为核心系统服务 而将运行于用户态的构件称为用户进程 Windows的用户进程一般包括以下几种 1 操作系统支持进程 2 服务进程 3 应用程序 4 环境子系统服务进程 Windows的核心系统服务一般包括以下几种 1 Windows执行体 2 Windows内核 3 设备驱动程序 4 硬件抽象层 5 窗口和图形系统 3 系统调用 中断和陷阱处理器通过陷阱机制捕获当前执行线程 并将控制转到某一特定的处理过程 在陷阱处理之前 系统会记录当前运行线程的核心栈 以便处理完后返回该线程继续执行 Windows利用系统服务陷阱来实现用户程序对系统服务的调用 用户线程调用系统服务时会进入系统陷阱 并将服务转到系统服务入口 切换到核心态进行执行 Windows利用中断陷阱机制来管理硬件设备 通过设备驱动程序设置硬件中断陷阱 当进行I O请求时 系统通过硬件中断处理完成设定的陷阱 另外还通过设置软中断陷阱来进行启动线程调度 超时处理 进行非同步的I O操作 费同步调用其他现场功能等 陷阱是由程序造成的 并且与程序同步 如果程序一而再的被运行 陷阱将总在指令流中相同位置的精确发生 而中断则是由外部事件和其时钟造成的 不具有重复性 3 系统调用 中断和陷阱Windows利用意外陷阱机制来管理系统的出错状态 当发生意外处理事件时 系统会根据意外事件的条件转到特定的意外处理例程 陷阱是由程序造成的 并且与程序同步 如果程序一而再的被运行 陷阱将总在指令流中相同位置的精确发生 而中断则是由外部事件和其时钟造成的 不具有重复性 7 2Windows进程和线程7 2 1Windows的进程和线程的定义一个Windows进程有自己独立的虚拟地址空间 用以保护私有的执行代码和数据不被其他的进程破坏 每个进程包含一个或多个线程 运行在一个进程中的线程可以创建新的线程和新的进程 在Windows操作系统中 处理器调度的对象时线程 而进程为线程的运行提供资源和上下文环境 保证所属的线程在进程的虚拟地址空间范围内运行 一个Windows进程包含以下信息 唯一的进程标识 一个独立的虚拟地址空间 映射到进程虚拟地址空间的执行代码和数据 访问各种系统资源的对象句柄列表 安全上下文定义来说明与进程相关的用户 安全信息和访问特权设定 至少包含一个可执行的线程 一个Windows线程包含以下信息 唯一的线程标识 CPU寄存器的状态数据 用以表示处理器的状态 两个线程栈 一个在用户态执行时使用 一个用在核心态执行时使用 一个供子系统 运行库和动态链接库使用的线程本地存储空间 7 2 2进程和线程的关联Windows的进程和线程是紧密相关的 系统通过创建进程来为线程提供必要的上下文环境 如内存 资源对象等 进程以执行进程块的形式驻留在内存中 系统通过创建线程来运行具体的程序 同时提供处理器调度所需要的信息 线程以执行线程块的形式驻留在内存中 一个运行的线程可以在同一进程中创建新的线程来运行新的功能 也可以通过创建新的进程来启动新程序的运行环境 如图所示 构成进程的数据由分别驻留在系统地址空间中的核心进程块和驻留在进程地址空间中的进程环境块构成 类似地 构成线程的数据由分别驻留在系统地址空间中的核心线程块和驻留在系统地址空间中的线程环境块构成 线程通过线程环境块中的指针指向它属于的进程的进程环境块 因此线程调度器可以通过线程访问进程环境提供的上下文信息 图7 1Windows进程和线程的关联 7 2 3Windows进程的结构Windows将表示进程的数据结构统称为执行进程块 它提供了操作系统管理进程所需要的基本信息 核心进程块 进程环境块 7 2 4Windows线程的结构 7 2 5Windows进程和线程的创建1 进程的创建过程应用程序是通过调用相应的进程创建函数来创建一个新的Windows进程的 最常用的进程创建函数是CreateProcess 创建进程的过程是由3个部分配合完成的 创建进程的系统服务 Windows子系统和新的进程 如图所示 Windows创建进程的过程如下 1 CreatProcess通过调用进程管理服务找到执行文件的映像 并未其创建区域对象 2 创建执行进程对象 3 创建初始线程 4 通过发送消息通知Windows子系统新的进程已被创建 子系统将初始线程插入进程的线程列表 并将新的进程加入子系统进程列表 5 将控制传回进程的初始线程 对进程进行初始化 6 在新的进程和线程的上下文内调入响应的动态链接库 开始执行程序 2 Windows线程的创建过程 1 在进程的地址空间中为线程创建用户栈 并初始化运行上下文环境 2 初始化线程的线程环境块 3 创建执行线程对象 4 通知Windows子系统新线程已被创建 子系统将新线程的线程插入到相应进程的线程列表中 5 新线程的句柄和标志被返回给调用的线程 6 线程进入调度队列等待执行 7 3Windows处理器调度机制7 3 1调度优先级Windows处理器调度的粒度为线程 Windows为每一个线程分配调度优先级 调度器根据优先级采用抢占式调度策略 让具有最高优先级的线程首先执行 每一个线程都分配了以时间配额为单位的执行时间 通过改变线程的状态来进行线程调度 7 3Windows处理器调度机制7 3 1调度优先级Windows在分配处理器时间时 不考虑调度对象属于哪一个具体的进程 不同进程的线程原则上具有同样的调度优先级 优先级的设定更多的是考虑线程要求完成的时间紧迫性 Windows内核使用32个优先级别来表示线程要求执行的紧迫性 用0 31的数字表示 按照优先级的功能不同 它们可以被分为3组 1 16个实时优先级别 16 31 2 15个可变优先级 1 15 3 1个系统优先级 0 为内存页清零线程保留 7 3Windows处理器调度机制7 3 1调度优先级 图7 3应用优先级别和系统的优先级别的对应关系 处理器调度时参考两个优先级设置 一个是从当前线程所在的进程的基准优先级 另一个是线程的优先级 一般来讲 应用线程运行在可变优先级别 1 15 的范围内 如果需要进入实时优先级别 16 31 范围来运行 必须取得更高的调度优先级特权 Windows操作系统只有一个内存页清零线程 它具有最高的调度优先级别 以保证系统内存管理的效率 7 3 2线程状态 图7 4Windows线程状态转换图 7 3 3线程调度机制Windows通过调度数据库来为每一个优先级别的线程维护一个就绪等待队列 当处理器需要调入一个线程运行时 系统会从调度数据库中找到一个具有最高优先级别的就绪线程 并给它分配执行时间 如果等待队列中有线程比正在运行的线程的优先级跟高 运行的线程就会保存它运行的上下文环境并进入就绪队列 高优先级的线程恢复它的上下文环境 并进入运行状态 1 调度数据库系统中同时又多个线程存在 而每个处理器在一个时刻只能运行一个线程 Windows用调度数据库记录处于就绪状态的线程 以便在确定下一个执行的线程时参考 图7 5调度数据库的不同优先级就绪线程队列 2 时间配额当一个线程进入运行状态时 它获得了一个可以运行的时间配额 线程在核心线程块中都记录了当前的时间配额值 每过一个时钟周期 该值就会减1 当该值变为0时 表示时间配额已经用完 3 调度算法采用基于优先级的抢占式调度算法 4 上下文切换线程的核心栈用来完成上下文切换 2 时间配额当一个线程进入运行状态时 它获得了一个可以运行的时间配额 线程在核心线程块中都记录了当前的时间配额值 每过一个时钟周期 该值就会减1 当该值变为0时 表示时间配额已经用完 当分配给该线程的时间配额用完时 调度器会查找调度数据库看是否有就绪的线程在等待执行 如果有等待的就绪线程 调度器会将正在执行的线程转入等待或就绪状态 调入下一个具有最高优先级的线程进行运行 如果调度数据库中没有等待运行的就绪线程 调度器就再分配一个时间片让该线程继续运行 3 调度算法Windows采用基于优先级的抢占式调度算法 在一个具有较低优先级别的线程正在运行时 如果有一个具有较高优先级别的线程进入就绪等待队列 或一个具有较高优先级别的线程的等待结束时 就可以抢占处理器优先执行 为了不让被抢走的线程等待太长的时间 调度器会将它移动到等待就绪队列的对头 4 上下文切换处理器调入和调出一个线程时 是通过切换上下文来实现的 当系统调出一个正在运行的线程时 需要保存的线程上下文信息为运行指令指针 用户栈 核心栈指针以及线程所在进程的虚拟地址空间指针 线程的核心栈用来完成上下文的切换 调度器将调出线程的上下文环境信息压入该线程的核心栈 并将栈指针用来完成上下文的切换 调度器将调出线程的上下文环境信息压入该线程的核心栈 并将栈指针保存到该线程的核心线程块中 7 4Windows的内存管理 7 4 1内存管理器进程一般只有一部分虚拟地址空间中的数据是驻留在物理内存中 这一部分虚拟地址空间被称为工作集 7 4 2内存管理的机制1 页内存管理器将虚拟内存空间划分成固定大小的单元 页 page 页的大小根据具体的计算机体系结构而定 对于80 x86体系结构的处理器 页大小一般为4KB 应用程序一般希望申请到连续的虚拟地址空间 内存管理器对相关的页做预留标记 但在使用之前 并没有将预留的虚拟地址空间映射到实际的物理内存空间 这样可以减少分配内存的时间 在需要使用时再进行地址映射 2 共享内存Windows提供了在进程间共享内存的机制 共享内存可以理解为同一块物理内存在不同进程空间中的映射 如图所示 3 堆管理一般来说 内存申请是以页为单位的 4KB 当现场需要申请较小的内存块时 如果按照内存页分配机制 内存管理器只能为它申请以页为单位的内存块 会造成了内存资源的浪费 为了解决这一问题 Windows使用栈管理器来管理小的内存分配 4 系统内存池在系统服务中 有一部分的程序和数据需要常驻内存 以保证系统的效率 如中断处理程序等 内存管理器用不分页的内存池来为这些服务分配内存 这部分内存不会被调出到磁盘上 7 5虚拟地址空间Windows通过虚拟地址空间提供了一个内存的逻辑视图 应用程序通过内存管理器将虚拟地址映射到实际的物理内存地址 7 5 1虚拟地址空间布局32为的Windows操作系统的虚拟地址空间大小为4GB 如图所示 基于x86体系结构的Windows的虚拟地址空间可以分为几个主要的部分 7 5 1虚拟地址空间布局 图7 832位Windows的虚拟地址空间布局 进程的私有地址空间 系统内核 工作集链表 7 5 2虚拟地址转换 图7 9虚拟地址转换 7 5 2虚拟地址转换系统服务和应用程序是通过虚拟地址来操作内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同拟制方案么(3篇)
- 2025年商业写字楼智能化改造初步设计策略研究报告
- 金融科技企业估值模型与投资决策在金融科技生态构建中的应用2025年研究报告
- 村里果园合同承包协议书
- 生猪收购代销协议书范本
- 股东对外担保协议书模板
- 沿海拖船转让协议书范本
- 长宁区打印机租赁协议书
- 自驾旅行搭伴协议书范本
- 终止试用期合同解除协议
- 2025年广东省深圳市中考历史试卷(含解析)
- 百万销售日常管理办法
- 天津市南开区2024-2025学年七年级下学期期末考试数学试卷及答案
- 安全培训-重大事故隐患判定标准-专家版
- 2024年计算机二级WPS考试题库380题(含答案)
- 人教版小学英语单词表(完整版)
- 注射用卡络磺钠销售培训学习资料
- WB/T 1069-2017乘用车运输服务通用规范
- MT 314-1992煤矿假顶用菱形金属网
- GB/T 28708-2012管道工程用无缝及焊接钢管尺寸选用规定
- 医师执业注册变更聘用证明
评论
0/150
提交评论