[发明专利]一种利用共享内存进行进程间字节流通信的结构及方法有效
申请号: | 201911201099.0 | 申请日: | 2019-11-29 |
公开(公告)号: | CN110990169B | 公开(公告)日: | 2022-11-01 |
发明(设计)人: | 何雪煜 | 申请(专利权)人: | 深圳市风云实业有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京正华智诚专利代理事务所(普通合伙) 11870 | 代理人: | 杨浩林 |
地址: | 518057 广东省深圳市福田区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 利用 共享 内存 进行 进程 字节 流通 结构 方法 | ||
本发明公开了一种单生产者和单消费者之间利用共享内存进行进程间字节流通信的结构及方法,该结构包括单生产者、单消费者及连接生产者与消费者以实现字节流通信的共享内存,共享内存包括用于读写字节流数据的环形队列和组成共享内存状态机的消费者重置标志、生产者重置标志、生产者重置完成标志。本发明基于操作系统提供的共享内存,设计了一种单生产者和单消费者之间利用共享内存进行进程间字节流通信的机制,通过在共享内存设置三个标志位组成共享内存状态机,利用共享内存状态机的跳转来保证通信双方的数据同步,进而实现字节流的通信,提高了不同进程之间的读写操作效率。
技术领域
本发明属于计算机操作系统数据通信技术领域,具体涉及一种基于计算机操作系统所提供的进程间的共享内存进行字节流通信的结构及方法。
背景技术
通常的计算机操作系统提供了管道,或者TCP的协议栈,方便不同的进程之间以字节流的方式进行连续不断的读和写操作。
在简单的计算机环境中,操作系统只提供了共享内存以供不同的进程之间进行数据交互。但是共享内存并没有提供互斥机制,也不能以连续不断的、以字节流的方式进行读和写。
对于所有进程来说,访问该共享内存和自己独享的普通内存的访问方法是一样的,在不同的进程同时访问共享内存的情况下,进程之间没有互斥机制,也不能连续不断的以字节流方式进行通信。
在这种情况下,进程之间如果要进行长时间的字节流交互,需要基于共享内存设计一套字节流通信机制。
现有的共享内存的访问队列存在的以下缺点:
1)现有的共享内存队列如果没有系统提供的互斥功能,就不能完成通信双方的同步;
2)由于共享内存本身不能提供通信双方的同步,通信双方就不能重新界定数据;
3)由于通信双方不能重新界定数据,就不能提供基于字节流的访问。对于基于字节的流通信来说,字节流要变成有意义的数据,必须界定一个开始,然后才能按照约定的方式把字节流解析成有意义的数据,比如2字节整数、四字节正数等等。
发明内容
针对现有技术中的上述不足,本发明提供了一种单生产者和单消费者之间利用共享内存进行进程间字节流通信的结构及方法。
为了达到上述发明目的,本发明采用的技术方案为:
一种利用共享内存进行进程间字节流通信的结构,包括单生产者、单消费者及连接生产者与消费者以实现字节流通信的共享内存;
所述共享内存包括用于读写字节流数据的环形队列和组成共享内存状态机的消费者重置标志、生产者重置标志、生产者重置完成标志;所述消费者重置标志用于当消费者需要重新界定字节流边界时设置该标志状态,请求生产者重置共享内存;所述生产者重置标志用于当生产者需要重新界定字节流边界时设置该标志状态,通知消费者字节流边界需要重新界定;所述生产者重置完成标志用于当生产者重置共享内存后设置该标志状态,通知消费者共享内存已完成重置;
所述生产者用于当共享内存状态机处于可通信状态时将需要进行通信的字节流数据写入共享内存的环形队列中;
所述消费者用于当共享内存状态机处于可通信状态时从共享内存的环形队列中读取需要进行通信的字节流数据。
进一步地,所述消费者重置标志采用0和1表示该标志的两种状态,其中当消费者需要重新界定字节流边界或消费者被生产者通知字节流边界需要重新界定时将消费者重置标志状态置为1,当消费者不需要重新界定字节流边界或消费者被生产者通知共享内存已完成重置时将消费者重置标志状态置为0。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市风云实业有限公司,未经深圳市风云实业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911201099.0/2.html,转载请声明来源钻瓜专利网。