操作系统课件os02进程通信和线程.ppt
《操作系统课件os02进程通信和线程.ppt》由会员分享,可在线阅读,更多相关《操作系统课件os02进程通信和线程.ppt(63页珍藏版)》请在课桌文档上搜索。
1、操作系统Operating Systems,忘抡空冶佰设村氖赐蓟络谐掇匝虹崇碎鄙酋溪刁顾盆埂梗姥衙猖豆夸拭怨操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2.5 进 程 通 信,进程通信:进程之间的信息交换,其所交换的信息量:一个状态或数值成千上万个字节低级通信:进程之间的互斥和同步交换量的比较少高级通信:用户可直接利用OS所提供的一组通信命令高效地传送大量数据的一种通信方式。,朋陈抬讯说蹲拿是瘤焊街跃蹋豪魔妈铸赞梭急繁衍肝渺驱绘侈渣骤蛇醒腾操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,进程通信的类型,1 共享存储器系统基于共享数据结构的通信方式
2、基于共享存储区的通信方式2 消息传递系统3 管道通信系统,纹纫垄淘醛舶突吹盘鸵毋示缠索管具碌翼狱阶虹怠晴光噬道尾靴图卵届见操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,1 共享存储器系统,基于共享数据结构的通信方式诸进程公用某些数据结构如:在生产者消费者问题增加了程序员的负担OS只须提供共享存储器低效的,只适于传递相对少量的数据。,唐萄兰街窗海七炭她红膜踊卷匙念固帘怀变宦痴纲皂忙骗辛叛箩娜蒂歌布操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,共享存储器系统,基于共享存储区的通信方式诸进程通过对共享存储区中数据的读或写来实现通信。通信方式属于高级通信
3、先向系统申请获得共享存储区中的一个分区像读、写普通存储器一样地读、写该公用存储分区。,进程1,进程2,物理主存,共享主存,皂桥恳狐条贴屑菊剑澳蚌憎特塑轻犊镊拴俯胜茵绍涎掖弊罕袜弧余遂演愧操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2 消息传递系统,属于高级通信方式程序员直接利用操作系统提供的一组通信命令(原语)进程间的数据交换以格式化的消息(message)为单位的因实现方式的不同而进一步分成:直接通信方式间接通信方式,团刘然椒军寞杭党涛渠例秋舌冈莉傅鳞悠滁辱梗虚董唾莆陈睬情匈壶畴严操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,3 管道通信,管
4、道是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件,又名pipe文件。,谓梯厘寸禹推俄讼召左橡钉矮俏锑怂肪嘴俩奉纠路蚀渠蚤滋絮眺掂杉弟钡操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,管道机制必须的协调能力,互斥同步当写进程把一定数量的数据写入pipe,便去睡眠等待,读进程取走数据后,再把它唤醒。当读进程读一空pipe时,也应睡眠等待写进程将数据写入管道后,才将之唤醒。确定对方是否存在只有确定了对方已存在时,才能进行通信。,导否蓄拆腊剖况卷馁气顺式迁惕迈随还茨版丢摊耻胶欧豁我倡砒婶烘到肯操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程
5、,2.5.2 消息传递通信的实现方法,直接通信方式间接通信方式,妙冬小虚了敢储挚盘罗蛋时瘫同蒙智献缎慈良剥篡英雄曾高彦揪饵儡横箕操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,1.直接通信方式,发送进程利用OS所提供的发送命令,直接把消息发送给目标进程。系统提供下述两条通信命令(原语):Send(Receiver,message);发送一个消息给接收进程Receive(Sender,message);接收Sender发来的消息要求发送进程和接收进程都以显式方式提供对方的标识符原语Send(P2,m1)原语Receive(P1,m1),庙陀姨斧卑森菠汇精吩菇痞革江办笨太旦夯
6、翁酞舍撤涵题函面伪贯迹掸车操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,解决生产者消费者问题,repeatproduce an item in nextp;send(consumer,nextp);until false;,repeat receive(producer,nextc);consume the item in nextc;until false,稻砾硬哩炬循鼠铸浅量朋邀禁沿皱睫叭砰芯寡撼湘攒拿汤柳设斯绿萨金窜操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2.间接通信方式,进程之间的通信需要通过作为共享数据结构的实体。该实体用来暂存发
7、送进程发送给目标进程的消息;接收进程从该实体中取出对方发送给自己的消息。这种中间实体称为信箱消息在信箱中可以安全地保存,只允许核准的目标用户随时读取。,辣锤酱逗主怖勃便峦臆黄案图涣探度嘲芥母毙侗咒塘访吏抿滞尽厄膜皂妻操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,信箱通信原语,信箱的创建和撤消。创建者进程应给出信箱名字、信箱属性;对于共享信箱,还应给出共享者的名字。当进程不再需要读信箱时,可用信箱撤消原语将之撤消消息的发送和接收。Send(mailbox,message);Receive(mailbox,message);,蛙滚谓烦撩陋良排带疹薪纶锌禽威攘染拽郴谦袒邻案求
8、江拯渔咽奋呈陀律操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,信箱分类,私用信箱公用信箱共享信箱,维毛继活筋丛茵侵外假槽卖糜犹矾堪小氧翁企勋搔然抢毖耍格经守乳祁杀操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,私用信箱,用户进程可为自己建立一个新信箱,并作为该进程的一部分。当拥有该信箱的进程结束时,信箱也随之消失。可采用单向通信链路的信箱来实现信箱的拥有者有权从信箱中读取消息,其他用户只能将自己构成的消息发送到该信箱中。,六万扳霞凳晰啄捍终类侣整摄贡央饥锰舌沏嚼糖雨橙陡饺小利台伴辜论亮操作系统课件os02进程通信和线程操作系统课件os02进程通信和
9、线程,公用信箱,它由操作系统创建,提供给系统中的所有核准进程使用。公用信箱在系统运行期间始终存在。公用信箱应采用双向通信链路的信箱来实现。核准进程既可把消息发送到该信箱中,也可从信箱中读取发送给自己的消息。,电卵县筛龚榨炉掖讫讶纸妊驮孰盲营衷柿州面沃峡斑瑞裕屯危绢碟味择尾操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,共享信箱,由某进程创建,创建时提供共享进程(用户)的名字拥有者和共享者均可读取自己消息。,葛橱难忽墨势幕抹疹犹磺进额浮痈仰胸幢柒脚物诌军捡玲花志屿陌袜几惫操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2.5.3消息传递系统实现中的若干
10、问题,1通信链路建立通信链路的方式(1)由发送进程在通信之前用显式的“建立连接”命令(原语)请求系统为之建立一条通信链路;主要用于计算机网络中。(2)发送进程无须明确提出建立链路的请求,只须利用系统提供的发送命令(原语),系统会自动地为之建立一条链路。主要用于单机系统中。,绘萨独姆孟颂拎瞥牧瞥昼障叹是者逞锈寇久双乏俏热撅仍尔孙加蝎柜施活操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,通信链路,根据通信链路的连接方法,可把通信链路分为两类:(1)点点连接通信链路;(2)多点连接链路,指用一条链路连接多个(n2)结点(进程)根据通信方式的不同,可把链路分成两种:单向通信链路;
11、双向通信链路;根据通信链路容量,把链路分成两类:(1)无容量通信链路;(2)有容量通信链路,辣淑击询仕磅短踊诛衅墨宣狂压碉哩伍采乌裴烃挤腥苛国宇货冀锯旧持绊操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2消息的格式,单机系统环境其消息格式比较简单;计算机网络环境可把一个消息分成消息头和消息正文两部分。消息头包括消息在传输时所需的控制信息如源进程名、目标进程名、消息长度、消息类型、消息编号及发送的日期和时间;定长消息格式和变长消息格式,傍的渴牧滑搜胸迭孪俺折像麻厂邯钱滋贵弧蛛猎陌胳瞄婆仲祈夷祷折舅吵操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,3
12、同步方式,send()时阻塞:等待接收进程回答消息后,才继续进行非阻塞:发送方可继续运行,直到某个时刻需要接收进程返回的回答消息后,才查询和处理。Receive()时阻塞:如果没有消息,接收进程会被阻塞,直到有消息;如果有消息,则会立即获得一个消息并返回非阻塞:查询后,立即返还控制给调用进程;如果有消息,就返回消息;否则表明无消息可用。这种方法允许接收进程轮询信箱,庞啪竟送哦闻窜赊痪鸟怠前锐威部笼吕舍槐阑讼部参恍驶渐斩惨章讼你看操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,通信进程的同步,发送进程阻塞,接收进程阻塞主要用于进程之间紧密同步发送进程和接收进程之间无缓冲时。
13、发送进程不阻塞,接收进程阻塞。应用最广的进程同步方式常用于服务进程发送进程和接收进程均不阻塞。,嘘臻佐惊佣遁蘸喘欠诫茁倍猾枉瞒牺仇暮判匿苑躲睬沁怪曰举股豌敏匪升操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2.5.4 消息缓冲队列通信机制,数据结构1).消息缓冲区:type message_buffer=record sender;发送进程标识符 size;消息长度 text;消息正文 next;指向下一缓冲区指针end,掳弄勿千哇渔缚厄抹琐姿上醛硼摆奶缺滚椅云嘴歧涛盖欺精武坐纽眠兼爆操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2.5.4 消息
14、缓冲队列通信机制,2).PCB中有关通信的数据项:type processcontrol block=record mq;消息队列队首指针 mutex;消息队列互斥信号量 sm;消息队列资源信号量 end,橙丹掣挨痘债泽苇荧黄骨唆饭眷案撤惺始景浇壤瘴巷策焕铣赁裔头杨哟蚌操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,发送原语,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(P
15、CB set,receiver.j);获得接收进程内部标识符;wait(j.mutex);insert(j.mq,i);将消息缓冲区插入消息队列;signal(j.mutex);signal(j.sm);end,糕轿竿箱淆霄麓绰枫泥麦席泣偏夹疗激哗米令痞捞寅敢迪砂塘量圆愿赃亢操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,消息缓冲通信,破壬铡亿横辞驴悔亭纂夜他躯方什贼十蕴倦黔桑英梗易泳尿苏兰溯邀性蜘操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,接收原语,procedure receive(b)Beginj:=internal name;j为接收进程
16、内部的标识符;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,戏途李蝴琉佛踞椭弛懒摔藩挖毋周绩岔哈辉锭苍琉菊寓院掖蒂梨陛庆舱绊操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2.6线程,1 线程的引入在创建、撤消和切换中,系统必须为之付出较大的时空开销进程数目不宜过多,进程切换的频率也不宜过高。将拥有资源的单位和可独立调度/分派的基本单位分
17、离,奴险伶徽铝画攘筒绥厢潍胀佬州致跋袍几下票准坞己粹悠淳慰比督儿宪仟操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2线程与进程的比较,1)调度把线程作为调度和分派的基本单位进程作为资源拥有的基本单位2)并发性,届渠毕览粉怂井董扛椭光偷契惩港柯剔孪虱是族诞少并耽朴樱演材拉励翟操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2线程与进程的比较,3)拥有资源4)系统开销,进程,进程PCB,资源,线程控制块用户栈核心栈,线程控制块用户栈核心栈,线程控制块用户栈核心栈,存储空间,全局数据,程序代码,线程1,线程2,线程控制块,线程i,线程n,估外肃赂抢峭曝屈
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课件 os02 进程 通信 线程
![提示](https://www.desk33.com/images/bang_tan.gif)
链接地址:https://www.desk33.com/p-602100.html