Windows XP 系统进程管理机制.docVIP

  • 8
  • 0
  • 约7.36千字
  • 约 7页
  • 2017-08-22 发布于河南
  • 举报
Windows XP 系统进程管理机制 冯秋 2004-9-13 1. Windows XP中进程生成、删除机制 1 2. Windows XP中进程调度机制 2 2.1 Windows 2000/XP的线程调度特征 2 2.2 线程优先级 2 2.3 线程时间配额(Quantum) 3 2.4 调度数据结构 3 2.5 单处理器系统调度策略 3 2.6 对称多处理器系统上的线程调度 4 3. Windows XP中进程通信机制 5 3.1 Windows 2000/XP的进程互斥和同步 5 3.2 Windows 2000/XP的信号(signal) 6 3.3 Windows 2000/XP基于文件映射的共享存储区(shared memory) 6 3.4 Windows 2000/XP管道(pipe) 6 3.5 其他通信机制 7 4. 其它进程管理相关信息 7 Windows XP中进程生成、删除机制 进程可利用系统调用功能来创建新的进程,创建者称为父进程,而被创建的新进程称为子进程。子进程从父进程继承一些属性,又与父进程有区别,形成自己独立的属性。按子进程是否覆盖父进程和是否加载新程序,子进程的创建可分为fork,spawn和exec三种类型。 进程的退出是通过相应的系统调用进行的。进程退出过程中,操作系统删除系统维护的相关数据结构并回收进程占用的系统资源。 Windows 2000/XP进程是作为对象来管理的,可通过相应句柄(handle)来引用进程对象,OS提供一组控制进程对象的服务。Win32环境子系统是整个系统的主子系统,放置一些基本的进程管理功能,其他子系统利用Win32子系统的功能来实现自身的功能。 Windows 2000/XP中的每个Win32进程都由一个执行体进程块(EPPROCESS)表示,执行体进程块描述进程的基本信息,并指向其他与进程控制相关的数据结构。 Win32子系统的进程控制系统调用: ——CreatProcess创建新进程及其主进程,并可指定从父进程继承的属性。 ——ExitProcess和TerminateProcess都可用于进程退出,终止一个进程和它的所有线程,区别在于ExitProcess终止操作完整,TerminateProcess终止操作不完整,通常只用于异常情况下对进程的终止。 Windows XP中进程调度机制 Windows 2000/XP的线程调度特征 Windows 2000/XP的处理器调度的调度单位是线程而不是进程。线程调度机制是基于优先级的抢先式多处理器调度,依据优先级和分配时间片来调度。 调度系统总是运行优先级最高的就绪线程。 在同一优先级的各线程按时间片轮转算法进行调度。 如果一个高优先级的线程进入就绪状态,当前运行的线程可能在用完它的时间片之前就被抢先。 线程调度可由以下事件触发: 一个线程进入就绪状态。 一个线程的时间片结束。 线程由于调用系统服务而改变优先级或被系统本身改变其优先级。 正在运行的线程被改变了所运行的处理器(在多处理器系统中)。 当Windows 2000/XP选择运行一个新线程时,将执行一个线程上下文切换以使新线程进入运行状态,即保存正在运行线程的相关运行环境,加载另一个线程的相关运行环境。 线程优先级 Windows 2000/XP内部使用32个线程优先级,范围从0到31,数值越大,优先级越高。 实时线程优先级:16~31 可变线程优先级:1~15 级别0保留为系统使用,仅用于对系统中空闲物理页面进行清零的零页线程。 线程优先级的指定: 通过Windows 2000/XP内核控制 2)通过Win32应用程序编程接口指定:由进程优先级类型(进程创建时指定)和线程相对优先级(进程内各线程创建时指定)共同控制。 ——SetPriorityClass:设置进程基本优先级 ——GetPriorityClass:读取进程优先级 ——SetTreadPriority:设置线程相对优先级 ——GetTreadPriority:读取线程相对优先级 一个进程仅有单个优先级取值,即基本优先级,而一个线程有当前优先级和基本优先级两个优先级取值。在Windows 2000/XP中,实时优先级(16~31)线程的基本优先级和当前优先级总是相同的,可变优先级线程的当前优先级可在一定范围(1~15)内动态变化。 中断优先级与线程优先级的关系:(参见图3-29) ——用户态进程运行在中断优先级0,内核态的异步调用过程运行在中断优先级1,它们 会中断线程的运行。 ——只有内核态线程可提升自己的优先级,用户态线程不管优先级是多少都不会阻塞硬件中断。 ——线程调度代码运行在DPC/线程调度中断优先级。这样可防止调度器代码与线程在访问调度器数据结构时发生冲突。 在下列5种

文档评论(0)

1亿VIP精品文档

相关文档