Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24115
  • 博文数量: 13
  • 博客积分: 109
  • 博客等级: 民兵
  • 技术积分: 105
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-18 03:24
文章分类

全部博文(13)

文章存档

2012年(3)

2011年(10)

我的朋友

分类: WINDOWS

2011-10-27 13:30:28

                   线程

(1)线程的引入动机
1)应用背景
·传统的进程:进程在任一时刻只有一个执行控制流。
·在一般的服务器应用中,接受服务请求和为单个请求提供服务是并发操作,为不同请求提供服务也是并发操作。
2)传统的进程在实现服务器应用时存在下列问题
如果接受服务请求和为单个请求提供服务分别以不同的进程实现:
·进程间需要频繁进行信息交互,进程之间通信的代价大;
·需要为每个进程分配必要的资源,资源消耗比较大;
·进程切换的开销大,频繁的进程调度将耗费大量处理器时间。
如果用一个进程实现服务器的所有功能,任务间的并发度不高,或者说不能完成两类任务(接受请求和提供服务)间的并发处理。
(2)解决思路
1)在统一进程中,存在多个执行线索。
2)把进程视为资源费配的基本单位,把进程内部的每个执行线索看作调度和执行的基本单位。
3)这种进程内部的执行线索,成为线程,又称为轻量级进程。
(3)线程的基本特征
1)独立的线程执行状态(运行、就绪等)
2)独立的线程上下文环境。
3)独立的执行栈:保存线程的上下文。
4)存在独立的线程控制块来描述线程的各类管理信息。
5)存取所属进程内的主存和其他资源,在本进程的范围内与所有线程共享这些资源。
·同一程序地址空间
·运行代码
·全局变量
·设备和文件资源
(4)多线程的实现方案
1)用户级多线程
基本思想
管理线程的工作由应用程序完成,操作系统感觉不到进程内部的多执行线索。
管理线程的工作
线程创建和撤销、线程间通信、调度和现场保护与恢复等。
系统运行方式
·进程按操作系统的进程调度方式竞争CPU。
·京城竞争到CPU后,再按自己的调度方式选择合适的线程运行。
·进程占有CPU期间,进程可以按既定的调度方式选择新线程运行,被剥夺CPU的线程的执行线程保存由该进程负责。
实现方式
进程管理工作完全应用程序员代码实现。为便于使用,以函数库的形式提供,应用程序员可以通过对函数库的调用实现对线程的管理。
主要优点
·统一进程内的线程切换比较灵活,不同的应用程序可以采用不同的调度算法。
·实现独立于操作系统内核,便于维护,也便于在操作系统之间实现移植。
主要缺点
在多处理器环境下,同进程中多线程并行性差。
2)内核级多线程
基本思想
所有线程管理工作全部由操作系统核心完成。操作系统核心为进城的每个线程维护上下文。操作系统基于线程实现处理器调度,任何进城都至少包含一个线程。
实现和使用方式
应用程序中不再包含线程管理代码。应用程序员可以通过系统调用接口完成线程的创建和控制。
缺点
即使同进程内的线程切换也需要进入核心态执行调度程序。
优点
对不同进城内的线程切换效率高,一次调度就能完成。同进程内的线程并行度好。
3)混合方法实现多线程
综合用户级线程和核心级线程的实现方法。性能比较好,但实现比较复杂。
阅读(992) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~