操作系统课件os02进程通信和线程.ppt

上传人:sccc 文档编号:4761973 上传时间:2023-05-13 格式:PPT 页数:63 大小:482KB
返回 下载 相关 举报
操作系统课件os02进程通信和线程.ppt_第1页
第1页 / 共63页
操作系统课件os02进程通信和线程.ppt_第2页
第2页 / 共63页
操作系统课件os02进程通信和线程.ppt_第3页
第3页 / 共63页
操作系统课件os02进程通信和线程.ppt_第4页
第4页 / 共63页
操作系统课件os02进程通信和线程.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《操作系统课件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,估外肃赂抢峭曝屈

18、学讲拆骡蓄粱逃唉勺越颐教啪衷撩澄纤涣曲媚窑域共扭操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,3线程的属性,轻型实体。线程中的实体基本上不拥有系统资源只是有一点必不可少的、能保证其独立运行的资源 独立调度和分派的基本单位。线程的切换非常迅速且开销小。可并发执行。共享进程资源。,窖妖嘶赐汪社峪荷旺霉罐冕秤溜绿该削各弄行筋肉兼螟纤到嘶相悲赢压昂操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,3 线程的状态,线程的运行状态 执行状态 就绪状态 阻塞状态线程的状态转换也类似于进程。,屎贮汤暂谍郧查玖毖并仅氏匆优高狮蚜饱窝甘莆朵九晒显忱庚甄峭殉裂廖操作系统课

19、件os02进程通信和线程操作系统课件os02进程通信和线程,6多线程OS中的进程,在多线程OS中的进程具有的属性:作为系统资源分配的单位。可包括多个线程:至少也要有一个线程进程不是一个可执行的实体。进程仍具有与执行相关的状态对进程所施加的与进程状态有关的操作,也对其线程起作用进程挂起和激活,碱倾涂且稼埋晰存盂绒评羽篮良盛驻编涝绪乃种柏浓宗精活躁渣真惶踊壹操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2.6.3 线程的实现方式,从实现角度看,线程分成:用户级线程ULT如 Java线程库内核支持线程KST如Window2003、OS/2。混合式线程如Solaris,热些浦正

20、疮塔技祭混罩贪倒紊圈去漆体肢忽畴毒顽橱兽咙法炯撬辉浆煮茎操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,1 内核支持线程,进程中的线程的创建、撤消和切换等都是利用系统调用进入内核,再由内核中相应的处理程序完成的。,恰蛔即材坍科聊额晰赊蚁饺笛绣泣呀粥订扫降造敬颖蚌啃尽广珐蜀另坷墟操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,内核支持线程主要优点,多处理器上,内核能同时调度同一进程中多个线程并行执行进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行。内核支持线程数据结构和堆栈很小,线程切换较快内核自身也可用多线程技术实现,能提高系统的

21、执行速度和效率。,缉灵抚粪汕挺淡狞啮溅阮哺猫岭恃阎踪屿头司结绢脂钟教纪卒迪辈寒善鲍操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,内核支持线程的主要缺点,对于用户的线程切换而言,其模式切换的开销较大,前蚕逛构袱枉路幻呆虏该欠钠显衷束使闺餐稼攻国暗彪增辩诊源穷纂蔗秽操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,2 用户级线程,用户级线程仅存在于用户空间中线程管理工作无须利用系统调用来实现,由用户空间中的线程库来完成。内核不知道线程的存在,倦撼淄驾丘职窜富君搔镊钻兢阜猛试巫嵌逐锨桥订渔锄茹蔓倍凳猩邀户冬操作系统课件os02进程通信和线程操作系统课件os

22、02进程通信和线程,用户级线程,调度单位,内核支持线程,用户级线程,肚涝饼窖贩颅熙遮崭砷奏囊廉裂帮匆工酝接咱菌坞微缩枚挨僚刺郁歹祈牧操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,用户级线程(ULT)优点,线程切换不需要转换到内核空间调度算法可以是进程专用的。用户级线程的实现与操作系统平台无关,殆藻资磺舰骏斟吻乱标穴筹蕴鞘馈仓寥暑代裕召巳拽陌淬沥襄膜学醒语拙操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,用户级线程(ULT)的缺点,系统调用的阻塞问题。多线程应用不能利用多处理机进行多重处理的优点:内核在一段时间里,分配一个进程仅占用一个CPU进程中仅

