版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第九讲,进程同步与通信,目标和要求:掌握信号量方法解决进程同步和互斥问题,掌握进程通信的基本实现方法。重点和难点:信号量的典型应用和通信实现。家庭作业:15,16和17。4.2.5进程同步和分割示例1 .有限缓冲区问题描述:有n个缓冲区,一组生产者进程将数据写入缓冲区,一组消费者进程从缓冲区获取数据,所有这些都写入一个缓冲区。注意:缓冲池被视为共享数据,对缓冲区的操作必须是互斥的。如果n个缓冲区已满,生产者进程必须等待。如果缓冲区完全为空,使用者进程必须等待。有限缓冲区的生产者/消费者问题(生产者和消费者共享一个产品缓冲池)。共享n个缓冲区,P1 P2 Pm C1 C2 Cn,生产者,消费者,
2、缓冲池,解决方案:设置以下信号量互斥体,初始值为1,以控制对缓冲池的互斥访问。Full,初始值为0,表示当前缓冲池中用于同步的已满缓冲区的数量。空,初始值为n,表示当前缓冲池中用于同步的空缓冲区的数量。有限缓冲生产者/消费者过程描述如下:var buffer=;满、空、静音mutex:semaphornextp,nextc:item开始full :=0;empty:=n。mute x :=1;P(空);p(互斥);将nextp添加到缓冲区;v(互斥);v(满);直到错误;结束;开始生产,开始重复生产下一个项目;消费nextc中的项目;直到错误;结束;Parend,消费者:开始重复P(满);p(
3、互斥);将缓冲区中的一个项目移至下一个,以释放缓冲区V(互斥体);v(空);如果有一个共享数据,读它的人被称为读者,写它的人被称为作者。第一类读/写问题:当读和写争夺对共享数据a的访问权时,读有更高的优先权。结果表明,除了写入器正在访问数据之外,在任何情况下都可以直接访问读取器想要访问的数据。二是读者/作者问题,具体可以描述为:1 .如果目前没有人访问数据,读写器可以随意访问。2.如果已经有一个阅读器访问数据,其他想要访问它的阅读器可以立即访问它(这表明阅读器具有更高的优先级);要访问的编写器必须等待。3.如果写入器正在访问数据,想要访问的读取器/写入器必须等待。(续)4 .当最后一个完成数据
4、访问的阅读器发现有一个编写器正在等待时,它唤醒了其中的一个。5.当编写器完成访问时,如果只有编写器在等待,唤醒一个编写器,如果同时有编写器和读取器;然后根据先进先出或其他原则唤醒一个写入器或所有读取器。读者的一般结构是:p(互斥体);readcount :=read count 1;如果readcount=1,则P(wrt);v(互斥);读取数据a p(互斥体);readcount :=read count-1;如果readcount=0,则为V(wrt);v(互斥);作家的一般结构是:P(wrt);写数据电压;3.哲学家的用餐问题描述:五个哲学家有五根筷子。哲学家循环思考和进食。吃饭的程序是
5、:先拿左边的筷子,然后拿右边的筷子,然后吃饭,然后放筷子。实现:为每根筷子设置一个锁(信号量,初始值为1)。每个哲学家都是一个过程。共享的数据结构是:变量筷子;信号量的数组0,4;这个过程被描述为(1=0,1=0,4)重复P(选择)。p(筷子(I 1)mod 5);吃V(巧克力);五(筷子(一)模5;思考直到错误;(这可能会导致死锁),4.3过程通信有两种基本的过程通信方法:1。共享内存:相互通信的进程有共享的内存区域。进程可以通过直接读写共享内存区域中的变量来交换数据,在并发编程过程中,同步和互斥被安排进入程序。操作系统提供了这样的共享存储区域和一些同步互斥工具。2.消息传递:如果进程之间没
6、有共享空间,它必须通过消息传递进行通信,并且必须通过操作系统调用来实现。消息系统调用语句:发送的一般形式:发送#向1040号进程发送一个SIGUSR1信号。过程B信号(信号1,功能);#当收到SIGUSR1信号时,将执行func()。如果SIGUSR1信号没有到达,系统会注册func函数,然后在其信号到达时调用并执行它。间接通信方法(邮箱命名方法的基本思想:系统为每个邮箱设置一个消息队列,消息的发送和接收都指向消息队列。(每个进程可以发送和接收/仅发送/仅接收消息队列)缺点:必须有一个由通信双方共享的逻辑消息队列(UNIX的PIPE、先进先出和IPC消息机制属于这种形式),并且当使用它时,消息
7、发送者同意通过写入打开邮箱。优点:很容易建立双向通信链接(只要邮箱被描述为开放阅读和写作)。逻辑通信链容量:在通信的发送方和接收方之间有一个逻辑通信链,设置的链容量是指链临时存储消息的能力。1.容量为0,这意味着链中没有缓冲区(不包括链头的发送缓冲区和链尾的接收缓冲区),这要求接收方在发送方之前发送接收请求,否则发送失败。2.有限容量意味着链中有有限的缓冲区,发送方不必等待接收方发送接收请求,也不必等待接收方准备接收缓冲区来将消息存储在通信链的缓冲区中。3.当消息从发送方缓冲到系统缓冲区时,可以再次发送新消息,而无需等待前一条消息被完全接收。2.缓冲和同步,发送方执行send()的同步问题:1
8、。将发送方的消息复制到通信链缓冲区中,也就是说,将控制权返回给发送方。2.从硬通信信道发送消息后,将控制权返回给发送方。3.在消息被接收节点的系统接收之后,控制权被返回给发送者。4.接收方收到消息后,将控制权返回给发送方。5.消息被接收方处理后,将控制权返回给发送方。为了实现3的同步。4。在某些情况下,有必要建立一个返回发送者系统的通信链。情况需要建立一个回到发送者的通信链。4.3.2过程通信示例直接通信消息系统的两个基本操作是:发送(A):A:指向包含接收者pid和消息文本的空间。接收(A):A:A指向用于接收利息消除的缓冲区,系统调用函数的返回值是消息发送者的pid。实现:系统有一个用于进程通信的缓冲池,缓冲池中的缓冲区用于存储消息和消息发送者pid和消息链指针(用pid定位进程PCB表)。发件人pid、消息正文、链接、消息缓冲区、每个进程都有一个消息队列,用于存储发送给该进程的消息,队列头存储在印刷电路板中。同时,在PCB中设置了一个互斥体(初始值为1)和一个同步通信信号量Sm(初始值为0),Sm也用于统计消息队列中的消息数。互斥体,Sm,发件人pid,文本,发件人pid,文本,收件人印刷电路板消息,Hptr,发送(A):开始新(P);从缓冲池中的缓冲区设置senderspid将a中的消息发送到p缓冲区;获取接收器pid;p(互斥);将缓冲区p挂入相应的消息队列;v(Sm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购部门流程管理制度
- 采购销售记录制度
- 采购风险岗轮岗制度汇编
- 钉钉采购审批制度
- 零星材料采购制度及流程
- 2025-2026下学年新人教八年级数学下册第一次月考检测试卷(二次根式勾股定理)考试版A4
- 第19章 二次根式(复习讲义)(解析版)-人教版(2024)八下
- 销售个人心得体会15篇
- 《在寻找“野败”的日子里》教学设计
- 食品供货协议书范文
- 船舶绿色制造技术
- 河南职业教育培训
- 仓储管理信息系统操作手册(标准版)
- 物流体系课件
- 中华财险2026秋季校园招聘备考题库及答案详解1套
- 2026年安徽财贸职业学院单招职业技能测试题库附答案详解
- 2025小红书医美行业精准获客与营销增长白皮书
- 介绍嘻哈饶舌说唱
- GB 46750-2025民用无人驾驶航空器系统运行识别规范
- 焊工考试题库及焊工证模拟考试100题含答案
- 2025江西华赣航空产业投资集团有限公司招聘工作人员16人笔试历年典型考点题库附带答案详解试卷3套
评论
0/150
提交评论