操作系统课件os02进程通信和线程.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《操作系统课件os02进程通信和线程.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课件 os02 进程 通信 线程
- 资源描述:
-
1、操作系统操作系统Operating Systems2.5 进进 程程 通通 信信 进程通信:进程之间的信息交换,其所交换的信息量:进程通信:进程之间的信息交换,其所交换的信息量:l 一个状态或数值一个状态或数值l 成千上万个字节成千上万个字节 低级通信:低级通信:l 进程之间的互斥和同步进程之间的互斥和同步l 交换量的比较少交换量的比较少 高级通信:高级通信:用户可直接利用用户可直接利用OS所提供的一组所提供的一组通信命令通信命令高效地传送高效地传送大大量数据量数据的一种通信方式。的一种通信方式。进程通信的类型进程通信的类型1 共享存储器系统共享存储器系统l 基于共享数据结构的通信方式基于共享
2、数据结构的通信方式l 基于共享存储区的通信方式基于共享存储区的通信方式2 消息传递系统消息传递系统3 管道通信系统管道通信系统1 共享存储器系统共享存储器系统 基于共享数据结构的通信方式基于共享数据结构的通信方式 诸进程公用某些数据结构诸进程公用某些数据结构如:在生产者如:在生产者消费者问题消费者问题增加了程序员的负担增加了程序员的负担OS只须提供共享存储器只须提供共享存储器低效的,只适于传递相对少量的数据。低效的,只适于传递相对少量的数据。共享存储器系统共享存储器系统 基于共享存储区的通信方式基于共享存储区的通信方式 诸进程通过对共享存储区中数据的读或写来实现通信。诸进程通过对共享存储区中数
3、据的读或写来实现通信。通信方式属于高级通信通信方式属于高级通信先向系统申请获得共享存储区中的一个分区先向系统申请获得共享存储区中的一个分区像读、写普通存储器一样地读、写该公用存储分区。像读、写普通存储器一样地读、写该公用存储分区。进程进程1 1进程进程2 2 物理主存物理主存共享主存共享主存2 消息传递系统消息传递系统 属于高级通信方式属于高级通信方式l 程序员直接利用操作系统提供的一组程序员直接利用操作系统提供的一组通信命令通信命令(原语原语)进程间的数据交换进程间的数据交换l 以格式化的消息以格式化的消息(message)为单位的为单位的 因实现方式的不同而进一步分成:因实现方式的不同而进
4、一步分成:直接通信方式直接通信方式 间接通信方式间接通信方式3 管道通信管道通信 管道管道l 是指用于连接一个读进程和一个写进程以实现它们之是指用于连接一个读进程和一个写进程以实现它们之间通信的一个间通信的一个共享文件共享文件,又名,又名pipe文件。文件。写进程写进程共享文件共享文件读进程读进程管道机制必须的协调能力管道机制必须的协调能力1.互斥互斥2.同步同步 当写进程把一定数量的数据写入当写进程把一定数量的数据写入pipe,便去睡眠等待,便去睡眠等待,读进程取走数据后,再把它唤醒。读进程取走数据后,再把它唤醒。当读进程读一空当读进程读一空pipe时,也应睡眠等待时,也应睡眠等待写进程将数
5、据写入管道后,才将之唤醒。写进程将数据写入管道后,才将之唤醒。3.确定对方是否存在确定对方是否存在 只有确定了对方已存在时,才能进行通信。只有确定了对方已存在时,才能进行通信。2.5.2 消息传递通信的实现方法消息传递通信的实现方法 直接通信方式直接通信方式 间接通信方式间接通信方式1.直接通信方式直接通信方式 发送进程利用发送进程利用OS所提供的发送命令,直接把消息发送给目所提供的发送命令,直接把消息发送给目标进程。标进程。系统提供下述两条通信命令系统提供下述两条通信命令(原语原语):l Send(Receiver,message);发送一个消息给接收进程;发送一个消息给接收进程l Rece
6、ive(Sender,message);接收;接收Sender发来的消息发来的消息 要求发送进程和接收进程都以显式方式提供对方的标识符要求发送进程和接收进程都以显式方式提供对方的标识符 原语原语Send(P2,m1)原语原语Receive(P1,m1)解决生产者解决生产者消费者问题消费者问题repeatproduce an item in nextp;send(consumer,nextp);until false;repeat receive(producer,nextc);consume the item in nextc;until false2.间接通信方式间接通信方式 进程之间的通信
7、需要通过作为进程之间的通信需要通过作为共享数据结构共享数据结构的实体。的实体。l 该实体用来暂存发送进程发送给目标进程的消息;该实体用来暂存发送进程发送给目标进程的消息;l 接收进程从该实体中取出对方发送给自己的消息。接收进程从该实体中取出对方发送给自己的消息。这种中间实体称为信箱这种中间实体称为信箱l 消息在信箱中可以安全地保存,消息在信箱中可以安全地保存,l 只允许核准的目标用户随时读取。只允许核准的目标用户随时读取。信箱通信原语信箱通信原语1.信箱的创建和撤消。信箱的创建和撤消。创建者进程应给出信箱名字、信箱属性;创建者进程应给出信箱名字、信箱属性;对于共享信箱,还应给出共享者的名字。对
8、于共享信箱,还应给出共享者的名字。当进程不再需要读信箱时,可用信箱撤消原语将之当进程不再需要读信箱时,可用信箱撤消原语将之撤消撤消2.消息的发送和接收。消息的发送和接收。Send(mailbox,message);Receive(mailbox,message);信箱分类信箱分类 私用信箱私用信箱 公用信箱公用信箱 共享信箱共享信箱私用信箱私用信箱 用户进程可为自己建立一个新信箱,并作为该进程的一部用户进程可为自己建立一个新信箱,并作为该进程的一部分。分。当拥有该信箱的进程结束时,信箱也随之消失。当拥有该信箱的进程结束时,信箱也随之消失。可采用可采用单向通信链路单向通信链路的信箱来实现的信箱来
9、实现l 信箱的拥有者有权从信箱中读取消息,信箱的拥有者有权从信箱中读取消息,l 其他用户只能将自己构成的消息发送到该信箱中。其他用户只能将自己构成的消息发送到该信箱中。公用信箱公用信箱 它由它由操作系统操作系统创建,提供给系统中的创建,提供给系统中的所有核准进程所有核准进程使用。使用。公用信箱在系统运行期间公用信箱在系统运行期间始终存在始终存在。公用信箱应采用公用信箱应采用双向通信链路双向通信链路的信箱来实现。的信箱来实现。l 核准进程既可把消息发送到该信箱中,核准进程既可把消息发送到该信箱中,l 也可从信箱中读取发送给自己的消息。也可从信箱中读取发送给自己的消息。共享信箱共享信箱 由由某进程
10、某进程创建,创建时提供共享进程(用户)的名字创建,创建时提供共享进程(用户)的名字 拥有者和共享者均可读取自己消息。拥有者和共享者均可读取自己消息。2.5.3消息传递系统实现中的若干问题消息传递系统实现中的若干问题1通信链路通信链路 建立通信链路的方式建立通信链路的方式(1)由发送进程在通信之前用显式的由发送进程在通信之前用显式的“建立连接建立连接”命令命令(原语原语)请求系统为之建立一条通信链路;请求系统为之建立一条通信链路;l 主要用于计算机网络中。主要用于计算机网络中。(2)发送进程无须明确提出建立链路的请求,只须利用系统提发送进程无须明确提出建立链路的请求,只须利用系统提供的供的发送命
11、令发送命令(原语原语),系统会自动地为之建立一条链路。,系统会自动地为之建立一条链路。主要用于单机系统中。主要用于单机系统中。通信链路通信链路 根据通信链路的连接方法,可把通信链路分为两类:根据通信链路的连接方法,可把通信链路分为两类:(1)点点点连接通信链路;点连接通信链路;(2)多点连接链路,指用一条链路连接多个多点连接链路,指用一条链路连接多个(n2)结点结点(进程进程)根据通信方式的不同,可把链路分成两种:根据通信方式的不同,可把链路分成两种:(1)单向通信链路;单向通信链路;(2)双向通信链路;双向通信链路;根据通信链路容量,把链路分成两类:根据通信链路容量,把链路分成两类:(1)无
12、容量通信链路;)无容量通信链路;(2)有容量通信链路)有容量通信链路2消息的格式消息的格式 单机系统环境单机系统环境l 其消息格式比较简单;其消息格式比较简单;计算机网络环境计算机网络环境 可把一个消息分成消息头和消息正文两部分。可把一个消息分成消息头和消息正文两部分。消息头包括消息在传输时所需的控制信息消息头包括消息在传输时所需的控制信息如源进程名、目标进程名、消息长度、消息类型、如源进程名、目标进程名、消息长度、消息类型、消息编号及发送的日期和时间;消息编号及发送的日期和时间;定长消息格式和变长消息格式定长消息格式和变长消息格式3 同步方式同步方式 send()时时l 阻塞:等待接收进程回
13、答消息后,才继续进行阻塞:等待接收进程回答消息后,才继续进行l 非阻塞:发送方可继续运行非阻塞:发送方可继续运行,直到某个时刻需要接收进程直到某个时刻需要接收进程返回的回答消息后,才查询和处理。返回的回答消息后,才查询和处理。Receive()时时 阻塞:如果没有消息,接收进程会被阻塞,直到有消息;阻塞:如果没有消息,接收进程会被阻塞,直到有消息;如果有消息,则会立即获得一个消息并返回如果有消息,则会立即获得一个消息并返回 非阻塞:查询后,立即返还控制给调用进程;如果有消息非阻塞:查询后,立即返还控制给调用进程;如果有消息,就返回消息;否则表明无消息可用。这种方法允许接收,就返回消息;否则表明
14、无消息可用。这种方法允许接收进程轮询信箱进程轮询信箱通信进程的同步通信进程的同步 发送进程阻塞,接收进程阻塞发送进程阻塞,接收进程阻塞l 主要用于进程之间紧密同步主要用于进程之间紧密同步l 发送进程和接收进程之间无缓冲时。发送进程和接收进程之间无缓冲时。发送进程不阻塞,接收进程阻塞。发送进程不阻塞,接收进程阻塞。l 应用最广的进程同步方式应用最广的进程同步方式l 常用于服务进程常用于服务进程 发送进程和接收进程均不阻塞。发送进程和接收进程均不阻塞。2.5.4 2.5.4 消息缓冲队列通信机制消息缓冲队列通信机制 数据结构数据结构1).1).消息缓冲区:消息缓冲区:type message_bu
15、ffer=recordtype message_buffer=record sendersender;发送进程标识符;发送进程标识符 sizesize;消息长度消息长度 texttext;消息正文消息正文 nextnext;指向下一缓冲区指针指向下一缓冲区指针end end 2.5.4 2.5.4 消息缓冲队列通信机制消息缓冲队列通信机制2 2).PCB).PCB中有关通信的数据项:中有关通信的数据项:type processcontrol block=recordtype processcontrol block=record mqmq;消息队列队首指针消息队列队首指针 mutexmutex
16、;消息队列互斥信号量消息队列互斥信号量 smsm;消息队列资源信号量消息队列资源信号量 end end 发送原语发送原语 procedure send(receiver,a)begin getbuf(a.size,i);根据根据a.size申请缓冲区;申请缓冲区;i.sender =a.sender;i.size =a.size;i.text =a.text;i.next =0;getid(PCB set,receiver.j);获得接收进程内部标识符;获得接收进程内部标识符;wait(j.mutex);insert(j.mq,i);将消息缓冲区插入消息队列;将消息缓冲区插入消息队列;sign
17、al(j.mutex);signal(j.sm);end 消息缓冲通信消息缓冲通信接收原语接收原语procedure receive(b)Beginj:=internal name;j为接收进程内部的标识符;为接收进程内部的标识符;wait(j.sm);wait(j.mutex);remove(j.mq,i);将消息队列中第一个消息移出;将消息队列中第一个消息移出;signal(j.mutex);b.sender:=i.sender;将消息缓冲区;将消息缓冲区i中的信息复制到接收区中的信息复制到接收区b;b.size:=i.size;b.text:=i.text;end 2.6线程线程1 线程
18、的引入线程的引入 在创建、撤消和切换中,系统必须为之付出较大的时空开在创建、撤消和切换中,系统必须为之付出较大的时空开销销l 进程数目不宜过多,进程切换的频率也不宜过高。进程数目不宜过多,进程切换的频率也不宜过高。将拥有资源的单位和可独立调度将拥有资源的单位和可独立调度/分派的基本单位分离分派的基本单位分离2线程与进程的比较线程与进程的比较1)调度调度l 把线程作为调度和分派的基本单位把线程作为调度和分派的基本单位l 进程作为资源拥有的基本单位进程作为资源拥有的基本单位2)并发性并发性2线程与进程的比较线程与进程的比较3)拥有资源拥有资源4)系统开销系统开销进程进程 进程进程PCBPCB资源资
19、源线程线程控制块控制块用户栈用户栈核心栈核心栈线程线程控制块控制块用户栈用户栈核心栈核心栈线程线程控制块控制块用户栈用户栈核心栈核心栈存储空间存储空间全局数据全局数据程序代码程序代码线程线程1 1线程线程2 2线程线程控制块控制块线程线程i i线程线程n n3线程的属性线程的属性 轻型实体。轻型实体。l 线程中的实体基本上不拥有系统资源线程中的实体基本上不拥有系统资源l 只是有一点必不可少的、只是有一点必不可少的、能保证其独立运行的资源能保证其独立运行的资源 独立调度和分派的基本单位。独立调度和分派的基本单位。l 线程的切换非常迅速且开销小。线程的切换非常迅速且开销小。可并发执行。可并发执行。
展开阅读全文