Threads线程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2020/9/27
Βιβλιοθήκη Baidu
Threads States(线程状态)
三种线程状态: running, ready, blocked 线程无挂起状态 Termination of a process, will terminates all threads within the process
2020/9/27
• Utilization of SMP Architectures
– 可以充分利用多处理器体系结构,使得一个进程中
的线程在不同的处理器上运行,提高进程执行的并
2020/9/27
行度
WEB server/Http request
http://…./index.htm
<html>….<img src=1.jpg><img src=2.jpg>…</html>
Inconveniences
Most system calls are blocking and the kernel blocks processes. So all threads within the process will be blocked
多数的系统调用将阻塞该进程 的所有线程
The kernel can only assign processes to processors. Two threads within the same process cannot run simultaneously on two processors
某线程更改共享的内存变量,所有其余线程均可见 某线程打开的文件名柄其余线程都可使用
2020/9/27
Benefits
• Responsiveness
– 可以获得快速的用户响应,如在C/S模式下,web server为每个用户连接运行一个线程;RPC服务器中 ,RPC服务进程会开启多个线程服务于每个RPC
– scheduling thread execution 对线程的调度
– saving and restoring thread contexts 对线程上下文的保存和恢复
2020/9/27
用户级线程的优缺点
Advantages
Thread switching does not involve the kernel: no mode switching 无模式(管态/目态)转换
http://…/1.jpg 1.jpg data
IE
http://…/2.jpg
2.jpg data
WEB Server
2020/9/27
FlashGet / eMule /BT
2020/9/27
多线程实例
2020/9/27
Application benefits of threads
一些应用程序可以分成若干相对独立的 部分[Word 的后台打印,拼写检查等,IE浏 览器] 每一部分用一个线程来实现 一个线程阻塞时可调度同一进程的另一 个线程运行而不是切换进程 线程间通信无需内核干预 需要解决进行线程间同步
Scheduling can be application specific: choose the best algorithm. 可选择最好的调度算法
ULTs can run on any OS. Only needs a thread library 只要有库,就可在任何操作 系统运行
2020/9/27
request
• Resource Sharing
– 进程是拥有资源的基本单位(CPU,地址空间,I/O 资源),进程中的线程可以共享这些资源
• Economy
– 创建线程比创建进程更快,进程内的线程切换( context switch)比进程更快,solaris中创建线程比进 程快30倍,线程切换比进程切换快5倍
Threads 线程
• 为什么要引入线程
– WEB服务器 同时处理多个客户请求 – 创建多个进程降低响应时间 – 进程开销较大(上下文切换)
• 线程(轻量级进程)
– 是CPU调度的一个基本单位
2020/9/27
多线程与单线程
多线程: 操作系统支持在一个进程中有多个执行 线程 单线程: 操作系统不支持线程概念 MS-DOS 支持单用户进程及单线程 传统 UNIX支持多用户进程但每进程只支持一个 线程 现今的操作系统,如Solaris, Windows, 支持多 线程
Solaris: SUN微系统公司开发的一种网络操作系统
2020/9/27
单线程与多线程
2020/9/27
Threads 线程
线程是“进程中的一条执行路径或线索”,或“ 进程中的一个可调度实体” 线程不运行时需要保存线程的上下文信息 线程有自己的执行堆栈(stack)及一些其于线程 的局部变量(local variables)分配的静态存储 单元 线程能访问其所属进程所拥有的地址空间和资源
User Level Threads(ULT)
• 内核不关注线程的存在 • 所有的线程管理由应用程序通过调用ULT库实
现 • 线程间的切换无需内核模式下的特权指令(无
模式转换) • 线程调度由特定的应用
程序完成 • 例子
- POSIX Pthreads - Mach C-threads
一种UNIX的操作系统,采用微内核
2020/9/27
共享资源产生的不一致问题
• 3 个变量: A, B, C 由 T1和T2两个线程共 享
• T1 计算 C = A+B • T2 从 A 转X至 B(转帐)
– T2 : A = A -X and B = B+X (so that A+B is unchanged)
• If T1 computes A+B after T2 has done A = A-X but before B = B+X, then T1 will not obtain the correct result for C = A + B
- Solaris threads
2020/9/27
User Level Threads library 用户级线程库
• Contains codes for: (包含以下代码)
– creating and destroying threads(线程的创建 和撤消)
– passing messages and data between threads 线程间数据和消息的传递
相关文档
最新文档