- 1、本文档共149页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 进程A PCB(B) 进程B Send (B,a) Sender: A Size: 6 Text: Hello! Receive(b) Sender: A Size: 6 Text: Hello! Sender: A Size: 6 Text: Hello! Next: 0 …… 首指针:mq 互斥:mutex 队列资源:sm …… a 发送区 a b 接收区 b 消息缓冲通信 第七节? 线程的基本概念 线程的引入 线程和进程的比较 线程的属性 线程的状态 多线程OS中的进程 1、线程的引入 进程(60年代) 目的:使多个程序并发执行,提高资源利用率和系统吞吐量 定义:在OS中能拥有资源和独立运行的基本单位 进程的创建、撤消与切换存在较大的时空开销,限制了并发程度的提高。 线程(80年代) 目的:减少程序在并发执行时所付出的时空开销。 思想:“轻装上阵”——将进程的两个属性分离。 定义:线程是系统独立调度和分派(即可独立运行)的基本单位。 进程——拥有资源的单位 调度 线程是调度和分派的基本单位,进程是拥有资源的基本单位 并发性 同族、非同族线程均可并发。 拥有资源 线程几乎不占资源 系统开销 线程的切换、同步、通信无须内核干预。开销小 2、线程和进程的特点 轻型实体:线程几乎不占资源(TCB、程序计 数器、寄存器、堆栈) 独立运行的基本单位:切换迅速且开销小 可并发执行:同族、非同族的线程皆可并发 共享进程的资源:同族的线程共享进程的资源 可以创建、撤销另一个线程 3、线程的属性 每个线程都利用TCB和一组状态参数进行描述 (1) 状态参数: 寄存器状态、堆栈、运行状态、优先级、专用存储器、信号屏蔽 (2) 运行状态: 就绪态、执行态、阻塞态 4、线程的状态 进程作为系统资源分配的单位 进程不是一个可执行的实体 进程可包括一个或多个线程 单进程 单线程(各种UNIX版本) 单进程 多线程 (Windows NT / Solaris / OS/2) 5、多线程OS中的进程 地址空间和其他资源(如打开文件): 同一进程的各线程间共享资源--进程间相互独立 通信 进程间通信IPC--线程间可以直接读写进程数据段(如全局变量)来进行通信,需要线程间同步和通信手段的辅助,以保证数据的一致性 调度 不论是系统进程还是用户进程,进程的创建、撤销等都是利用系统调用进入内核,由内核的相应处理程序来完成。 而线程的创建、撤销则有可能由内核来实现,也有可能无须内核的支持。 线程上下文切换比进程上下文切换要快得多。 6、线程和进程的比较 线程间同步和通信 互斥锁(mutex,数据结构):多线程访问关键共享数据和程序段,开锁(unlock)和关锁(lock),trylock 条件变量:条件变量通常都与一个互斥锁一起使用。互斥锁用于短期锁定,主要是用来保证对临界区的互斥进入。而条件变量则用于线程的长期等待,直至所等待的资源成为可用的。 信号量机制 私有信号量:同一进程中各线程之间的同步 公有信号量(系统信号量):不同进程间或不同进程中各线程之间的同步 内核线程(kernel-level thread) 依赖于OS核心,由内核的内部需求进行创建和撤销,用来执行一个指定的函数。Windows NT和OS/2支持内核线程; 内核维护进程和线程的上下文信息; 线程切换由内核完成; 一个线程发起系统调用而阻塞,不会影响其他线程的运行。 时间片分配给线程,所以多线程的进程获得更多CPU时间。 用户线程(user-level thread) 不依赖于OS核心,应用进程利用线程库(运行时系统)提供创建、同步、调度和管理线程的函数来控制用户线程。 用户线程的维护由应用进程完成。 内核不了解用户线程的存在;用户线程切换不需要内核特权。 一个线程发起系统调用而阻塞,则整个进程在等待。时间片分配给进程,多个线程则每个线程就慢。 调度由应用软件内部进行,通常采用非抢先式和更简单的规则,也无需用户态/核心态切换,所以速度特别快。用户线程调度算法可针对应用优化。 轻权进程(Light Weight Process) 它是内核支持的用户线程。 一个进程可有一个或多个轻权进程(LWP),拥有自己的数据结构(如TCB),它们共享进程所拥有的资源。 LWP通过系统调用来获得内核提供的服务。每个轻权进程由一个单
文档评论(0)