CN109032798B - 一种电能质量管理系统共享内存锁控制方法 - Google Patents

一种电能质量管理系统共享内存锁控制方法 Download PDF

Info

Publication number
CN109032798B
CN109032798B CN201810827231.8A CN201810827231A CN109032798B CN 109032798 B CN109032798 B CN 109032798B CN 201810827231 A CN201810827231 A CN 201810827231A CN 109032798 B CN109032798 B CN 109032798B
Authority
CN
China
Prior art keywords
shared memory
management system
power quality
quality management
mutual exclusion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810827231.8A
Other languages
English (en)
Other versions
CN109032798A (zh
Inventor
陈欢
张�浩
张振华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Keyvia Electric Co ltd
Original Assignee
Tianjin Keyvia Electric Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianjin Keyvia Electric Co ltd filed Critical Tianjin Keyvia Electric Co ltd
Priority to CN201810827231.8A priority Critical patent/CN109032798B/zh
Publication of CN109032798A publication Critical patent/CN109032798A/zh
Application granted granted Critical
Publication of CN109032798B publication Critical patent/CN109032798B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供了一种电能质量管理系统共享内存锁控制方法,包括:S1、进行数据初始化设置,利用ACE_Singleton创建共享内存管理服务进程单例;S2、电能质量管理系统某进程获得向共享内存表写入数据的命令,该进程调用电能质量管理系统共享内存管理服务进程单例;S3、数据初始化过程中,会对共享内存表创建共享内存表进程互斥锁对象,共享内存表在更新过程中,会根据共享内存表进程互斥锁对象的状态进行等待或者写入。本发明所述的电能质量管理系统共享内存锁控制方法能够有效实现共享内存锁控制,无需进行底层代码编写和设置,减少电能质量管理系统共享内存读写错误发生,保证电能质量管理系统共享内存持续和稳定运行。

Description

一种电能质量管理系统共享内存锁控制方法
技术领域
本发明属于通信设备技术领域,尤其是涉及一种电能质量管理系统共享内存锁控制方法。
背景技术
科技发展日新月异,城市轨道交通迅猛发展,电能质量管理系统作为城市轨道交通行业的一个子系统得到了大力推进,用于监视电力和能耗相关数据。随着轨道交通电力设备规模不断增长,电能质量管理系统的各进程数据交互越来越频繁,数据量也越来越庞大。电能质量管理系统的共享内存是该系统的各进程数据交互的平台,是整个系统的核心组成之一,其数据的有效性、内存模块的稳定性关系到整个系统稳定。
共享内存技术是系统进程之间进行数据交互的最直接最便捷方式,当某个进程对该共享内存区域写入数据,共享该内存区域的其他进程可以直接显示并能访问所写数据内容。共享内存区域是一种自由区域,各个进程可以平等、自由、随机对该区域进行访问。当多个进程对该共享内存区域进行读写操作频繁,如果没有采用合适的方式进行控制,容易出现死锁或者关键数据遭到破坏导致系统崩溃。共享内存一般采用一个“一个进程写、多个进程读”的模型。但是如何设计进程锁机制来控制进程写共享内存操作是电能质量管理系统的核心问题。
发明内容
有鉴于此,本发明旨在提出一种电能质量管理系统共享内存锁控制方法,以解决电能质量管理系统中多进程访问共享内存无序状态下导致系统容易出现死锁或者关键数据遭到破坏导致系统崩溃问题
为达到上述目的,本发明的技术方案是这样实现的:
一种电能质量管理系统共享内存锁控制方法,包括:
S1、进行数据初始化设置,利用ACE_Singleton创建共享内存管理服务进程单例;
S2、电能质量管理系统某进程获得向共享内存表写入数据的命令,该进程调用电能质量管理系统共享内存管理服务进程单例;
S3、数据初始化过程中,会对共享内存表创建共享内存表进程互斥锁对象,共享内存表在更新过程中,会根据共享内存表进程互斥锁对象的状态进行等待或者写入。
进一步的,所述步骤S1中,数据初始化的具体方法如下:
S101、利用ACE_Singleton创建共享内存管理服务进程单例,电能质量管理系统启动时,自动运行共享内存管理服务进程单例;
S102、从电能质量管理系统数据库中加载共享内存所包含共享内存表信息,该共享内存表是根据电能质量管理系统的共享内存基础数据类型分类创建;
S103、对每种共享内存表创建共享内存表互斥锁文件;
S104、通过ACE架构的ACE_RW_Process_Mutex和S103中创建的互斥锁文件来共同创建共享内存表进程互斥锁对象,无需关心互斥锁的具体实现方式,简化程序。
进一步的,所述步骤S102中,所述共享内存表包括终端通道信息表、厂站智能表计信息表、厂站终端信息表、系统进程信息表、系统服务器节点信息表、系统服务配置信息表、抄表任务模板信息表、抄表任务设置信息表。
进一步的,每种所述共享内存表都创建一个相对应的同名互斥锁文件。
进一步的,每种所述共享内存表都包括共享内存表名、索引号和数值。
进一步的,所述步骤S3中,锁文件对共享内存表的共享内存控制方法如下:
S301、电能质量管理系统某进程获得向共享内存写入数据的命令;
S302、该进程调用电能质量管理系统共享内存管理服务进程单例;
S303、通过向该进程写数据命令中,可以获取到所需操作的共享内存表名,然后获取与该共享内存表名对应的共享内存表进程互斥锁对象;
S304、创建守卫程序,通过守卫程序守卫共享内存表进程互斥锁对象的写操作,自动守卫该互斥锁写操作,无需人为获取锁和释放锁;
S305、当系统没有在调用该互斥锁写操作时,可以直接获取该互斥锁,守卫程序守护该内存库表的写操作,同时将该互斥锁的写操作锁定;当系统中存在正在调用该互斥锁的进程且互斥锁的写操作已经锁定时,此时该进程处于阻塞状态,等待其他正在调用该互斥锁对象的进程写操作完毕退出后自动释放该互斥锁对象;当释放该互斥锁写操作后,该进程立即获取该互斥锁并将该互斥锁的写操作锁定。
进一步的,所述步骤S304中,所述守卫程序为ACE_WRITE_GUARD_RETURN,通过ACE_WRITE_GUARD_RETURN守卫互斥锁的写操作,ACE架构中自动封装互斥锁守卫程序。
进一步的,电能质量管理系统共享内存机制不限制各个进程对共享内存表进行读操作,允许同时有多个进程对同一个共享内存表进行读操作。
进一步的,所述步骤S3中,电能质量管理系统的内存更新共享通过文件映射的方式实现,其中包括3个共享内存映射文件,电能质量管理系统其它进程同时对同一个共享内存映射表文件的不同共享内存表进行内存写操作时候,相互不受影响,可以同时进行。
相对于现有技术,本发明所述的电能质量管理系统共享内存锁控制方法具有以下优势:
本发明所述的电能质量管理系统共享内存锁控制方法能够有效实现共享内存锁控制,无需进行底层代码编写和设置,减少电能质量管理系统共享内存读写错误发生,保证电能质量管理系统共享内存持续和稳定运行;通过每个共享内存表创建一个进程锁对象来限制共享内存表写操作,共享内存表之间的操作相互不影响。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的启动前的数据初始化流程图;
图2为本发明实施例所述的共享内存锁控制流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
下面将参考附图并结合实施例来详细说明本发明。
如图1所示,启动前需要进行的数据初始化设置步骤:
1.利用ACE_Singleton创建共享内存管理服务进程单例。单例是一个系统中一个类仅有一个实例,这就减少了系统的资源开销,避免系统多进程中出现多分拷贝。对共享内存创建一个唯一的管理服务实例,对系统共享内存操作起到重要作用,可以方便管理对共享内存的读写操作,使共享内存读写操作有序化,增强系统的稳定性和数据的安全性。利用ACE架构可以方便、安全的定义单体,简化程序。
2.电能质量管理系统启动时候自动运行共享内存管理服务进程单例。
3.从电能质量管理系统数据库中加载共享内存所包含共享内存表信息。该共享内存表是根据电能质量管理系统的共享内存基础数据类型分类创建。共享内存库表包括终端通道信息表,厂站智能表计信息表,厂站终端信息表,系统进程信息表,系统服务器节点信息表,系统服务配置信息表,抄表任务模板信息表,抄表任务设置信息表。
4.根据每种共享内存数据表创建共享内存表进程锁文件。在本步,系统自动根据步骤3里面的8种共享内存表表名在本地程序运行文件夹中生成对应的8个的进程互斥锁文件,每种共享内存表生成一个同名的进程互斥锁文件。
5.通过ACE架构的ACE_RW_Process_Mutex和步骤4中创建的互斥锁文件来共同创建共享内存表进程互斥锁对象。无需关心互斥锁的具体实现方式,简化程序。
如图2所示,本发明实施例中共享内存锁控制流程图:
1.电能质量管理系统某进程A获得向共享内存写入数据的命令。该写入数据的命令包括共享内存表名、索引号和数值。
2.进程A调用电能质量管理系统共享内存管理服务进程单例。电能质量管理系统中提供该单例的唯一接口,所有进程可以自由均等的通过该接口获取到该单例,可以访问共享内存,对其进行读写操作。
3.获取所写共享内存表互斥锁。通过向进程A写数据命令中,可以获取到所需操作的共享内存表名,然后获取与该表名对应的共享内存表进程互斥锁对象。
4.通过ACE_WRITE_GUARD_RETURN守卫互斥锁的写操作。通过ACE架构里面的ACE_WRITE_GUARD_RETURN可以自动守卫该互斥锁写操作,无需人为获取锁和释放锁。
5.当系统不存在调用该互斥锁写操作,可以直接获取该互斥锁,守卫程序守护该内存库表的写操作,同时将该互斥锁的写操作锁定。当系统中存在正在调用该互斥锁的进程且已经锁定该互斥锁的写操作,此时进程A处于阻塞状态,等待该互斥锁对象被其他正在调用的进程释放,当其他进程释放该互斥锁写操作时候,进程A立即获取该互斥锁并将该互斥锁的写操作锁定。
6.写共享内存对应表数据操作。
7.系统自动释放共享内存表互斥锁,该共享内存表的互斥锁可以被其他进程获取,可以对共享内存表进行写操作。
8.在对共享内存进行写操作时候,由于共享内存是分表进行读写操作的,当一个共享内存表进行写操作并锁定的时候,其他的进程可以访问共享内存中其他未被共享内存表进程互斥锁锁定的共享内存表里面的数据,对其进行读写操作。
9.电能质量管理系统共享内存机制不限制各个进程对所有共享内存表进行“读”操作,允许同时有多个进程对同一个共享内存表进行“读”操作。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种电能质量管理系统共享内存锁控制方法,其特征在于,包括:
S1、进行数据初始化设置,利用ACE_Singleton创建共享内存管理服务进程单例;
S2、电能质量管理系统某进程获得向共享内存表写入数据的命令,该进程调用电能质量管理系统共享内存管理服务进程单例;
S3、数据初始化过程中,会对共享内存表创建共享内存表进程互斥锁对象,共享内存表在更新过程中,会根据共享内存表进程互斥锁对象的状态进行等待或者写入;
所述步骤S1中,数据初始化的具体方法如下:
S101、利用ACE_Singleton创建共享内存管理服务进程单例,电能质量管理系统启动时,自动运行共享内存管理服务进程单例;
S102、从电能质量管理系统数据库中加载共享内存所包含共享内存表信息,该共享内存表是根据电能质量管理系统的共享内存基础数据类型分类创建;
S103、对每种共享内存表创建共享内存表互斥锁文件;
S104、通过ACE架构的ACE_RW_Process_Mutex和S103中创建的互斥锁文件来共同创建共享内存表进程互斥锁对象;
所述步骤S102中,所述共享内存表包括终端通道信息表、厂站智能表计信息表、厂站终端信息表、系统进程信息表、系统服务器节点信息表、系统服务配置信息表、抄表任务模板信息表、抄表任务设置信息表。
2.根据权利要求1所述的电能质量管理系统共享内存锁控制方法,其特征在于:每种所述共享内存表都创建一个相对应的同名互斥锁文件。
3.根据权利要求1所述的电能质量管理系统共享内存锁控制方法,其特征在于:每种所述共享内存表都包括 共享内存表名、索引号和数值。
4.根据权利要求1所述的电能质量管理系统共享内存锁控制方法,其特征在于,所述步骤S3中,锁文件对共享内存表的共享内存控制方法如下:
S301、电能质量管理系统某进程获得向共享内存写入数据的命令;
S302、该进程调用电能质量管理系统共享内存管理服务进程单例;
S303、通过向该进程写数据命令中,可以获取到所需操作的共享内存表名,然后获取与该共享内存表名对应的共享内存表进程互斥锁对象;
S304、创建守卫程序,通过守卫程序守卫共享内存表进程互斥锁对象的写操作,自动守卫该互斥锁写操作;
S305、当系统没有在调用该互斥锁写操作时,直接获取该互斥锁,守卫程序守护该共享内存表的写操作,同时将该互斥锁的写操作锁定;当系统中存在正在调用该互斥锁的进程且互斥锁的写操作已经锁定时,此时该进程处于阻塞状态,等待其他正在调用该互斥锁对象的进程写操作完毕退出后自动释放该互斥锁对象;当释放该互斥锁写操作后,该进程立即获取该互斥锁并将该互斥锁的写操作锁定。
5.根据权利要求4所述的电能质量管理系统共享内存锁控制方法,其特征在于,所述步骤S304中,所述守卫程序为ACE_WRITE_GUARD_RETURN,通过 ACE_WRITE_GUARD_RETURN守卫互斥锁的写操作,ACE架构中自动封装互斥锁守卫程序。
6.根据权利要求1所述的电能质量管理系统共享内存锁控制方法,其特征在于:电能质量管理系统共享内存机制不限制各个进程对共享内存表进行读操作,允许同时有多个进程对同一个共享内存表进行读操作。
7.根据权利要求1所述的电能质量管理系统共享内存锁控制方法,其特征在于:所述步骤S3中,电能质量管理系统的内存更新共享通过文件映射的方式实现,其中包括3个共享内存映射文件,电能质量管理系统其它进程同时对同一个共享内存映射表文件的不同共享内存表进行内存写操作时候,相互不受影响,同时进行。
CN201810827231.8A 2018-07-25 2018-07-25 一种电能质量管理系统共享内存锁控制方法 Active CN109032798B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810827231.8A CN109032798B (zh) 2018-07-25 2018-07-25 一种电能质量管理系统共享内存锁控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810827231.8A CN109032798B (zh) 2018-07-25 2018-07-25 一种电能质量管理系统共享内存锁控制方法

Publications (2)

Publication Number Publication Date
CN109032798A CN109032798A (zh) 2018-12-18
CN109032798B true CN109032798B (zh) 2022-03-18

Family

ID=64645045

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810827231.8A Active CN109032798B (zh) 2018-07-25 2018-07-25 一种电能质量管理系统共享内存锁控制方法

Country Status (1)

Country Link
CN (1) CN109032798B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857566B (zh) * 2019-01-25 2020-09-29 天翼爱动漫文化传媒有限公司 一种内存读写过程的资源锁定方法
CN111400330B (zh) * 2020-03-13 2024-04-09 深圳前海微众银行股份有限公司 任务处理方法、装置、设备及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1737752A (zh) * 2004-08-18 2006-02-22 华为技术有限公司 一种共享数据的管理方法
CN1740978A (zh) * 2004-08-23 2006-03-01 华为技术有限公司 实现共享内存数据库的方法及内存数据库系统
CN101630276A (zh) * 2009-08-18 2010-01-20 深圳市融创天下科技发展有限公司 一种高效的内存访问方法
CN102799490A (zh) * 2011-05-27 2012-11-28 北京神州泰岳软件股份有限公司 一种实现一对多的进程间通信的系统和方法
CN103514053A (zh) * 2013-09-22 2014-01-15 中国科学院信息工程研究所 一种基于共享内存的进程间通讯方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1737752A (zh) * 2004-08-18 2006-02-22 华为技术有限公司 一种共享数据的管理方法
CN1740978A (zh) * 2004-08-23 2006-03-01 华为技术有限公司 实现共享内存数据库的方法及内存数据库系统
CN101630276A (zh) * 2009-08-18 2010-01-20 深圳市融创天下科技发展有限公司 一种高效的内存访问方法
CN102799490A (zh) * 2011-05-27 2012-11-28 北京神州泰岳软件股份有限公司 一种实现一对多的进程间通信的系统和方法
CN103514053A (zh) * 2013-09-22 2014-01-15 中国科学院信息工程研究所 一种基于共享内存的进程间通讯方法

Also Published As

Publication number Publication date
CN109032798A (zh) 2018-12-18

Similar Documents

Publication Publication Date Title
US20210019062A1 (en) Method and system for application-based management of user data storage rights
US6826604B2 (en) Input/output device information management system for multi-computer system
US9946572B1 (en) Resource tolerations and taints
CN109032798B (zh) 一种电能质量管理系统共享内存锁控制方法
CN109032817B (zh) 一种电能质量管理系统共享内存实现方法
CN103248667A (zh) 一种分布式系统的资源访问方法和系统
CN104639361A (zh) 网络服务模板的管理方法和装置
CN109446202B (zh) 标识符分配方法、装置、服务器和存储介质
US7747750B1 (en) Method for reserving resources in a storage area network with selective capabilities
CN108089926A (zh) 一种获取分布式锁的方法、装置、设备及可读存储介质
CN108445788B (zh) 一种酒店场景控制方法及相关装置
CN108921243B (zh) 一种数据中心容量的获取方法和装置
CN110659259A (zh) 数据库迁移方法、服务器以及计算机存储介质
CN106372160A (zh) 一种分布式数据库及管理方法
CN111913777A (zh) 信息处理方法、装置、电子设备及存储介质
US6691121B1 (en) Method and apparatus for online and dynamic extension of IMS data entry databases
CN109284629B (zh) 一种分布式文件存储系统的权限控制方法和系统
CN100403683C (zh) 一种电信网管系统中对被管对象加锁的方法
CN109298953B (zh) 一种共享内存数据读写的装置和方法
EP3082050A1 (en) Mass data fusion storage method and system
CN109542860A (zh) 基于hdfs的业务数据管理方法、终端设备
CN103514185A (zh) 导航地图多个更新区域的数据库文件访问管理方法及装置
CN114675995A (zh) 数据备份方法、装置和电子设备
US8965857B2 (en) Method and system to avoid space bloating during run-time compression
CN102541743A (zh) 用于存储管理的方法、设备和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant