ch2-2.4线程和其实现.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows 对象分类(3) Windows 对象结构 对象头 对象体 对象管理器 对象头 对象头指向打开该对象的进程列表,同时还有一个叫类型对象的特殊对象,它包含的信息对每个对象实例是公用的。 标准的对象头属性有:对象名、对象目录、安全描述符、配额账、打开句柄计数器、打开句柄数据库、永久/暂时状态、内核/用户模式和对象类型指针等。 对象体 对象体的格式和内容随对象类不同而不同,对象类的属性有:对象类名、存取类型、同步能力、分页/不分页、一个或多个方法。 对象管理器提供的通用服务程序有:关闭句柄、复制句柄、对象查询、对象安全性查询、对象安全性设置、等待单个对象和多个对象等。 进程及控制和使用的资源 对象句柄表 虚拟地址空间描述符 文件x 信号量 y 区域 z … VAD VAD VAD VAD 进程 访问令牌 可用对象 句柄1 句柄 2 线程 线程 线程 句柄 3 对象和句柄间的关系 应用程序 执行体对象 执行体 内 核 用户态 核心态 句柄 内核对象 进程对象(进程描述表结构) EPROCESS … void *UniqueprocessId; … KPROCESS … uint32 kernelTime; uint32 UserTime; … byte State; … NT内核 NT执行体 线程对象(进程和线程描述表结构) KTHREAD KTHREAD EPROCESS KPROCESS ETHREAD KTHREAD KTHREAD KTHREAD NT内核 NT执行体 调用CreateProcess函数创建进程 创建WIN32进程的具体步骤: ? 打开将在进程中被执行的映像文件(.EXE)。 ? 创建Windows2000/XP执行体进程对象。 ? 创建初始线程(堆栈、描述表、执行体线程对象)。 ? 通知WIN32子系统已创建了一个新进程,以便它可设置新的进程和线程。 ? 启动初始线程执行。 ? 在新进程和线程的描述表中完成地址空间的初始化,加载所需的DLL,并开始程序的执行 调用CreateThread函数创建线程 创建WIN32线程的具体步骤: ? 在进程地址空间内为线程创建用户态堆栈;初始化线程描述表; ? 调用NtCreateThread创建执行体线程对象。包括:增加进程中的线程计数,创建并初始化执行体线程块,生成新线程ID,从非页交换区分配线程的内核堆栈,设置线程环境块TEB,设置线程起始地址和用户指定的WIN32起始地址,设置KTHREAD块,设置指向进程访问令牌的指针和创建时间; ? 通知WIN32子系统已创建新线程,以便设置新的进程和线程; ? 置新线程为准备态,把其句柄和ID返回到调用进程;调用ResumeThread,线程将被激活并调度执行。 Windows进程和线程状态 资源 可用 事件完成但 资源不可用 事件完成 资源可用 阻塞 挂起 终止 可运行 不可运行 选中 切换 抢占或时间片到 Running 运行态 Ready 就绪态 Standby 准备态 Terminated 中止态 Waiting 等待态 Transition 过渡态 2.4 线程及其实现 2.4.1 引入多线程的动机 2.4.2 多线程环境中的进程和线程 2.4.3 线程的实现 1.单线程(结构)进程(Single Threaded Process) 在传统的操作系统中,进程是系统进行资源分配的基本单位,同时,进程也是处理器调度的基本单位,进程在任一时刻只有一个执行控制流,通常将这种结构的进程称单线程(结构)进程(Single Threaded Process)。 考察一个文件服务器的例子。在单线程(结构)进程运行模式下,当它接受一个文件服务请求后,由于等待磁盘传输而经常被阻塞。假如改变单线程(结构)进程运行模式,磁盘传输时不阻塞,利用磁盘传输的时间可继续接受新的文件服务请求并进行处理,再加上处理不同的请求时要访问同一个共享磁盘缓冲区,缓冲区中的程序和数据可能同时满足不同的请求,因而文件服务器的效率和性能可以提高。 2.4.1 引入多线程的动机 2.多线程(结构)进程(Multiple Threaded Process) 多线程(结构)进程是在同一进程中设计出多条控制流(每一个控制流称为一个线程),多条控制流之间可以并行执行;多控制流切换不需要通过进程调度;多控制流之间还可以通过内存区直接通信,降低通信开销。这就是并发多线程程序设计。 操作系统中引入进程的目的是为了使多个程序并发执行,以改善资源使用率和提高系统效率,操作系统中再引入线

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档