计算机操作系统第7章_第1页
计算机操作系统第7章_第2页
计算机操作系统第7章_第3页
计算机操作系统第7章_第4页
计算机操作系统第7章_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第7章章Windows的进程与内存管理的进程与内存管理 作为完全的作为完全的32位位Windows版本,版本,WindowsNT代表代表了微软公司了微软公司Windows操作系统发展中的主流体系结操作系统发展中的主流体系结构。构。 Windows的系统服务和应用程序都是以进程的形式的系统服务和应用程序都是以进程的形式驻留在内存中的,处理器通过调度这些进程的执行驻留在内存中的,处理器通过调度这些进程的执行来完成计算任务。本章以来完成计算任务。本章以Windows为例,介绍进程为例,介绍进程与内存管理的方法。与内存管理的方法。Windows是多线程操作系统,是多线程操作系统,处理器调度是以线程为

2、基本单位的。因此,本章在处理器调度是以线程为基本单位的。因此,本章在讲解进程的同时,也将介绍讲解进程的同时,也将介绍Windows线程的概念和线程的概念和结构。结构。 7.1Windows NT的特点及相关的概念的特点及相关的概念 7.1.1Windows NT体系结构的特点Windows NT是支持多处理器的操作系统。是支持多处理器的操作系统。Windows NT是完全的是完全的32位操作系统,设计了位操作系统,设计了4G大小大小的虚拟地址空间,其中的虚拟地址空间,其中2GB用做进程的私有空间。用做进程的私有空间。Windows NT支持支持16位的位的Windows代码,并为其提供代码,并

3、为其提供独立的运行空间。独立的运行空间。Windows NT对访问共享内存的进程有严格的安全限对访问共享内存的进程有严格的安全限制。制。Windows NT的系统内存空间只能在和心态被访问。的系统内存空间只能在和心态被访问。 随着计算机体系结构和随着计算机体系结构和Windows家族的发展,家族的发展,Windows NT内核版本也升级到内核版本也升级到6.0版本以上,版本以上,支持支持64位操作系统位操作系统,具有,具有更多的特点:更多的特点: 新版本增强了Active Directory,使用了新的虚拟化和管理,采用了IIS 7.5。 可支持多达64个物理处理器或最多256个系统的逻辑处理

4、器。 可支持Live Migration(动态迁移),支持虚拟磁盘动态调整容量,及VM内存动态配置功能,能以虚拟镜像文件于实体主机上开机。 可支持无线广域网,网络驱动程序接口规范为6.20,支持AVCHD摄影机以及通用视频类型1.1. 能支持新的用户模式调度框架。 能完整支持S800、S1600以及S3200数据传输速率的IEEE 1394b的火线堆栈。 Microsoft Windows NT (New Technology)是Microsoft在1993年推出的面向工作站、网络服务器和大型计算机的网络操作系统,也可做PC操作系统。它与通信服务紧密集成,基于OS/2 NT基础编制。OS/2由

5、微软和IBM联合研制,分为微软的Microsoft OS/2 NT与IBM的IBM OS/2。微软把自己的OS/2 NT的名称改为Windows NT,即第一代的Windows NT 3.1。 Windows NT的两个版本分别是Windows NT Workstation 和Windows NT Server 。 Windows NT Server 专为服务器进行了优化,配置要求较高。 最多支持32个处理器。 可以充当网络服务器,可无限制连入客户机,完成繁重的网络任务。 最多可支持多达256个远程客户存取。 支持Macintosh文件及打印,具备磁盘容错功能。 Windows NT Work

6、station 硬件适合个人用户,当工作站上有如CAD/CAM等高级应用要求时选用。 仅可支持2个处理器。 充当网络服务器,可以连入不超过10个客户机,完成有限网络服务功能。 只能支持一个远程客户存取。 不支持Macintosh文件及打印,不具备磁盘容错功能。 7.1.2Windows的管理机制的管理机制 1. 核心态(kernel mode)和用户态(user mode) 为了保证操作系统的稳定性和安全性,Windows将处理器的运行模式分为核心态和用户态。用户的应用程序运行在用户态,而操作系统的内核代码和设备驱动程序则运行在核心态。 运行于核心态的操作系统服务可以访问所有的系统内存和所有的

