操作系统概念(第六版)5线程.pdfVIP

  1. 1、本文档共15页,可阅读全部内容。
  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文档。上传文档
查看更多
操作系统概念(第六版) 第五章 线程 更新日期:2004-9-9 第四章介绍了进程模型,进程模型假设一个进程是一个正在执行的程序,是一个单独的控制执行序列。 现在有许多现代操作系统提供了进程包含多个控制执行序列的特性。本章将介绍多线程计算机系统中的一 些概念,包括了对Pthread API 和Java 线程的讨论。我们将会看到许多与多线程程序设计有关的问题,并 且将了解它(多线程程序设计)是如何影响操作系统的设计的。最后,我们将探讨几个现代操作系统是如 何在内核级(kernel level)支持线程的。 5.1 综述 线程,有时也被称为轻量级进程 (LWP ),是一个基本的CPU 执行单元;它包含了一个线程ID 、一个 程序计数器、一个寄存器组和一个堆栈。它与属于同一个进程的其它的线程共享代码段、数据段,以及其 它的操作系统资源(比如:打开的文件和信号)。一个传统的(或者说重量级)进程有一个单独的控制执 行序列。如果一个进程有多个控制执行序列,那么它就能够同时进行多个任务。图 5.1 说明了传统的单线 程进程和多线程进程的区别。 5.1.1 线程的起源 运行在现代桌面 PC 上的一些软件包是多线程的。应用程序通常被实现为一个拥有多个控制执行序列 的独立的进程。一个网页浏览器可能会有一个线程来显示图片或文本,而同时有其它的线程从网络上获取 数据。一个字处理器可能有一个线程显示图像,另一个线程读取用户按键,并且有第三个线程在后台执行 拼写和语法检查。 Figure 5.1 Single- and multithreaded processes. 在某些情况下,一个单独的应用程序可能需要执行几个相似的任务。例如,一个Web 服务器接收到对 网页、图片、声音等的客户端请求。流量比较高的服务器(busy web server )可能同时有很多(可能有数 百个)客户端访问它。如果Web 服务器作为一个传统的单线程进程运行,那么它同时只能够响应一个客户 端。客户端等待服务的时间可能会非常长。 一种解决方案是使服务器作为一个单独的接收请求的进程来运行。当服务器接收到一个请求时,它就 创建一个独立的进程来处理这个请求。事实上,这种创建进程的方法在线程广泛应用之前非常普遍。如上 一章所述,进程的创建是重量级的。如果一个新进程要执行的任务与已存在进程的任务相同,那么何必要 耗费所有这些开销呢?通常更高效的方法是创建一个包含了多个线程的进程来服务同样的请求。这种方法 将使web 服务进程多线程化。(This approach would multithread the web-server process. )服务器将创建一个 独立的线程来监听客户端请求;当一个请求产生时,它就创建另一个线程来服务这个请求,而不是创建一 个进程。 线程在远程过程调用(RPC)系统中也是一个很重要的角色。第四章讲到RPC 建立了一个类似于普通 的函数或过程调用的通信机制,从而允许进程间通信。典型的RPC 服务器是多线程的。当一个服务器接收 到一个消息时,它使用一个独立的线程处理该消息。这允许服务器服务多个并发的请求。 5.1.2 线程的优点 多线程程序设计的优点可以如下四类: 1.提高了响应速度:多线程交互式应用程序可以允许程序在它的一部分被阻塞或正在执行一个冗长 的操作时持续运行,从而提高了了对用户的响应速度。例如,一个多线程网页浏览器可以在一个 线程下载图片时利用另外一个线程与用户交互。 2 .资源共享:缺省情况下,线程共享它们所属进程的存储器和资源。代码共享的优点在于它允许应 用程序在同样的地址空间内拥有多个不同的活动线程。 3 .经济实惠:为进程创建分配存储器和资源代价高昂。因为线程共享它们所属进程的资源,所以线 程的创建和上下文转换更为划算。创建和维护进程与创建和维护线程的开销孰大孰小难以测量(一 般根据经验判断),但是通常创建和管理进程比创建和管理线程需要更多的时间。在Solaris 2 中, 创建线程的速度比创建进程快30 倍,上下文转换速度快5 倍。 4 .提高了多处理机体系结构的利用率:在多处理机体系结构中,多线程的优点就更加显著了。在这 种系统中,多个线程可以在不同的处理器上并行运行。一个单线程进程只能够在一个CPU 上运行, 而不论有多少CPU 可供使用。在多C

您可能关注的文档

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档