chapter5线程.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文档。上传文档
查看更多
chapter5线程

操作系统概念 线程 Thread 本章主要内容 概述 多线程模型 若干线程问题 Pthread线程 Java线程 一、概述 1)进程特征回顾 进程是可独立运行并拥有资源的基本单位 即:进程是可由OS调度、分派的基本单位,同时也是可拥有系统资源的独立单位 存在问题: 进程并发执行?存在间断特性?随时切换 切换操作?花费系统大量开销?运行效率下降   一、概述 2)线程的引入:轻量级进程 线程:由进程创建,是OS调度、分派的基本单位, 不再是拥有资源的独立单位,是轻量级的进程  ?进程切换?通过线程切换来实施?系统开销小,相当于轻装上阵,特别是针对多处理机系统,可改善其性能。 3)线程的状态与控制   类似于进程并可实施线程间的同步与通信。 一、概述 一、程序只是一组指令的有序集合 二、进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位; 三、线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. 线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈). 一个线程可以创建和撤销另一个线程. 一、概述 一、概述——单线程与多线程 多线程的优点 考虑一个网页服务器可能有多个(可能数百个)客户并发访问它 如果网页服务器作为传统单个线程的进程来执行,该如何处理? 作为多线程进程来运行又是如何处理的? 多线程的优点 响应度高 增加了对用户的响应程度 资源共享 线程默认共享它们所属进程的内存和资源 允许一个应用程序在同一地址空间内有多个不同的活动线程 经济 线程创建和上下文切换比进程创建与上下文切换更经济 多处理器体系结构的利用 单线程进程只能运行在一个CPU上 在多CPU机器上使用多线程增加了并发功能。 一、概述——用户级线程(user-level thread) 由用户层通过线程库来实现 三种主要的线程库 POSIX Pthread POSIX:Portable Operating System Interface Java threads Win32 线程库 一、概述——用户级线程特点 运行在OS之上; 对系统内核不可见; 被封装在进程中,竞争分配给进程的资源; 线程由一个线程运行系统(线程库,进程代码的一部分)来调度和管理; 开销较低; 用户级线程只能共享其所属进程的处理器资源,因为线程一次只能运行在一个处理器上,由此限制了多处理器系统的并行性。 一、概述——用户级线程创建实例 int pthread_create(pthread_t *tid, const pthread_attr_t *tattr, void*(*start_routine)(void *), void *arg); pthread_attr_init() 创建缺省属性对象,然后使用该属性对象来创建缺省线程 一、概述——用户级线程创建实例 #include pthread.h pthread_attr_t() tattr; pthread_t tid; extern void *start_routine(void *arg); void *arg; int ret; /* default behavior*/ ret = pthread_create(tid, NULL, start_routine, arg); /* initialized with default attributes */ ret = pthread_attr_init(tattr); /* default behavior specified*/ ret = pthread_create(tid, tattr, start_routine, arg); //start_routine 是新线程最先执行的函数 一、概述——内核级线程(kernel-level thread) 由操作系统直接支持:内核在其空间内执行线程创建、调度和管理 如 Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X 一、概述——内核级线程(kernel-level thread) 线程在全系统范围内竞争处理器资源; 调度的开销较大(与进程调度开销类似); 可以充分利用多处理器的优势; 管理代价比用户级线程的管理代价高; 在处理异步事件如异步 IO 时特别有用 二、多线程模型(混合线程模型, hybrid thread model) 提供两个级别的控制,具备用户级和内核级模型的优点。 模型: (1) 用户使用用户级线程编写程序,并说明有多少个内核可调度实体与这个进程相关; (2) 运行

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档