计算机软件线程,[计算机软件及应用]什么是线程.ppt

[计算机软件及应用]什么是线程

第五章 线程 5.1概述 什么是线程? 为什么需要引入线程? 内核线程和用户线程 线程的定义 线程(thread),有时也被称为轻量级进程(lightweight process , LWP) 线程是CPU使用的基本单元 线程由如下部分组成: 线程ID PC指针 一组寄存器 调用栈 同一进程内的所有线程共享代码段、数据段和其它操作系统资源 (如文件、信号等)。 单线程进程和多线程进程 5.1.1动机 应用程序通常实现得像一个具有多个控制线程的独立进程,例如: 网页浏览器可能包括: 显示图片和文字的线程 从网络接收数据的线程 字处理器可能包括: 格式化显示文本和图像的线程 读入用户键盘输入的线程 拼写和语法检查的线程 网页服务器可能包括: 许多完成相似或者不同功能的不同线程 5.1.2 优点 响应度高: 如果对一个交互式应用程序采用多线程,即使其部分阻塞或执行冗长的操作,那么该程序仍能够继续执行,从而增加了对用户的响应度。 资源共享: 线程默认共享它们所属进程的内存和资源。 优点 经济:创建和切换代价小 例如在Solaris 2中 进程创建要比线程创建慢30倍 进程上下文切换要比线程上下文切换慢5倍 多处理器体系结构的利用 单线程的进程只能运行在一个CPU上,无论系统中有多少个CPU。 5.1.3用户线程与内核线程 用户线程 在内核之上支持 在用户层通过线程库来实现 线程库支持创建、调度和管理线程,而无需内核干预 在单线程内核上,任何一个用户级线程若执行阻塞系统调用就会引起整个进程阻塞,即使还有其他线程可以在应用程序内运行 用户级线程库包括: POSIX Pthreads Mach C-threads Solaris 2 UI-threads 用户线程与内核线程 内核线程 由操作系统直接支持:内核负责在内核空间执行线程创建、调度和管理; 创建和管理比用户线程慢; 线程之间的阻塞相互独立(既一个线程执行阻塞系统调用时,内核可以调度进程里的其它线程执行); 更好的支持多CPU体系结构; 例如: Windows NT/2000 Solaris 2 Tru64 UNIX 5.2 多线程模型 用户线程和内核线程的对应关系,形成了三种多线程模型: 多对一模型(m:1) 一对一模型(1:1) 多对多模型 (m:n) 5.2.1多对一模型 多对一模型 多个用户线程映射到一个内核线程 线程的管理在用户空间内完成,效率比较高 通常用于不支持内核线程的系统上 缺点 一个线程阻塞将导致整个进程阻塞 多个线程不能并行运行在多处理器上 例如 Solaris 2系统的Green threads Unix的Pthreads 5.2.2一对一模型 一对一模型 每个用户线程都映射到一个用户线程上 提供了更好的并发性(某个线程的阻塞不一定导致进程的阻塞) 支持多处理器 缺点 创建用户线程造成的高开销 例如 Windows 95/98/NT/2000 OS/2 5.2.3多对多模型 多对多模型 多路复用了许多用户线程到同样数量或者更小数量的内核线程上。 m:n (m>=n) 允许编程人员创建足够多的用户线程 避免线程阻塞引起进程阻塞、支持多处理器 例如 Solaris 2 IRIX HP-UX Tru64 UNIX 5.3若干多线程的问题 系统调用fork和exec 线程取消 信号处理 线程池 线程特定数据 5.3.1系统调用fork和exec fork 用于创建一个独立的、重复的进程 在多线程程序里,有的UNIX有两种形式的fork 一种复制进程中所有的线程 用于没有在fork后立即调用exec的情况 一种仅仅复制调用了系统调用fork的线程 用于在fork后立即调用exec的情况 exec参数所指定的程序会替换整个进程 5.3.2线程取消 线程取消 是在线程完成之前来终止进程的任务 例如: 多个线程并发执行以搜索数据库并且一个线程返回了结果 用户按下网页浏览器上的停止按钮,装入网页的线程就被取消 两种线程取消的情况 目标线程: 要被取消的线程 异步取消: 一个线程立即终止目标线程 要取消的线程正在更新与其它线程所共享的数据 往往并不收回所有系统资源 延迟取消: 目标线程不断的检查它是否应终止,允许一个线程检查它是否是在安全的点被取消。 (Pthread称这些点为取消点) 5.3.3 信号处理 信号在 UNIX 系统中用做通知进程某个特定事件已经发生了 信号是由特定事件的发生所产生的 产生的信号要发送到进程 一旦发送,信号必须要加以处理 忽略也是一种处理 同步和异步信号 同步信号 非法内存访问, 被零除 同步信号发送到执行操作而产生信号的同一进程 异步信号 一个信号是由运行进程之外的事件所产生 用特殊键 (Ctrl-C), 定时器时间到期 异步信号被发送到另一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值