操作系统课件os02进程通信和线程.ppt
《操作系统课件os02进程通信和线程.ppt》由会员分享,可在线阅读,更多相关《操作系统课件os02进程通信和线程.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统操作系统Operating SystemsWINDOWSWINDOWSUNIXUNIXLINUXLINUXOS2OS2VxWorksVxWorksMacOSMacOS2.5进进程程通通信信进程通信:进程之间的信息交换,其所交换的信息量:进程通信:进程之间的信息交换,其所交换的信息量:一个状态或数值一个状态或数值成千上万个字节成千上万个字节低级通信:低级通信:进程之间的互斥和同步进程之间的互斥和同步交换量的比较少交换量的比较少高级通信:高级通信:用户可直接利用用户可直接利用OS所提供的一组所提供的一组通信命令通信命令高效地传送高效地传送大大量数据量数据的一种通信方式。的一种通信方式。进程
2、通信的类型进程通信的类型1共享存储器系统共享存储器系统基于共享数据结构的通信方式基于共享数据结构的通信方式基于共享存储区的通信方式基于共享存储区的通信方式2消息传递系统消息传递系统3管道通信系统管道通信系统1共享存储器系统共享存储器系统基于共享数据结构的通信方式基于共享数据结构的通信方式诸进程公用某些数据结构诸进程公用某些数据结构如:在生产者如:在生产者消费者问题消费者问题增加了程序员的负担增加了程序员的负担OS只须提供共享存储器只须提供共享存储器低效的,只适于传递相对少量的数据。低效的,只适于传递相对少量的数据。共享存储器系统共享存储器系统基于共享存储区的通信方式基于共享存储区的通信方式诸进
3、程通过对共享存储区中数据的读或写来实现通信。诸进程通过对共享存储区中数据的读或写来实现通信。通信方式属于高级通信通信方式属于高级通信先向系统申请获得共享存储区中的一个分区先向系统申请获得共享存储区中的一个分区像读、写普通存储器一样地读、写该公用存储分区。像读、写普通存储器一样地读、写该公用存储分区。进程进程1 1进程进程2 2 物理主存物理主存共享主存共享主存2消息传递系统消息传递系统属于高级通信方式属于高级通信方式程序员直接利用操作系统提供的一组程序员直接利用操作系统提供的一组通信命令通信命令(原语原语)进程间的数据交换进程间的数据交换以格式化的消息以格式化的消息(message)为单位的为
4、单位的因实现方式的不同而进一步分成:因实现方式的不同而进一步分成:直接通信方式直接通信方式间接通信方式间接通信方式3管道通信管道通信管道管道是指用于连接一个读进程和一个写进程以实现它们之是指用于连接一个读进程和一个写进程以实现它们之间通信的一个间通信的一个共享文件共享文件,又名,又名pipe文件。文件。写进程写进程共享文件共享文件读进程读进程管道机制必须的协调能力管道机制必须的协调能力1.互斥互斥2.同步同步当写进程把一定数量的数据写入当写进程把一定数量的数据写入pipe,便去睡眠等待,便去睡眠等待,读进程取走数据后,再把它唤醒。读进程取走数据后,再把它唤醒。当读进程读一空当读进程读一空pip
5、e时,也应睡眠等待时,也应睡眠等待写进程将数据写入管道后,才将之唤醒。写进程将数据写入管道后,才将之唤醒。3.确定对方是否存在确定对方是否存在只有确定了对方已存在时,才能进行通信。只有确定了对方已存在时,才能进行通信。2.5.2消息传递通信的实现方法消息传递通信的实现方法直接通信方式直接通信方式间接通信方式间接通信方式1.直接通信方式直接通信方式发发送送进进程程利利用用OS所所提提供供的的发发送送命命令令,直直接接把把消消息息发发送送给给目目标进程。标进程。系统提供下述两条通信命令系统提供下述两条通信命令(原语原语):Send(Receiver,message);发送一个消息给接收进程;发送一
6、个消息给接收进程Receive(Sender,message);接收;接收Sender发来的消息发来的消息要求发送进程和接收进程都以显式方式提供对方的标识符要求发送进程和接收进程都以显式方式提供对方的标识符原语原语Send(P2,m1)原语原语Receive(P1,m1)解决生产者解决生产者消费者问题消费者问题repeatproduceaniteminnextp;send(consumer,nextp);untilfalse;repeatreceive(producer,nextc);consumetheiteminnextc;untilfalse2.间接通信方式间接通信方式进程之间的通信需要
7、通过作为进程之间的通信需要通过作为共享数据结构共享数据结构的实体。的实体。该实体用来暂存发送进程发送给目标进程的消息;该实体用来暂存发送进程发送给目标进程的消息;接收进程从该实体中取出对方发送给自己的消息。接收进程从该实体中取出对方发送给自己的消息。这种中间实体称为信箱这种中间实体称为信箱消息在信箱中可以安全地保存,消息在信箱中可以安全地保存,只允许核准的目标用户随时读取。只允许核准的目标用户随时读取。信箱通信原语信箱通信原语1.信箱的创建和撤消。信箱的创建和撤消。创建者进程应给出信箱名字、信箱属性;创建者进程应给出信箱名字、信箱属性;对于共享信箱,还应给出共享者的名字。对于共享信箱,还应给出
8、共享者的名字。当进程不再需要读信箱时,可用信箱撤消原语将之撤当进程不再需要读信箱时,可用信箱撤消原语将之撤消消2.消息的发送和接收。消息的发送和接收。Send(mailbox,message);Receive(mailbox,message);信箱分类信箱分类私用信箱私用信箱公用信箱公用信箱共享信箱共享信箱私用信箱私用信箱用用户户进进程程可可为为自自己己建建立立一一个个新新信信箱箱,并并作作为为该该进进程程的的一一部部分。分。当拥有该信箱的进程结束时,信箱也随之消失。当拥有该信箱的进程结束时,信箱也随之消失。可采用可采用单向通信链路单向通信链路的信箱来实现的信箱来实现信箱的拥有者有权从信箱中读
9、取消息,信箱的拥有者有权从信箱中读取消息,其他用户只能将自己构成的消息发送到该信箱中。其他用户只能将自己构成的消息发送到该信箱中。公用信箱公用信箱它由它由操作系统操作系统创建,提供给系统中的创建,提供给系统中的所有核准进程所有核准进程使用。使用。公用信箱在系统运行期间公用信箱在系统运行期间始终存在始终存在。公用信箱应采用公用信箱应采用双向通信链路双向通信链路的信箱来实现。的信箱来实现。核准进程既可把消息发送到该信箱中,核准进程既可把消息发送到该信箱中,也可从信箱中读取发送给自己的消息。也可从信箱中读取发送给自己的消息。共享信箱共享信箱由由某进程某进程创建,创建时提供共享进程(用户)的名字创建,
10、创建时提供共享进程(用户)的名字拥有者和共享者均可读取自己消息。拥有者和共享者均可读取自己消息。消息传递系统实现中的若干问题消息传递系统实现中的若干问题1通信链路通信链路建立通信链路的方式建立通信链路的方式(1)由发送进程在通信之前用显式的由发送进程在通信之前用显式的“建立连接建立连接”命令命令(原语原语)请求系统为之建立一条通信链路;请求系统为之建立一条通信链路;主要用于计算机网络中。主要用于计算机网络中。(2)发送进程无须明确提出建立链路的请求,只须利用系统提发送进程无须明确提出建立链路的请求,只须利用系统提供的供的发送命令发送命令(原语原语),系统会自动地为之建立一条链路。,系统会自动地
11、为之建立一条链路。主要用于单机系统中。主要用于单机系统中。通信链路通信链路根据通信链路的连接方法,可把通信链路分为两类:根据通信链路的连接方法,可把通信链路分为两类:(1)点点点连接通信链路;点连接通信链路;(2)多点连接链路,指用一条链路连接多个多点连接链路,指用一条链路连接多个(n2)结点结点(进程进程)根据通信方式的不同,可把链路分成两种:根据通信方式的不同,可把链路分成两种:(1)单向通信链路;单向通信链路;(2)双向通信链路;双向通信链路;根据通信链路容量,把链路分成两类:根据通信链路容量,把链路分成两类:(1)无容量通信链路;)无容量通信链路;(2)有容量通信链路)有容量通信链路2
12、消息的格式消息的格式单机系统环境单机系统环境其消息格式比较简单;其消息格式比较简单;计算机网络环境计算机网络环境可把一个消息分成消息头和消息正文两部分。可把一个消息分成消息头和消息正文两部分。消息头包括消息在传输时所需的控制信息消息头包括消息在传输时所需的控制信息如源进程名、目标进程名、消息长度、消息类型、如源进程名、目标进程名、消息长度、消息类型、消息编号及发送的日期和时间;消息编号及发送的日期和时间;定长消息格式和变长消息格式定长消息格式和变长消息格式3同步方式同步方式send()时时阻塞:等待接收进程回答消息后,才继续进行阻塞:等待接收进程回答消息后,才继续进行非阻塞:发送方可继续运行非
13、阻塞:发送方可继续运行,直到某个时刻需要接收进程返直到某个时刻需要接收进程返回的回答消息后,才查询和处理。回的回答消息后,才查询和处理。Receive()时时阻塞:如果没有消息,接收进程会被阻塞,直到有消息;阻塞:如果没有消息,接收进程会被阻塞,直到有消息;如果有消息,则会立即获得一个消息并返回如果有消息,则会立即获得一个消息并返回非阻塞:查询后,立即返还控制给调用进程;如果有消息,非阻塞:查询后,立即返还控制给调用进程;如果有消息,就返回消息;否则表明无消息可用。这种方法允许接收进就返回消息;否则表明无消息可用。这种方法允许接收进程轮询信箱程轮询信箱通信进程的同步通信进程的同步发送进程阻塞,
14、接收进程阻塞发送进程阻塞,接收进程阻塞主要用于进程之间紧密同步主要用于进程之间紧密同步发送进程和接收进程之间无缓冲时。发送进程和接收进程之间无缓冲时。发送进程不阻塞,接收进程阻塞。发送进程不阻塞,接收进程阻塞。应用最广的进程同步方式应用最广的进程同步方式常用于服务进程常用于服务进程发送进程和接收进程均不阻塞。发送进程和接收进程均不阻塞。2.5.4 2.5.4 消息缓冲队列通信机制消息缓冲队列通信机制数据结构数据结构1).1).消息缓冲区:消息缓冲区:type message_buffer=recordtype message_buffer=record sendersender;发送进程标识符
15、;发送进程标识符 sizesize;消息长度消息长度 texttext;消息正文消息正文 nextnext;指向下一缓冲区指针指向下一缓冲区指针end end 2.5.4 2.5.4 消息缓冲队列通信机制消息缓冲队列通信机制2 2).PCB).PCB中有关通信的数据项:中有关通信的数据项:type processcontrol block=recordtype processcontrol block=record mqmq;消息队列队首指针消息队列队首指针 mutexmutex;消息队列互斥信号量消息队列互斥信号量 smsm;消息队列资源信号量消息队列资源信号量 end end 发送原语发送
16、原语proceduresend(receiver,a)begingetbuf(a.size,i);根据根据a.size申请缓冲区;申请缓冲区;i.sender=a.sender;i.size=a.size;i.text=a.text;i.next=0;getid(PCBset,receiver.j);获得接收进程内部标识符;获得接收进程内部标识符;wait(j.mutex);insert(j.mq,i);将消息缓冲区插入消息队列;将消息缓冲区插入消息队列;signal(j.mutex);signal(j.sm);end消息缓冲通信消息缓冲通信接收原语接收原语procedure receive(
17、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、,进程切换的频率也不宜过高。进程数目不宜过多,进程切换的频率也不宜过高。将拥有资源的单位和可独立调度将拥有资源的单位和可独立调度/分派的基本单位分离分派的基本单位分离2线程与进程的比较线程与进程的比较1)调度调度把线程作为调度和分派的基本单位把线程作为调度和分派的基本单位进程作为资源拥有的基本单位进程作为资源拥有的基本单位2)并发性并发性2线程与进程的比较线程与进程的比较3)拥有资源拥有资源4)系统开销系统开销进程进程 进程进程PCBPCB资源资源线程线程控制块控制块用户栈用户栈核心栈核心栈线程线程控制块控制块用户栈用户栈核心栈核心栈线程线程控制块控制块用户栈用户栈核心栈核心栈存储空间存储空间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课件 os02 进程 通信 线程
限制150内