7、CPU指令,可以利用所有的计算机资源来完成复杂的系统管理。Windows对运行于用户态的应用所能访问的系统资源有很多限制,从而保护了核心的系统资源不受侵害。 所有运行于核心态的系统服务和设备驱动程序都共享同一系统地址空间,这样可以减少数据交换的中间环节,从而提高系统效率。 用户态进程拥有自己独立的虚拟地址空间,它不能访问系统地址空间中的数据,也不能直接访问其他用户进程的地址空间。这种设计将进程执行错误所引起的损害限制在出错进程内,保证了操作系统的和其他应用运行的稳定性。 2. Windows操作系统的体系结构操作系统的体系结构Windows操作系统是由运行在用户态和核心态的一操作系统是由运行在

8、用户态和核心态的一些构建组成的,一般将运行于核心态的构件称为核些构建组成的,一般将运行于核心态的构件称为核心系统服务,而将运行于用户态的构件称为用户进心系统服务,而将运行于用户态的构件称为用户进程。程。Windows的用户进程一般包括以下几种:的用户进程一般包括以下几种:1)操作系统支持进程。)操作系统支持进程。2)服务进程。)服务进程。3)应用程序。)应用程序。4)环境子系统服务进程。)环境子系统服务进程。Windows的的核心系统核心系统服务一般包括以下几种:服务一般包括以下几种:1)Windows执行体。执行体。2)Windows内核。内核。3)设备驱动程序。)设备驱动程序。4)硬件抽象

9、层。)硬件抽象层。5)窗口和图形系统。)窗口和图形系统。 3. 系统调用、中断和陷阱系统调用、中断和陷阱 处理器通过陷阱机制捕获当前执行线程,并将控制转到某一特定的处理过程。在陷阱处理之前,系统会记录当前运行线程的核心栈,以便处理完后返回该线程继续执行。 Windows利用系统服务陷阱来实现用户程序对系统服务的调用,用户线程调用系统服务时会进入系统陷阱,并将服务转到系统服务入口,切换到核心态进行执行。 Windows利用中断陷阱机制来管理硬件设备。通过设备驱动程序设置硬件中断陷阱,当进行I/O请求时,系统通过硬件中断处理完成设定的陷阱。另外还通过设置软中断陷阱来进行启动线程调度、超时处理、进行

10、非同步的I/O操作、费同步调用其他现场功能等。 陷阱是由程序造成的,并且与程序同步。如果程序一而再的被运行,陷阱将总在指令流中相同位置的精确发生。而中断则是由外部事件和其时钟造成的,不具有重复性。 3. 系统调用、中断和陷阱系统调用、中断和陷阱 Windows利用意外陷阱机制来管理系统的出错状态,当发生意外处理事件时,系统会根据意外事件的条件转到特定的意外处理例程。 陷阱是由程序造成的,并且与程序同步。如果程序一而再的被运行,陷阱将总在指令流中相同位置的精确发生。而中断则是由外部事件和其时钟造成的,不具有重复性。 7.2Windows进程和线程进程和线程 7.2.1Windows的进程和线程的

11、定义一个Windows进程有自己独立的虚拟地址空间,用以保护私有的执行代码和数据不被其他的进程破坏。每个进程包含一个或多个线程,运行在一个进程中的线程可以创建新的线程和新的进程。在Windows操作系统中,处理器调度的对象时线程,而进程为线程的运行提供资源和上下文环境,保证所属的线程在进程的虚拟地址空间范围内运行。一个一个Windows进程进程包含以下信息:包含以下信息: 唯一的进程标识。 一个独立的虚拟地址空间。 映射到进程虚拟地址空间的执行代码和数据。 访问各种系统资源的对象句柄列表。 安全上下文定义来说明与进程相关的用户、安全信息和访问特权设定。 至少包含一个可执行的线程。一个一个Win

12、dows线程线程包含以下信息:包含以下信息: 唯一的线程标识。 CPU寄存器的状态数据,用以表示处理器的状态。 两个线程栈,一个在用户态执行时使用,一个用在核心态执行时使用。 一个供子系统、运行库和动态链接库使用的线程本地存储空间。 7.2.2进程和线程的关联进程和线程的关联 Windows的进程和线程是紧密相关的,系统的进程和线程是紧密相关的,系统通过创建进程来为线程提供必要的上下文环通过创建进程来为线程提供必要的上下文环境,如内存、资源对象等,进程以境,如内存、资源对象等,进程以执行进程执行进程块块的形式驻留在内存中。系统通过的形式驻留在内存中。系统通过创建线程创建线程来运行具体的程序来运

