- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章进程同核步与通信
* 直接通信方式:发送方直接将消息发送给接收方,接收方可以接收来自任意发送方的消息,并在读出消息的同时得知发送者是谁。 间接通信方式:消息不是直接从发送方发送到接收方,而是发送到临时保存这些消息的队列,这个队列通常也被称为信箱。因此,两个通信进程,一个给一个合适的信箱发消息,一个从信箱中获得这些信息。 * 间接通信方式在消息的使用上有很大的灵活性。发送方和接受方之间的关系可以是一对一、多对一、一对多和多对多、 进程和信箱的关联可以是静态的也可以是动态的。 * 信箱的所有权问题: 对于端口,它通常归接收进程所有,并有接收进程创建。因此当接收进程被撤销时,它的端口也随之撤销。 对于通用的信箱,操作系统可以提供一个创建信箱的服务,这样信箱可以看做有创建它的进程所有,在这种情况下它们也同该进程一起终止; 或者把信箱看做由操作系统所有,此时要撤销信箱需要一个显示命令。 * 管道通信 所谓管道,是指用于连接一个读进程和一个写进程,以实现进程之间通信的一种共享文件,又称pipe文件。 向管道提供输入的是写进程;而负责接收管道数据的接收进程称为读进程。 由于发送和接收进程是利用管道实现的通信的,所以被称为管道进程。 管道通信始创于UNIX 系统,因此他能传输大量的数据,而且有效,目前许多操作系统提供管道通信,如windows2000 linux OS/2 * 管道通信机制必须提高以下3个方面的协调能力 互斥。当一个进程正在对管道进行读或者写,另一个进程必须等待。 同步。管道的大小是有限制的。所以当管道满的时候写进程必须等待,直到读进程把它唤醒为止。 对方是否存在。只有确认对方存在时,方能进行通信。 * 进程通信中的几个问题 ●通信链路的建立方式 ●通信方向 ●通信链路连接方式 ●通信链路的容量 ●数据格式 ●同步方式 * 通信链路的建立方式 为了使发送进程和接受进程之间能够进行通讯,必须在它们之间建立一条通信链路。 有两种建立通信链路方式: 显示建立链路 隐式建立链路 一般的说,网路通信常常用显示的方式建立链路,本机进程通信采用隐式方式建立通信链路。 * 通信方向 根据进程通信的方向,又可以分为单向通信方式和双向通信方式。 单向通信方式:指只允许发送进程向接收进程发送消息,反之不行。 双向通信方式允许一个进程向另外一个进程发送消息,也可以反过来有另一个进程向发过消息的进程回送消息。 双向通信方式由于进程之间可以对发过的消息进行回送确认,因此比较可靠■ * 通信链路连接方式 通信链路的链接又可以吧通信链路分为点对点连接和广播方式。 点对点:指用一条链路将两个进程进行连接,通信的完成只与这两个进程有关。 广播:指一条链路上连接了多个进程,其中的一个进程向其他多个进程同时发送消息。 * 通信链路的容量 是指通信链路上是否有用于暂存数据的缓冲区。 无容量通信链路上没有缓冲区,不能存任何信息。 有容量通信链路指在链路中设置了缓冲区,因而可以暂存消息,缓冲区的数目越大,通信链路的容量也越大。 * 数据格式 字节流:发送方发送的数据没有一定的格式,接收方不需要保留各次发送间的分界。 报文:比较复杂,分为报头和正文。 * 同步方式 根据收发进程在进行收发操作时是否等待,同步方式又分为两种: 阻塞方式:操作方要等待操作结束。 非阻塞方式:操作方在提交后立即返回。 具体说,一个进程向另一个进程发送消息后,发送进程可能有两种选择:一是自己阻塞,并等到接收方接收到消息后才被唤醒;另一种选择是继续执行,对于接收进程也类似。 * 消息缓冲队列-示意图 * 消息缓冲队列-数据结构定义 //消息缓冲区定义 struct message_buffer { char sender[30]; /*发送进程标识符*/ int size; /*消息长度*/ char text[200]; /*消息正文*/ struct message_buffer *next; //指向下一个消息缓冲区的指针 } //PCB中有关通信的数据项 struct process_control { struct message_buffer *mq; /*消息队列队首指针*/ semaphore mutex=1; /*消息队列互斥信号量,初值为1*/ semaphore sm=0; /*消息队列同步信号量,记录消息的个数.初值为0*/ } * //发送原语 char receiver[30]; struct message_buffer a; void send
您可能关注的文档
最近下载
- 【同步教学】北师大版数学五年级下册第三单元《分数乘法》单元测试卷2.doc VIP
- 教学大纲_特种设备安全技术.docx VIP
- 个人简历——【标准模板】.doc VIP
- 结构加固方法介绍和选择.ppt VIP
- 【嘉世咨询-2025研报】2025中国两轮电动车行业现状报告.pdf
- 宜宾市叙州区总工会社会化工会工作者招聘笔试真题2022.docx VIP
- 大桥河幸福河湖建设规划方案研究.docx VIP
- 《机械与特种设备安全》教学大纲.pdf VIP
- 2025广东广州市工业和信息化局直属事业单位引进急需人才20人备考试题及答案解析.docx VIP
- 2023年宜宾市叙州区总工会社会化工会工作者招聘考试真题.docx VIP
文档评论(0)