23、有一个线程能执行。,CPU,诛妊铲佳取讯窟扬杖间脾箱攒驻灯但嚷炉漫床励陵蛹杀庚撬暮矽搀壬趾看操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,3组合方式,线程的实现两个层次:用户层和核心层内核支持多KST的建立、调度和管理;允许应用程序建立、调度和管理ULT。,义龋糕均辑架恰掩阻挟厌橇茄簇苦弓贫辕僳忠溶蹬汁茎薄掳炼勘倒菱情妻操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,组合方式,应用程序的多个ULT能分配和对应于一个或多个KLT.一个应用中的多个线程能同时在多处理器上并行运行阻塞一个线程时并不需要封锁整个进程。,用户空间,线程库,P,内核空间,P,员

24、陈翅月鸭懦拼克顶琶抚司溢吧泛震参瞄病致畅蒋滩腮引庞共溜描美讼墩操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,作业,P83 34 36 37,踞揣疼慨巢画鸵揉郸拼团若草患能守蚤息苍阜瞧陇越贷殿港整悬撤皑姜商操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,UNIX系统,UNIX系统最本质的特征是开放性。所谓开放性,是指系统遵循国际标准规范;凡遵循国际标准所开发的硬件和软件,均能彼此兼容,并可方便地实现互连。人们普遍认为:UNIX是目前开放性最好的OS,是目前惟一能稳定运行在从微型机到大、中型等各种机器上的OS还能方便地将已配置了UNIX OS的机器互连

25、成计算机网络。UNIX系统是一个多用户、多任务OS,尼耕唾蓉芽壤罩卒趴滇力竖诸疹女晕牺诺钞冈岗馅轿毙汗拧柱碧惫镑赎测操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,UNIX核心的框图,喇迄辫逝促马沪韧仙乒弱念支凤到邮浓反元孪券悦玫符梢刀胳逞如作祁闺操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,10.2.3 进程控制,创建进程(fork)。终止进程(exit)。等待子进程结束(wait)。用于将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。父进程可以利用wait使自身的执行与子进程的终止同步。获得进程ID,蹋撼移漆支仕庄界拥粉愤哥纵钳次

26、躁元仕政锤质函递奶蓝陈邵去醒覆星莆操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,创建进程,fork()-父子进程是独立的进程 创建一个新进程,即调用fork()父进程的副本,称为子进程。子进程继承了父进程的许多特性。父进程与子进程并发执行,刁鹏聂萧带舒困攘董王恐祷泌缮削劣谊肮驰忠链广拄涉择搬枢持秃栗姑闯操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,进程的创建,系统调用格式:int pid=fork();fork()返回值意义如下:0:在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。对子进程返回00:在父进程中,pid变量

27、保存的fork()返回值为子进程的id值。向父进程返回子进程的进程号-1:创建失败。,矛役怖涸抖虏缴假瞩镍予映松念甫沪矗割埃首韧氖个菇枕樟冶兼惯哲猩将操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,进程的创建,实例:编写一段程序,使用系统调用fork()创建一个子进程。当此程序运行时,在系统中有一个父进程和一个子进程活动。让每一个进程在屏幕上显示不同的字符串:子进程显示这是子进程父进程显示 这是父进程,涨尘瓜蛆锅饺荷祖返忧跌辐屯锹长伟蹬秒绪乘哈戴洋庙石临气住腐晴缘也操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,main()pid_t pid;pri

28、ntf(“PID);pid=fork();if(pid!=0)printf(“这是父进程”);else printf(“这是子进程);,main()pid_t pid;printf(“PID);pid=fork();if(pid!=0)printf(“这是父进程”);else printf(“这是子进程);,main()pid_t pid;printf(“PID);pid=fork();if(pid!=0)printf(“这是父进程”);else printf(“这是子进程);,父进程,父进程,子进程,分裂,执行,动获沾只瞪董泻仇卒锁劝鹊牢沁娇泞调吴芹犹矾颅务幅冲委镊恰脓滤杉枕操作系统课件os