13、行具体的程序,同时提供处理器调度所,同时提供处理器调度所需要的信息,线程以需要的信息,线程以执行线程块的形式执行线程块的形式驻留驻留在内存中。一个运行的线程可以在同一进程在内存中。一个运行的线程可以在同一进程中创建新的线程来运行新的功能,也可以通中创建新的线程来运行新的功能,也可以通过创建新的进程来启动新程序的运行环境。过创建新的进程来启动新程序的运行环境。 如图所示,构成进程的数据由分别驻留在系统地址空间中的核心进程如图所示,构成进程的数据由分别驻留在系统地址空间中的核心进程块和驻留在进程地址空间中的进程环境块构成,类似地,构成线程的块和驻留在进程地址空间中的进程环境块构成,类似地,构成线程

14、的数据由分别驻留在系统地址空间中的核心线程块和驻留在系统地址空数据由分别驻留在系统地址空间中的核心线程块和驻留在系统地址空间中的线程环境块构成,间中的线程环境块构成, 线程通过线程环境块中的指针指向它属于的进程的进程环境块,因此线程通过线程环境块中的指针指向它属于的进程的进程环境块,因此线程调度器可以通过线程访问进程环境提供的上下文信息。线程调度器可以通过线程访问进程环境提供的上下文信息。图7.1Windows进程和线程的关联 7.2.3Windows进程的结构进程的结构 Windows将表示进程的数据结构统称为执行进程块,它提供了操作系统管理进程所需要的基本信息。核心进程块、进程环境块7.2

15、.4Windows线程的结构 7.2.5Windows进程和线程的创建 1. 进程的创建过程 应用程序是通过调用相应的进程创建函数来创建一个新的Windows进程的,最常用的进程创建函数是CreateProcess. 创建进程的过程是由3个部分配合完成的:创建进程的系统服务、Windows子系统和新的进程。 如图所示,Windows创建进程的过程如下: (1)CreatProcess通过调用进程管理服务找到执行文件的映像,并未其创建区域对象。 (2)创建执行进程对象。 (3)创建初始线程。 (4)通过发送消息通知Windows子系统新的进程已被创建,子系统将初始线程插入进程的线程列表,并将新的

16、进程加入子系统进程列表。 (5)将控制传回进程的初始线程,对进程进行初始化。 (6)在新的进程和线程的上下文内调入响应的动态链接库,开始执行程序。2. Windows线程的创建过程线程的创建过程 (1)在进程的地址空间中为线程创建用户栈,并初)在进程的地址空间中为线程创建用户栈,并初始化运行上下文环境。始化运行上下文环境。(2)初始化线程的线程环境块)初始化线程的线程环境块(3)创建执行线程对象)创建执行线程对象(4)通知)通知Windows子系统新线程已被创建,子系统子系统新线程已被创建,子系统将新线程的线程插入到相应进程的线程列表中。将新线程的线程插入到相应进程的线程列表中。(5)新线程的

17、句柄和标志被返回给调用的线程)新线程的句柄和标志被返回给调用的线程(6)线程进入调度队列等待执行)线程进入调度队列等待执行 7.3Windows处理器调度机制 7.3.1调度优先级 Windows处理器调度的粒度为线程,Windows为每一个线程分配调度优先级。调度器根据优先级采用抢占式调度策略,让具有最高优先级的线程首先执行。每一个线程都分配了以时间配额为单位的执行时间,通过改变线程的状态来进行线程调度。 7.3Windows处理器调度机制 7.3.1调度优先级 Windows在分配处理器时间时,不考虑调度对象属于哪一个具体的进程,不同进程的线程原则上具有同样的调度优先级,优先级的设定更多的

18、是考虑线程要求完成的时间紧迫性。 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)的范围内,如果需要进入实时优先

19、级别(16-31)范围来运行,必须取得更高的调度优先级特权。Windows操作系统只有一个内存页清零线程,它具有最高的调度优先级别,以保证系统内存管理的效率。7.3.2线程状态线程状态 图7.4Windows线程状态转换图 7.3.3线程调度机制 Windows通过调度数据库来为每一个优先级别的线通过调度数据库来为每一个优先级别的线程维护一个就绪等待队列,当处理器需要调入一个程维护一个就绪等待队列,当处理器需要调入一个线程运行时,系统会从调度数据库中找到一个具有线程运行时,系统会从调度数据库中找到一个具有最高优先级别的就绪线程,并给它分配执行时间。最高优先级别的就绪线程,并给它分配执行时间。如

