第7章Windows的进程与内存管理•7.1WindowsNT的特点及相关的概念•7.1.1WindowsNT体系结构的特点•7.1.2Windows的管理机制•1.核心态(kernelmode)和用户态(usermode)•2.Windows操作系统的体系结构•3.系统调用、中断和陷阱•陷阱是由程序造成的,并且与程序同步。如果程序一而再的被运行,陷阱将总在指令流中相同位置的精确发生。而中断则是由外部事件和其时钟造成的,不具有重复性•中断、异常、陷阱•1、三者的关系陷阱这个说法其实不确切,应该说是陷阱门。中断包含中断门和陷阱门,当然还有其他。•2、中断和异常的区别中断和异常,都是程序执行过程中的强制性转移。异常,是处理器执行指令过程中监测到错误时发生;中断,通常在程序执行时因硬件而随机发生(如外围设备的请求),软件通过int指令也可以产生中断。•3、中断门和陷阱门的区别他们的区别很微小,即执行时是否影响中断允许标志IF。中断门会在执行前前将IF设为0,完事后iret指令会从堆栈上恢复IF的原值,这样可以避免其他中断干扰当前中断的处理;而陷阱门不会。因此,中断门最适宜于处理中断,而陷阱门适宜于处理异常。•4、中断的分类中断分内部和外部中断两种。内部中断,即软件调用intn产生。外部中断,由硬件产生,其又分不可屏蔽和可屏蔽两种,分别有CPU的引脚NMI和INTR接收。NMI中断对应中断向量号2;INTR中断可通过控制器8259A设置其运行。此两者的区别是,是否收到IF位的影响,显然,NMI中断他老人家不会理会IF位的值。•4.利用对象来共享系统资源•5.本地过程调用•7.2Windows进程和线程•7.2.1Windows的进程和线程的定义•7.2.2进程和线程的关联图7.1Windows进程和线程的关联7.2.3Windows进程的结构Windows将表示进程的数据结构统称为执行进程块,它提供了操作系统管理进程所需要的基本信息。7.2.4Windows线程的结构•7.2.5Windows进程和线程的创建•1.进程的创建过程2.Windows线程的创建过程(1)在进程的地址空间中为线程创建用户栈,并初始化运行上下文环境。(2)初始化线程的线程环境块(3)创建执行线程对象(4)通知Windows子系统新线程已被创建,子系统将新线程的线程插入到相应进程的线程列表中。(5)新线程的句柄和标志被返回给调用的线程(6)线程进入调度队列等待执行•7.3Windows处理器调度机制•7.3.1调度优先级图7.3应用优先级别和系统的优先级别的对应关系在Windows中,每个线程都被赋予了优先级的概念,线程总共有32个优先级数从0(最低)到31(最高)。从前面的章节我们知道,线程是从属于某个进程的,那么对于某个具体进程的某个线程的优先级是怎么确定的呢?这得从几个优先级概念说起。一个线程的优先级是由进程的基本优先级(或者叫优先级类)和线程的相对优先级决定的。因为我们无法直接设置一个线程的优先级数,比如2或29。进程的基本优先级:他是通过调用系统API---SetPriorityClass来设置,运行中的进程的优先级可以通过任务管理器查看。基本优先级是针对进程来讲的,基本优先级有8个类别,分别是:ABOVE_NORMAL_PRIORITY_CLASS,高于一般BELOW_NORMAL_PRIORITY_CLASS,低于一般HIGH_PRIORITY_CLASS,高IDLE_PRIORITY_CLASS,空闲NORMAL_PRIORITY_CLASS,一般PROCESS_MODE_BACKGROUND_BEGIN,PROCESS_MODE_BACKGROUND_END,REALTIME_PRIORITY_CLASS.实时如果程序没有进行特别设置,那么进程的基本优先级将会设置为NORMAL_PRIORITY_CLASS这个级别。先对来说,使用高于正常的优先级需要特别小心,特别是REALTIME_PRIORITY_CLASS.他表示进程中线程必须立即对事件作出响应,以便执行关键时间的任务.该进程中的线程还会抢先于操作系统组件之前运行.使用本优先级类时必须极端小心.线程相对优先级:相对优先级是针对线程的,他是通过调用SetThreadPriority函数设置的。具体参数可以参考MSDN.那么线程的优先级到底是怎么确定的呢?基本优先级和相对优先级如何结合的呢?下表就是他们的对应关系7.3.2线程状态图7.4Windows线程状态转换图•7.3.3线程调度机制•1.调度数据库图7.5调度数据库的不同优先级就绪线程队列•2.时间配额•3.调度算法•采用基于优先级的抢占式调度算法。•4.上下文切换•线程的核心栈用来完成上下文切换7.4Windows的内存管理•7.4.1内存管理器•进程一般只有一部分虚拟地址空间中的数据是驻留在物理内存中,这一部分虚拟地址空间被称为工作集。•7.4.2内存管理的机制•1.页•2.共享内存•3.堆管理•4.系统内存池7.5虚拟地址空间•7.5.1虚拟地址空间布局图7.832位Windows的虚拟地址空间布局•7.5.2虚拟地址转换图7.9虚拟地址转换图7.10虚拟地址的页索引结构图7.11虚拟地址转换过程图7.12页表入口的结构7.6页面调度•7.6.1缺页处理•7.6.2工作集及页面调度策略•7.6.3页框号和物理内存管理图7.13页框号数据库及状态链表