您好、欢迎来到现金彩票网!
当前位置:皮皮彩票app下载 > 共享存储器 >

使用共享内存在一个控制系统中共享数据靠谱吗?

发布时间:2019-07-02 22:19 来源:未知 编辑:admin

  3. 数据库,从共享内存读取数据,然后定时保存到数据库(目前直接采用二进制文件,以后可能会用sqlite)

  如果有时间的话,可能还会开发一个WebServer,从共享内存和数据库中查询数据后,可让用户通过浏览器查看这些数据

  1. 考虑到升级方便,是否多进程真的优于多线. 使用共享内存在多个进程间共享数据,是否有什么缺点?

  1. 多线程肯定比多进程速度快,通讯简单。但是我看了一些资料,共享内存是进程间通讯的几种方法中,速度最快而且实现最简单的,所以速度应该是可以接受的。而且因为这个系统不会有太复杂的通讯,所以只要利用好信号量,共享内存的同步也不会有什么问题。

  2. 如果用socket作为进程间通讯手段,可以实现分布式,这是共享内存无法实现的。但是共享内存是一种“广播”的手段,而socket是点对点的,如果有3个或者以上的程序需要访问这些数据,用socket就比较麻烦了(用UDP组播很不可靠)

  3. 另外在安全性上,因为是嵌入式系统,问题也不大,还可以通过加密,校验等手段来保证数据的可靠性

  展开我来答可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部1、多进程不一定优于多线、Linux上的话,进程间共享数据可以用D-Bus,更可靠而且简单。D-Bus也是广播的。

  如果要考虑高可靠性的话,那么采集程序可以单独一个进程,然后通过MOM,如ActiveMQ之类的用持久方式传送数据,可以广播也可以点对点,也支持分布式。监听程序两个,一个显示一个保存至数据库。这样的话只要考虑采集程序的高可靠性就可以了,因为如果采用持久方式发送数据的话,对方没有接收到数据的时候是会保存下来的。

  追问感谢您的回答!关于D-Bus我研究研究。可靠性的问题不会特别重要,如果要用比较复杂的技术来实现,反而可能由此影响了系统的其他部分(毕竟嵌入式系统资源有限),所以,我觉得持久化数据一类就不需要用了。能否具体讲解一下,考虑到升级的方便性,多进程比之多线程有什么缺点吗?因为多进程的优点很明显,就是如果只是更新部分功能,那么只要更新某个程序即可,还可以根据需要,随时增加新的程序(比如上面说的Web Server)

  多进程比多线程即使在更新方面也不见得有很大的优势。举一个简单的例子:如果各个模块以动态库的形式存在,就是.so或者.dll,那么只要保证接口不变的情况下,多线程的程序更新也就是更新各个动态库的问题。而共享内存的方式其实很难扩展到其它方面的,尤其是随着系统的复杂度增加,共享内存的互斥锁等因素不见得就比多线程的方式更加简单。如果确实想用多进程的方式来达到更新等等目的,那么我会选用D-Bus作为数据交换。因为这个是Linux系统标准的进程数据交换。至少它的功能及可靠性都没有问题

  展开全部(1)共享内存在多个进程间共享数据,一定存在共享数据的优先级及争抢资源问题,多个进程之间要开发一个管理器以进行资源分配也不一件简单的事情!(2)共享内存必须是在机器正常工作状态(加电)时有效。但实际的应用环境比较复杂,要考虑突然掉电等异常故障下的数据安全性问题,对重要的应用容易出现数据丢失,对于交易类的应用数据不能回滚,这是一个致命的弱点。(3)早期的通讯平台,如TPQ、MQ等对Manager的要求很高,是系统的核心技术之一。

  追问感谢您的回答,您说的争抢资源的问题,通过信号量的控制应该可以解决而不需要专门的管理器吧?至于断电的问题,似乎只要在一个电脑上,无论怎么实现,都会存在这个问题,不知道有没有什么好的办法来解决呢?最后,请教一下您说的TPQ和MQ具体指的是什么?

  单纯的信号量在很多线程启动时,不能很好地解决其冲突问题。专门管理器要解决其申请资源的请求问题,要放入对列中逐一响应其请求。否则,实际应用中很多请求因资源共享冲突而被拒绝,这是不允许的。断电问题是存在的,但关键业务数据不允许丢失,至少可以被记录而可以追溯的。

  展开全部1、升级上我觉得进程会更方便,可以单独升级某一个进程!2、共享内存的方式需要有互斥,多线程同时访问,数据同步会有问题!

http://divasrun.com/gongxiangcunchuqi/560.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有