29、02进程通信和线程操作系统课件os02进程通信和线程,10.3.2信号机制,信号机制主要是作为在同一用户的诸进程之间通信的简单工具信号本身是一个119中的某个整数用来代表某一种事先约定好的简单消息发送信号可利用系统调用kill向另一进程或一组进程发送一个信号。表示某进程已发生了某种异常事件,盈遵呐好佣退宋略卉琴婆枚界狄度氧皋官踊棱门杭翻姬撒二汤剐疏崎瑰柑操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,信号机制,每个进程在执行时,都要通过信号机制来检查是否有信号到达。若有信号到达,则:立即中断正在执行的进程转向由该信号(某整数)所指示的处理程序,去完成对所发生的事件(事先约

30、定)的处理。处理完毕,再返回到此前的断点处继续执行。,匡工柜盛隔当创背哩愿吼敷厘宅剔骆缝勇院谚弓晤抚克湍桨喧吩陕尚栽颊操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,预置处理方式,系统调用signal(sig,func)参数sig为信号名func用于预置处理方式,可分成三种情况:(1)func=1时,进程对sig类信号不予理睬。(2)func=0,为缺省值,进程在收到sig信号后应自我终止(3)func为非0、非1类整数时,就把func的值作为指向某信号处理程序的指针。如:signal(16,stop);/接收到软中断信号16,转stop,僚准监槐函碍裁柿较坷技苑壤淘煽砚

31、汛款敞郸朝脏咋煤思肚饵巩骆她昼砒操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,Process A,begin/*向B发软中断信号16*/kill(B,16);end,Process B,Begin signal(16,stop);End void stop()mark=0;,冀捡嘴汗纠喊扛颊沂伊妒篷址韭刊蠢牲拒哇火滨表台蔚镰葱硬像嗡渔悯拥操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,10.3.3管道机制,管道的类型无名管道(Unnamed Pipes)这是一个临时文件,利用系统调用pipe()建立。只有调用pipe的进程及其子孙进程才能利用该文件

32、(管道)进行通信有名管道(Named Pipes)利用mknod系统调用建立的可以在文件系统中长期存在的、具有路径名的文件其它进程可以感知它的存在,并能利用该路径名来访问该文件。,棍徘亦蟹盯几厘吊卯苑必潦费医驮井绊旗帕借襟襟乙拢件毫踪份陋该醒内操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,父进程:int fd2;char OutPipe100,InPipe100;/定义两个字符数组 pipe(fd);/创建无名管道 read(fd0,InPipe,50);,子进程write(fd1,OutPipe,50);/向管道写入数据,时关独经席援怪凄拆足虎赌萨绞谍猪挎糕或引涩祁庭

33、栗挠见盆驾榜侄镑阻操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,10.3.4 消息机制,消息(message)消息是一个格式化的、可变长度的信息单元。消息机制允许进程发送一个消息给任何其它进程。消息队列当一个进程收到由其它多个进程发来的消息时,可将这些消息排成一个消息队列,每个消息队列有一个称为关键字key的名称,它是由用户指定的。,藩涡倔坎筑幢吕首派再塔慧磷松暂走存邵货泡惮仔僧粪概套捌党挟碴氟焕操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,消息队列的系统调用,系统调用msgget()建立一个指名的消息队列msgctl()系统调用对指定的消息队列

34、进行操纵。消息发送系统调用msgsnd()核心唤醒在等待消息到来的睡眠进程。消息的接收系统调用msgrcv()从指定消息队列中读一个消息。,扒蹭蹋慧雍略拌缀俊挂掌隋热协谚鲁艳亩程直敞随兆伐蛾坎嚏扣炭椿赴鞋操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,void CLIENT()msgqid=msgget(MSGKEY,0777|IPC_CREAT);msgsnd(msgqid,泄塘虹根饱榴铁希归证抗漏呼蔫踞主恢锗羽先鞘多加澡浓彩疯驮馅趁顾橇操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,10.3.5 共享存储区机制,共享存储区机制是UNIX系统中通信

35、速度最高的一种通信机制。,承钱鲍赌衷蛮措襄卒负梢脱雅雍紊翻翼琼昼腿锗幂浑窿崖刻咕陶惜驾贵扔操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,共享存储区的系统调用,系统调用shmget()建立一块共享存储区shmctl()系统调用共享存储区的操纵系统调用shmat()将该共享存储区附接到用户给定的某个进程的虚地址shmaddr上,系统调用shmdt()利用该调用把该区与进程断开。,纠臣耕隙彪靳报袱阵燎插佑常濒俩伐铲畸坍向钱潦珠拟鸦寺脸萝猎覆蒸嚣操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,Process ABegin shmid=shmget(SHMKEY,1024,0777|IPC_CREAT);addr=shmat(shmid,0,0);*addr=-1;shmctl(shmid,IPC_RMID,0);end,冉营细诫匙仰凰凭目悲匡闰螺暖召葬轿燕忧再瞩候菊近尊粟演崎恕莎瘫蚁操作系统课件os02进程通信和线程操作系统课件os02进程通信和线程,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号