附录四 NT 的线程机制.PDFVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
附录四 NT 的线程机制

中国科学技术大学 多媒体技术与网络通信实验室 (copyright 1999 ) 附录四 NT 的线程机制 —在 VC、Delphi 和 Java 中多线程的实现 多线程是现代操作系统有别与传统操作系统的重要标志之一,不同与传统的多进程概 念。线程也是 Windows NT 引入的先进技术之一。实际上,没有多线程,也就不会有 Windows NT 的占先式 (Preemptive)多任务。线程是 Windows NT 的唯一的执行单元,Windows NT 就 是靠线程的优先级及分配给 CPU 的时间来调度线程,进而达到多任务的目的的。为了是开 发的应用程序可以利用线程完成特定任务,Windows NT 为开发人员提供了编程接口。但是 调用 Win32 API 中的进程函数,对大多数程序开发人员来说,工作量之大是显而易见的。 MFC 提供 AfxBeginThread()启动线程。在 Java 中利用创建类 Thread 的子类,并重载其 run() 的方法来实现多线程;在 Delphi 中则是创建子类及其 Create()方法来实现多线程,都是面向对 象编程技术的升华。本文将以 NT 为例介绍一下线程机制,并提供用 VC 、Java 和 Delphi 运 行环境中模拟 NT 多线程调度的程序设计思路。 一、线程的基本概念 最早应用线程这一概念的是 DEC 公司 1988 年开发的实时操作系统 VAXELN ,此操作 系统的主要设计者就是 Dave Cutler (Windows NT 的总设计师)。那时的线程概念还比较模 糊,从 1989 年以后,这一概念才陆续见诸于报端,而为国内广大用户理解和接受则是在 Windows NT 发布以后。也许您已经遇见过关于线程的不同定义,例如“一个执行单元”、 “一个独立的程序计数器”、“进程内的一个可调度实体”等等。很多线程的定义都是基本正 确但不完善。具体来说,线程是操作系统分配 CPU 时间的最基本实体,它可以有一下几部 分组成: ○一个唯一的标志符,称为客户ID ○表示处理器状态的一组易变寄存器内容 ○用户态栈:线程在用户态下执行使用 ○核心态栈:线程在核心态下执行使用 ○一个私有存储区,供子系统、运行期程序库及动态链接库使用。 易变寄存器、栈和私有存储区被称为线程描述表,组成线程描述表的实际数据随处理器的不 同而不同。 正如进程在逻辑上表示了操作系统所必须完成的作业一样,线程表示完成该作业的许多 可能子任务之一。在 Windows NT 中,进程并不执行代码,而是有进程拥有的线程执行代码, 所以线程有时又称“执行线程”。线程驻留于进程的虚拟地址空间中,在线程执行中将使用 地址空间进行存储。若同一进程中存在多个线程,则它们共享地址空间和所有的处理器资源, 包括其存取令牌、基本优先级以及对象表中的对象句柄。Windows NT 的内核在处理器上调 度执行程序,这样一来每个进程在可执行之前必须至少具有一个线程。 注意,线程和传统操作系统常常用到的 “进程”的概念是不同的。二者的差别主要体现 在如下两个方面: 首先,同样作为基本的执行单元,线程的划分比进程小。因此,支持多线程的系统要比 只支持多进程的系统并发度高。 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ cxh@ 中国科学技术大学 多媒体技术与网络通信实验室 (copyright 1999 ) 其次,进程把内存空间作为自己的资源之一,每个资源都有的 自己的内存单元。与此同 时,线程却共享内存单元,通过共享的内存空间来源交换信息,从而有利提高执行效率。 二、线程的并发性和Windows NT 的多任务 线程的概念和并发性是紧密相关的,多线程的出发点就是为了提高系统的并发性。必须 注意的是,通常我们使用的计算机都是单 CPU 的,因此,所谓的并发执行,实际上从内部 来看仍是串行执行的,只不过由于操作系统可 自动进行任务切换,因而给人一个并发执行的 假象。 比方说,如果有两个并发执行的线程 A 和 B ,我们先启动线程 A 的执行,随即启动线 程 B

文档评论(0)

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

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

1亿VIP精品文档

相关文档