首页 > 系统相关 >共享内存技术调研

共享内存技术调研

时间:2023-12-07 11:34:05浏览次数:31  
标签:数据库 Redis 技术 内存 进程 服务器 共享内存 调研

共享内存技术调研

1.      研究目的

在调研仿真分布式解决方案时遇到一个问题,在服务器中不同软件之间如何高效的进行通讯,这里涉及到了不同的操作系统(windows和Linux),不同的使用功能(虚实融合,数字仿真),需求不同需要的信息传递效率要求不同,因此需要调研现有的技术,找到适合使用的方案。

2.      通讯方法

2.1.        服务器内部软件之间的通讯方法

[1]    直接内存访问(Direct Memory Access,DMA):这是一种允许特定硬件组件直接从系统内存中读取数据的技术。DMA控制器负责控制数据的传输,而不需要CPU的干预。这种通讯方法通常用于高速数据传输,如磁盘驱动器和网络接口卡。

[2]    共享内存:这是服务器内部软件之间最常用的通讯方法之一。多个进程或线程可以访问和修改共享内存区域,从而实现数据的快速交换。共享内存允许多个软件组件之间进行高效的数据共享和协作。

[3]    消息队列:这是一种允许进程或线程之间发送和接收消息的通信方法。消息队列通常由操作系统提供,并可以用于在不同软件组件之间传递数据和事件。

[4]    套接字(Socket):这是一种用于网络通信的编程接口,但也可以用于服务器内部软件之间的通讯。套接字允许软件组件之间通过TCP或UDP协议进行数据交换。

[5]    远程过程调用(Remote Procedure Call,RPC):这是一种允许一个进程(客户端)通过网络向另一个进程(服务器)发送请求的通信方法。RPC允许不同进程之间进行交互和共享数据,通常用于分布式系统和多线程应用程序。

2.2.        共享内存技术的优缺点介绍

优点:

l   方便高效:使用共享内存进行进程间通信非常方便,而且函数的接口也简单,数据的共享使进程间的数据不用传送,而是直接访问内存,加快了程序的效率。同时,它也不像匿名管道那样要求通信的进程有一定的父子关系。

l   通信速度快:共享内存是所有进程间通信速度最快的。

缺点:

l   同步问题:共享内存没有提供同步的机制,这使得我们在使用共享内存进行进程间通信时,往往要借助其他的手段来进行进程间的同步工作。如果对共享的内存区域进行读写操作,必须确保各个并发进程在关键部分上互斥地访问共享区域,否则可能会引发一些并发问题。

l   死锁问题:如果进程在等待其它进程释放共享内存,而其它进程由于某种原因无法释放,这时就会发生死锁。

l   内存空间问题:多个进程同时访问共享内存,因此需要大量的额外内存空间。

l   实现难度问题:使用共享内存需要对系统进行额外编程,这可能会增加实现的难度和复杂性。

3.      服务器数据库

3.1.        适合服务器使用的内存数据库主要有:

  • Oracle数据库:Oracle是一款功能强大的关系型数据库管理系统,广泛用于企业级应用、Web应用程序和数据仓库等场景。它提供了高性能、可扩展性和安全性,支持大量并发用户访问。
  • MySQL数据库:MySQL是一款流行的开源关系型数据库管理系统,适用于各种规模的应用程序。它具有高性能、可扩展性和易用性,支持大量并发用户访问,并且提供了丰富的应用程序接口(API)。
  • PostgreSQL数据库:PostgreSQL是一款强大的开源关系型数据库管理系统,适用于高端应用场景。它提供了高性能、可扩展性和安全性,支持全文搜索、事务隔离级别和行级锁定等功能。
  • MongoDB数据库:MongoDB是一款流行的开源文档数据库管理系统,适用于Web应用程序和大数据应用场景。它支持非结构化和半结构化数据存储,具有高性能、可扩展性和易用性,并且提供了丰富的查询语言和数据操作API。
  • Redis数据库:Redis是一款开源的内存数据结构存储系统,适用于高速缓存、会话管理、消息队列等场景。它支持键值对存储和高速读写访问,并且提供了丰富的数据类型和操作命令。

3.2.        Redis数据库是基于内存的,转存到MongoDB数据库的方法主要有:

  1. 使用Redis的持久化功能:Redis提供了RDB和AOF两种持久化方式,可以将Redis中的数据定期或实时地保存到磁盘上。然后可以编写脚本将持久化文件中的数据导入到MongoDB中。
  2. 使用Redis的发布-订阅功能:Redis的发布-订阅功能可以让多个客户端订阅同一个频道,并在频道上发布消息。可以将Redis集合中的数据作为消息发布到一个频道上,然后编写订阅该频道的客户端程序,在接收到消息时将数据存储到MongoDB中。

4.      共享内存服务器产品

4.1.        软件产品

  1. Boost.Interprocess库:这是一个C++库,专门用于实现跨进程的内存共享和文件共享。它提供了一系列用于创建、删除、附加和映射共享内存的类和函数,可以方便地实现进程间数据共享,并支持多线程安全访问。
  2. POSIX共享内存:POSIX标准中定义了共享内存的接口,包括创建、删除、附加和映射共享内存等操作。使用POSIX共享内存,可以在不同进程之间实现高效的数据共享。
  3. System V共享内存:这是另一种常见的共享内存实现方式。它通过系统调用接口(如shmget、shmat、shmdt和shmctl)来创建、附加、分离和删除共享内存。System V共享内存也支持多线程安全访问。
  4. 共享内存工具集:该工具集包含了一系列共享内存工具,包括共享内存创建、共享内存删除、共享内存复制等等,适用于Linux系统下的多种场景。
  5. shm_open:这是Linux系统下的一个函数,可以创建或打开一个共享内存段。通过该函数,可以实现不同进程之间的数据共享。