20、果等待队列中有线程比正在运行的线程的优先级如果等待队列中有线程比正在运行的线程的优先级跟高,运行的线程就会保存它运行的上下文环境并跟高,运行的线程就会保存它运行的上下文环境并进入就绪队列,高优先级的线程恢复它的上下文环进入就绪队列,高优先级的线程恢复它的上下文环境,并进入运行状态。境,并进入运行状态。 1. 调度数据库调度数据库 系统中同时又多个线程存在,而每个处理器在一个时刻只能运行一个线程,Windows用调度数据库记录处于就绪状态的线程,以便在确定下一个执行的线程时参考。图7.5调度数据库的不同优先级就绪线程队列 2. 时间配额 当一个线程进入运行状态时,它获得了一个可以运行的时间配额。

21、线程在核心线程块中都记录了当前的时间配额值,每过一个时钟周期,该值就会减1,当该值变为0时,表示时间配额已经用完。 3. 调度算法 采用基于优先级的抢占式调度算法。 4. 上下文切换 线程的核心栈用来完成上下文切换 2. 时间配额 当一个线程进入运行状态时,它获得了一个可以运行的时间配额。线程在核心线程块中都记录了当前的时间配额值,每过一个时钟周期,该值就会减1,当该值变为0时,表示时间配额已经用完。 当分配给该线程的时间配额用完时,调度器会查找调度数据库看是否有就绪的线程在等待执行。如果有等待的就绪线程,调度器会将正在执行的线程转入等待或就绪状态,调入下一个具有最高优先级的线程进行运行。如果

22、调度数据库中没有等待运行的就绪线程,调度器就再分配一个时间片让该线程继续运行。 3. 调度算法 Windows采用基于优先级的抢占式调度算法,在一个具有较低优先级别的线程正在运行时,如果有一个具有较高优先级别的线程进入就绪等待队列,或一个具有较高优先级别的线程的等待结束时,就可以抢占处理器优先执行。为了不让被抢走的线程等待太长的时间,调度器会将它移动到等待就绪队列的对头。 4. 上下文切换 处理器调入和调出一个线程时,是通过切换上下文来实现的。当系统调出一个正在运行的线程时,需要保存的线程上下文信息为运行指令指针、用户栈、核心栈指针以及线程所在进程的虚拟地址空间指针。线程的核心栈用来完成上下文

23、的切换,调度器将调出线程的上下文环境信息压入该线程的核心栈,并将栈指针用来完成上下文的切换,调度器将调出线程的上下文环境信息压入该线程的核心栈,并将栈指针保存到该线程的核心线程块中。7.4Windows的内存管理 7.4.1内存管理器 进程一般只有一部分虚拟地址空间中的数据是进程一般只有一部分虚拟地址空间中的数据是驻留在物理内存中,这一部分虚拟地址空间被驻留在物理内存中,这一部分虚拟地址空间被称为称为工作集工作集。 7.4.2内存管理的机制 1. 页 内存管理器将虚拟内存空间划分成固定大小的单元页(page)。页的大小根据具体的计算机体系结构而定,对于80 x86体系结构的处理器,页大小一般为

24、4KB。 应用程序一般希望申请到连续的虚拟地址空间,内存管理器对相关的页做预留标记,但在使用之前,并没有将预留的虚拟地址空间映射到实际的物理内存空间。这样可以减少分配内存的时间,在需要使用时再进行地址映射。 2. 共享内存 Windows提供了在进程间共享内存的机制,共享内存可以理解为同一块物理内存在不同进程空间中的映射。如图所示: 3. 堆管理 一般来说,内存申请是以页为单位的(4KB)。当现场需要申请较小的内存块时,如果按照内存页分配机制,内存管理器只能为它申请以页为单位的内存块,会造成了内存资源的浪费。 为了解决这一问题,Windows使用栈管理器来管理小的内存分配。 4. 系统内存池 在系统服务中,有一部分的程序和数据需要常驻内存,以保证系统的效率,如中断处理程序等。内存管理器用不分页的内存池来为这些服务分配内存,这部分内存不会被调出到磁盘上。7.5虚拟地址空间虚拟地址空间 Windows通过虚拟地址空间提供了一个内存的逻辑视图。应用程序通过内存管理器将虚拟地址映射到实际的物理内存地址。 7.5.1虚拟地址空间布局 32为的Windows操作系统的虚拟地址空间大小为4GB。 如图所示,基于x86体系结构的Windows的虚拟地址空间可以分为几个主要的部分。 7.5.1虚拟地址空间布局图7.8 32位Windows的虚拟地址空间布局 进程的私有地址空间、系统内核、工

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论