4.2.        硬件产品

  1. HPE Superdome Flex是一款具有共享内存架构的企业级服务器。它采用了NUMA架构,并配备了高性能的互连网络和共享内存模块,用于支持多个处理器节点之间的通信和数据共享。
  2. Oracle Exadata是一种专为数据库处理和分析而设计的服务器解决方案。它结合了共享内存架构和专用存储技术,以提供高性能的数据处理和查询能力。
  3. IBM Power Systems是一系列基于IBM Power架构的企业级服务器。它们支持共享内存架构,并提供高度可扩展的处理能力和大容量的共享内存选项。

5.      系统分析

共享内存的阵营:

Windows系统:

提供的是进程通讯IPC和API共享内存,windows不同版本之间可以共享内存

鸿蒙系统:

提供了类型windows的共享内存机制,但是不能与windows之间共享内存

linux和macOS:

提供了systemV共享内存机制,他们之间可以进行可以实现内存共享

阵营之间不能共享内存,因为操作系统的内存管理机制不同,即使实现了内存映射到物理地址也不行,两大阵营的物理地址方式不同,无法实现直接共享内存通讯

 

6.      结论

利用共享内存进行服务器内部通讯和数据传输是一种快捷的方法,结合Redis数据库,可以更大程度的利用共享内存技术,用于解决计算和渲染过程中通讯的效率问题。

标签:数据库,Redis,技术,内存,进程,服务器,共享内存,调研
From: https://www.cnblogs.com/hanabc12345/p/17881324.html

相关文章

  • 2023年全国计算机技术与软件专业资格(水平)考试成绩可以查询了
    2023年全国计算机技术与软件专业资格(水平)考试成绩可以查询了查询网址:https://bm.ruankao.org.cn/分数线据说是相对固定的,卷面分的60%算,也就是45分达标,50+43分的我已哭晕在厕所。......
  • 建投数据荣获2023信创“大比武”优秀技术应用奖
    近日,2023信创“大比武”金融业务创新应用赛道(简称金融赛道)落下帷幕,经过选手报名-资格初审-选拔阶段-总决赛等赛程,建投数据最终获得“优秀技术应用奖”。这是对建投数据在信息技术应用创新领域技术攻关、方案创新、业务场景应用以及产品的高可控、高性能、高安全等优势的全面肯定。......
  • Unity shader实现水波的技术原理
    Unityshader是Unity引擎中非常重要的一个部分,它可以用来实现各种各样的特效效果,其中包括水波效果。本文将详细讲解Unityshader实现水波的技术原理,并给出相关的Shader代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏......
  • 大四jsp实训项目技术总结
    crm项目总结①静态资源疯狂报错?很有可能是后端的问题,后端出了问题,服务器取不出来资源。记住:只要服务器取不到某个资源,很有可能导致所有资源都取不出来。一个经典案例:某个数据库映射文件ICustomerDetail.xml中的mapper地址应该是在cn.edu.zisu.ICustomerDetailDao,但是我盲......
  • 100G大表Alter更改表结构技术方案探讨
    JAVA研发需求:需要对A表的XXX字段扩容至varchar(500)目前的现状:线上A表有100G+的数据,如果直接modifyXXXvarchar(500),会锁全表,即使用pt-osc工具凌晨搞,预估一宿加不完,并且从库会出现大面积延迟,读取的数据将不准确。https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-opera......
  • 如何利用人工智能+物联网技术实现自动化设备生产
    随着科技的发展与行业竞争的日益激烈,制造业也逐渐走向智能化发展。制造业的改革是利用物联网技术和自动化设备,实现生产线的智能化和自适应生产,优化生产流程,提高生产效率和质量,为企业创造更大的价值。方案概述智能化生产主要是利用物联网技术,将生产线上的生产设备、生产环境、生产要......
  • 技术分享丨 Prisma Cloud 增强云原生代码保护能力!
    现如今,企业业务向云计算转变已是主流,组织收到威胁、运营中断、威胁形势也持续升级,网络安全转型已变成当今企业的当务之急。Palo Alto PrismaCloud具有业界最广泛的安全性和合规性覆盖范围,它保护跨平台的云原生应用程序、数据、网络、计算、存储、用户和更高级别的PaaS+SaaS服务......
  • 盘点2023年度安防监控行业发展:安防监控技术取得哪些进展?
    随着科技的不断发展,安防监控行业也在迅速进步。在今年一年中,安防监控行业的发展也取得了长足的进步。随着2023年渐近尾声,本文将对2023年安防监控行业的发展进行一个盘点和简单的剖析。1)高清监控设备的发展越来越受到重视随着人们对安全监控的需求不断提高,传统的监控设备已经无法满......
  • 短视频购物系统源码:构建创新购物体验的技术深度解析
    短视频购物系统作为电商领域的新宠,其背后的源码实现是其成功的关键。本文将深入探讨短视频购物系统的核心技术和源码设计,以揭示其如何构建创新购物体验的技术奥秘。1.技术架构与框架选择短视频购物系统的源码首先考虑的是其技术架构。常见的选择包括前端框架(如React、Vue.js)和后端......
  • 史文钊谈数字技术在医学创新中的应用:大模型不求大,贵在精
    近日,国际性学术会议“北京论坛2023”隆重召开,迄今已举办20届。本届论坛以“文明的和谐与共同繁荣——传承与互鉴”为主题,下设16个分论坛和4个专题论坛,来自国内外各领域的600余位顶级专家学者聚焦后疫情时代的全球可持续发展,通过对话与交流为解决新时代课题贡献智慧。作为北......