CN106648939A - 用于进程间资源共享的方法与设备 - Google Patents
用于进程间资源共享的方法与设备 Download PDFInfo
- Publication number
- CN106648939A CN106648939A CN201611261263.3A CN201611261263A CN106648939A CN 106648939 A CN106648939 A CN 106648939A CN 201611261263 A CN201611261263 A CN 201611261263A CN 106648939 A CN106648939 A CN 106648939A
- Authority
- CN
- China
- Prior art keywords
- shared
- shared drive
- synchronization control
- access
- processes
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 420
- 230000008569 process Effects 0.000 claims abstract description 389
- 238000013507 mapping Methods 0.000 claims abstract description 64
- 230000008859 change Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 abstract description 6
- 230000001360 synchronised effect Effects 0.000 abstract description 4
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 14
- 238000003860 storage Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
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)
Abstract
本申请的目的是提供一种用于进程间资源共享的方法与设备。与现有技术相比,本申请通过第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存,然后所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态,当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据,通过这种方式实现了多个进程之间的多次双向正确的通信,提高了资源的共享效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于进程间资源共享的技术。
背景技术
共享内存是指允许两个或者多个进程共享同一块内存,例如,通过将这块内存对应的地址映射到各个进程自己独立的地址空间,从而使得这些进程可以相互通信,而现有技术中,对于进程间的资源共享,只解决了单次单向正确的通信问题,要么只解决了共享没有同步,要么解决了同步没有共享,因此,资源共享效率较低,也有局限性,不能充分发挥共享内存的作用。
发明内容
本申请的目的是提供一种用于进程间资源共享的方法与设备。
根据本申请的一个方面,提供了一种用于进程间资源共享的方法,其中,该方法包括:
第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存;
所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态;
当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据。
进一步地,其中,第一进程创建或打开与共享内存对应的文件映射内核对象,包括:
当不存在其他共享进程创建的所述文件映射内核对象,所述第一进程创建所述文件映射内核对象,以使其他共享进程打开所述文件映射内核对象;
或者当存在其他共享进程创建所述文件映射内核对象,所述第一进程打开所述文件映射内核对象。
进一步地,其中,所述可访问包括可写和可读,其中,所述当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据包括:
当所述共享内存的访问状态为可写时,所述第一进程向所述共享内存写入数据。
进一步地,其中,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态包括:
当所有共享进程对应的同步控制标记都为可写值时,确定所述共享内存的访问状态为可写,
所述第一进程向所述共享内存写入数据之后,还包括:
将所述第一进程对应的同步控制标记设为可读值,以使其他共享进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态为可读。
进一步地,其中,所述可访问包括可写和可读,其中,所述当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据,包括:
当所述共享内存的访问状态为可读时,所述第一进程从所述共享内存读取由第二共享进程写入的数据。
进一步地,其中,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态包括:
当存在任一其他共享进程对应的同步控制标记为可读值,确定所述共享内存的访问状态为可读;
所述第一进程从所述共享内存读取数据之后,还包括:
修改所述第二共享进程对应的同步控制标记,其中,当除第二共享进程之外的所有共享进程从所述共享内存读取数据之后,所述同步控制标记被修改为可写值。
进一步地,其中,该方法还包括:
所述第一进程获取提示标记的状态;
所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态包括:
当提示标记处于触发状态,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态。
进一步地,其中,所述提示标记在触发所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态之后,还原为未触发状态;
以及所述第一进程访问所述共享内存之后,还包括:
所述第一进程将所述提示标记设置为触发状态。
进一步地,其中,所述当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据包括:
当存在任一其它共享进程对应的同步控制标记为非零时,所述第一进程从所述共享内存读取由第二共享进程写入的数据,并将所述第二共享进程对应的同步控制标记的值减一,同时将提示标记设置为触发状态;
当所有共享进程对应的同步控制标记为零时,所述第一进程向所述共享内存写入数据,并所述第一进程对应的同步控制标记设为预设值,同时将所述提示标记设置为触发状态,其中,所述预设值为所有共享进程的数量减一。
进一步地,其中,所述提示标记包括事件内核对象或者信号量。
根据本申请的另一方面,还提供了一种用于进程间资源共享的设备,其中,该设备包括:
第一装置,用于控制第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存;
第二装置,用于控制所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态;
第三装置,用于当所述共享内存的访问状态为可访问时,控制所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据。
进一步地,其中,所述第一装置用于:
当不存在其他共享进程创建的所述文件映射内核对象,控制所述第一进程创建所述文件映射内核对象,以使其他共享进程打开所述文件映射内核对象;
或者当存在其他共享进程创建所述文件映射内核对象,控制所述第一进程打开所述文件映射内核对象。
进一步地,其中,所述可访问包括可写和可读,其中,所述第三装置用于:
当所述共享内存的访问状态为可写时,控制所述第一进程向所述共享内存写入数据。
进一步地,其中,所述第二装置用于:
当所有共享进程对应的同步控制标记都为可写值时,确定所述共享内存的访问状态为可写,
所述第三装置控制所述第一进程向所述共享内存写入数据之后还用于:
将所述第一进程对应的同步控制标记设为可读值,以使其他共享进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态为可读。
进一步地,其中,所述可访问包括可写和可读,其中,所述第三装置用于:当所述共享内存的访问状态为可读时,所述第一进程从所述共享内存读取由第二共享进程写入的数据。
进一步地,其中,所述第二装置用于:
当存在任一其他共享进程对应的同步控制标记为可读值,确定所述共享内存的访问状态为可读;
所述第三装置控制所述第一进程从所述共享内存读取数据之后还用于:
修改所述第二共享进程对应的同步控制标记,其中,当除第二共享进程之外的所有共享进程从所述共享内存读取数据之后,所述同步控制标记被修改为可写值。
进一步地,其中,该设备还包括:
第四装置,用于控制所述第一进程获取提示标记的状态;
所述第二装置用于:
当提示标记处于触发状态,控制所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态。
进一步地,其中,所述提示标记在触发所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态之后,还原为未触发状态;
以及所述第一进程访问所述共享内存之后,还包括:
第五装置,用于控制所述第一进程将所述提示标记设置为触发状态。
进一步地,其中,所述第三装置用于:
当存在任一其它共享进程对应的同步控制标记为非零时,所述第一进程从所述共享内存读取由第二共享进程写入的数据,并将所述第二共享进程对应的同步控制标记的值减一,同时将提示标记设置为触发状态;
当所有共享进程对应的同步控制标记为零时,所述第一进程向所述共享内存写入数据,并所述第一进程对应的同步控制标记设为预设值,同时将所述提示标记设置为触发状态,其中,所述预设值为所有共享进程的数量减一。
进一步地,其中,所述提示标记包括事件内核对象或者信号量。
与现有技术相比,本申请通过第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存,然后所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态,当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据,通过这种方式实现了多个进程之间的多次双向正确的通信,提高了资源的共享效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种用于进程间资源共享的方法流程图;
图2示出根据本申请一个优选实施例的一种用于两进程间资源共享的交互示意图;
图3示出根据本申请另一个方面的一种用于进程间资源共享的设备示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本申请的技术方案,进行清楚和完整的描述。
图1示出根据本申请一个方面提供的一种用于进程间资源共享的方法流程图,其中,该方法包括:
S1第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存;
S2所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态;
S3当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据。
在该实施例中,在所述步骤S1中,第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存。在此,所述第一进程为所有共享进程中的任一进程,例如,要实现五个进程之间的内存共享,所述第一进程为该五个进程中的任一进程。其中,所述文件映射内核对象对应共享内存的地址,所有共享进程可以通过将所述文件映射内核对象对应的共享内存的地址映射到自己的地址空间,得到指向所述共享内存的指针,以实现对所述共享内存的访问。
其中,第一进程创建或打开与共享内存对应的文件映射内核对象,包括:当不存在其他共享进程创建的所述文件映射内核对象,所述第一进程创建所述文件映射内核对象,以使其他共享进程打开所述文件映射内核对象;或者当存在其他共享进程创建所述文件映射内核对象,所述第一进程打开所述文件映射内核对象。即所有共享进程通过该文件映射内核对象实现对所述共享内存的访问。具体地,第一进程或者其他共享进程以约定的名称创建所述文件映射内核对象,并通过该约定的名称打开所述文件映射内核对象。
继续在该实施例中,在所述步骤S2中,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态;进一步地,在所述步骤S3中,当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据。在此,所述同步控制标记可以为计数器。
优选地,其中,所述可访问包括可写和可读,其中,所述步骤S3包括:当所述共享内存的访问状态为可写时,所述第一进程向所述共享内存写入数据或者当所述共享内存的访问状态为可读时,所述第一进程从所述共享内存读取由第二共享进程写入的数据。在此,所述第二进程指在所有共享进程中除所述第一进程外的其他任一进程。本领域的技术人员应能理解,对于共享内存的访问包括写数据(例如修改数据)和读数据等,而写数据和读数据不能同时进行,因此,当所述共享内存处于可写状态时,可以实现写入数据,当所述共享内存处于可读状态时,可以实现读数据。
优选地,在本方案中,通过设置同步控制标记的方式,来对应所述共享内存的可写或可读状态,每个共享进程可以对应一个同步控制标记。具体地,在一种情况下,在确定当所有共享进程对应的同步控制标记都为可写值时,确定所述共享内存的访问状态为可写,在此,可写值是预先设定的某个数值,即当所有共享进程对应的同步控制标记都为该预先设定的某个数值时,所述共享内存的访问状态为可写,通常该数值被设置为零。
其中,所述第一进程向所述共享内存写入数据之后,还包括:将所述第一进程对应的同步控制标记设为可读值,以使其他共享进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态为可读。本领域的技术人员应能理解,所述第一进程写入数据以便于其他共享进程读取数据,所述可读值用于提示其他共享进程可读取数据。
在另一种情况下,当存在任一其他共享进程对应的同步控制标记为可读值,所述第一进程确定所述共享内存的访问状态为可读,因此,所述第一进程从所述共享内存读取数据,在读取数据之后,所述第一进程修改所述第二共享进程对应的同步控制标记,其中,当除第二共享进程之外的所有共享进程从所述共享内存读取数据之后,所述同步控制标记被修改为可写值。
在本方案中,当任一共享进程向所述共享内存写入数据之后,会将对应的同步控制标记设为可读值,以提示其他共享进程可读取数据,而其他进程在读取数据之后会修改该可读值,以表示该进程读取了数据,直到除写入数据的进程之外的所有共享进程都读取了数据,所述同步控制标记被修改为可写值。这种方式,能够实现当其他所有共享进程都读完写入数据的进程最近一次写入的数据之后,才能写入新的数据。
优选地,所述方法还包括:S4(未示出)所述第一进程获取提示标记的状态;优选地,所述提示标记包括事件内核对象或者信号量。在此,当所述提示标记处于触发状态时,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态。其中,所述提示标记在触发所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态之后,还原为未触发状态;以及所述第一进程访问所述共享内存之后,还包括:S5(未示出)所述第一进程将所述提示标记设置为触发状态。
在该情形中,通过提示标记的方式,来提示任一共享进程在所述提示标记处于触发状态时,根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态,从而实现对所述共享进程的访问,而当任一共享进程访问所述共享内存之后,该进程会将所述提示标记设置为触发状态,以用于其他共享进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态。通过这种方式,实现了多个共享进程对所述共享内存访问的互斥。
在一个优选的实施例中,可写值可被设置为零,其中,所述步骤S3包括:当存在任一其它共享进程对应的同步控制标记为非零时,所述第一进程从所述共享内存读取由第二共享进程写入的数据,并将所述第二共享进程对应的同步控制标记的值减一,同时将提示标记设置为触发状态;
当所有共享进程对应的同步控制标记为零时,所述第一进程向所述共享内存写入数据,并所述第一进程对应的同步控制标记设为预设值,同时将所述提示标记设置为触发状态,其中,所述预设值为所有共享进程的数量减一。
图2示出根据本申请一个优选实施例的一种用于两进程间资源共享的交互示意图,在该实施例中,包含两个进程,进程1和进程2,包含两个同步控制标记:同步控制标记1和同步控制标记2,在该实施例中,事件内核对象作为提示标记,其中,事件内核对象有信号对应提示标记处于触发状态。图中虚线表示进程间横向流程,实线表示进程内纵向流程。
具体地,进程1创建文件映射内核对象,进程1将文件映射内核对象对应的内存地址映射到自己的地址空间,映射对象的一个视图,得到指向共享内存的指针,另外,进程1创建事件内核对象并使其有信号,进程2以文件映射内核对象的名字打开文件映射内核对象获得其句柄,进程2将文件映射内核对象对应的内存地址映射到自己的地址空间,映射对象的一个视图,得到指向共享内存的指针,这样,进程1和进程2可以实现对所述文件映射内核对象对应的共享内存进行访问。
以进程1为例,当进程1要向所述共享内存写数据,进程1等待事件内核对象有信号,当其有信号,进程1判断进程2对应的同步控制标记2是否为0,当该同步控制标记2为0,且进程1对应的同步控制标记1也为0,进程1可以写入数据,并将同步控制标记1置为1,以使进程2读取数据,并使事件内核对象有信号,以提示进程2可访问所述共享内存。
而当同步控制标记2不为0,即进程2写入过数据,则进程1读取该数据,并将同步控制标记2的值减1,并使事件内核对象有信号,以提示进程2可访问所述共享内存。
当同步控制标记2为0,而同步控制标记1不为0,即进程1写入过数据,但进程2未读取该数据,则进程1使事件内核对象有信号,以提示进程2可访问所述共享内存,从而保证只有在数据读取之后,才能有新的数据写入。
与现有技术相比,本申请通过第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存,然后所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态,当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据,通过这种方式实现了多个进程之间的多次双向正确的通信,提高了资源的共享效率。
图3示出根据本申请一个方面提供的一种用于进程间资源共享的设备示意图,其中,该设备包括:
第一装置,用于控制第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存;
第二装置,用于控制所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态;
第三装置,用于当所述共享内存的访问状态为可访问时,控制所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据。
在该实施例中,所述第一装置控制第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存。在此,所述第一进程为所有共享进程中的任一进程,例如,要实现五个进程之间的内存共享,所述第一进程为该五个进程中的任一进程。其中,所述文件映射内核对象对应共享内存的地址,所有共享进程可以通过将所述文件映射内核对象对应的共享内存的地址映射到自己的地址空间,得到指向所述共享内存的指针,以实现对所述共享内存的访问。
其中,第一进程创建或打开与共享内存对应的文件映射内核对象,包括:当不存在其他共享进程创建的所述文件映射内核对象,所述第一进程创建所述文件映射内核对象,以使其他共享进程打开所述文件映射内核对象;或者当存在其他共享进程创建所述文件映射内核对象,所述第一进程打开所述文件映射内核对象。即所有共享进程通过该文件映射内核对象实现对所述共享内存的访问。具体地,第一进程或者其他共享进程以约定的名称创建所述文件映射内核对象,并通过该约定的名称打开所述文件映射内核对象。
继续在该实施例中,所述第二装置控制所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态;进一步地,当所述共享内存的访问状态为可访问时,所述第三装置控制所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据。
优选地,其中,所述可访问包括可写和可读,其中,所述第三装置用于:当所述共享内存的访问状态为可写时,所述第一进程向所述共享内存写入数据或者当所述共享内存的访问状态为可读时,所述第一进程从所述共享内存读取由第二共享进程写入的数据。在此,所述第二进程指在所有共享进程中除所述第一进程外的其他任一进程。本领域的技术人员应能理解,对于共享内存的访问包括写数据(例如修改数据)和读数据等,而写数据和读数据不能同时进行,因此,当所述共享内存处于可写状态时,可以实现写入数据,当所述共享内存处于可读状态时,可以实现读数据。
优选地,在本方案中,通过设置同步控制标记的方式,来对应所述共享内存的可写或可读状态,每个共享进程可以对应一个同步控制标记。具体地,在一种情况下,在确定当所有共享进程对应的同步控制标记都为可写值时,确定所述共享内存的访问状态为可写,在此,可写值是预先设定的某个数值,即当所有共享进程对应的同步控制标记都为该预先设定的某个数值时,所述共享内存的访问状态为可写,通常该数值被设置为零。
其中,所述第三装置控制所述第一进程向所述共享内存写入数据之后,还用于将所述第一进程对应的同步控制标记设为可读值,以使其他共享进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态为可读。本领域的技术人员应能理解,所述第一进程写入数据以便于其他共享进程读取数据,所述可读值用于提示其他共享进程可读取数据。
在另一种情况下,当存在任一其他共享进程对应的同步控制标记为可读值,所述第一进程确定所述共享内存的访问状态为可读,因此,所述第一进程从所述共享内存读取数据,在读取数据之后,所述第三装置控制所述第一进程修改所述第二共享进程对应的同步控制标记,其中,当除第二共享进程之外的所有共享进程从所述共享内存读取数据之后,所述同步控制标记被修改为可写值。
在本方案中,当任一共享进程向所述共享内存写入数据之后,会将对应的同步控制标记设为可读值,以提示其他共享进程可读取数据,而其他进程在读取数据之后会修改该可读值,以表示该进程读取了数据,直到除写入数据的进程之外的所有共享进程都读取了数据,所述同步控制标记被修改为可写值。这种方式,能够实现当其他所有共享进程都读完写入数据的进程最近一次写入的数据之后,才能写入新的数据。
优选地,所述设备还包括:第四装置(未示出),用于控制所述第一进程获取提示标记的状态;优选地,所述提示标记包括事件内核对象或者信号量。在此,当所述提示标记处于触发状态时,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态。其中,所述提示标记在触发所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态之后,还原为未触发状态;以及所述第一进程访问所述共享内存之后,所述设备还包括:第五装置(未示出),用于控制所述第一进程将所述提示标记设置为触发状态。
在该情形中,通过提示标记的方式,来提示任一共享进程在所述提示标记处于触发状态时,根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态,从而实现对所述共享进程的访问,而当任一共享进程访问所述共享内存之后,该进程会将所述提示标记设置为触发状态,以用于其他共享进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态。通过这种方式,实现了多个共享进程对所述共享内存访问的互斥。
在一个优选的实施例中,可写值可被设置为零,其中,所述第三装置用于:当存在任一其它共享进程对应的同步控制标记为非零时,所述第一进程从所述共享内存读取由第二共享进程写入的数据,并将所述第二共享进程对应的同步控制标记的值减一,同时将提示标记设置为触发状态;
当所有共享进程对应的同步控制标记为零时,所述第一进程向所述共享内存写入数据,并所述第一进程对应的同步控制标记设为预设值,同时将所述提示标记设置为触发状态,其中,所述预设值为所有共享进程的数量减一。
与现有技术相比,本申请通过第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存,然后所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态,当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据,通过这种方式实现了多个进程之间的多次双向正确的通信,提高了资源的共享效率。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (20)
1.一种用于进程间资源共享的方法,其中,该方法包括:
第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存;
所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态;
当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据。
2.根据权利要求1所述的方法,其中,第一进程创建或打开与共享内存对应的文件映射内核对象,包括:
当不存在其他共享进程创建的所述文件映射内核对象,所述第一进程创建所述文件映射内核对象,以使其他共享进程打开所述文件映射内核对象;
或者当存在其他共享进程创建所述文件映射内核对象,所述第一进程打开所述文件映射内核对象。
3.根据权利要求1所述的方法,其中,所述可访问包括可写和可读,其中,所述当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存包括:
当所述共享内存的访问状态为可写时,所述第一进程向所述共享内存写入数据。
4.根据权利要求3所述的方法,其中,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态包括:
当所有共享进程对应的同步控制标记都为可写值时,确定所述共享内存的访问状态为可写,
所述第一进程向所述共享内存写入数据之后,还包括:
将所述第一进程对应的同步控制标记设为可读值,以使其他共享进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态为可读。
5.根据权利要求1所述的方法,其中,所述可访问包括可写和可读,其中,所述当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存包括:
当所述共享内存的访问状态为可读时,所述第一进程从所述共享内存读取由第二共享进程写入的数据。
6.根据权利要求5所述的方法,其中,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态包括:
当存在任一其他共享进程对应的同步控制标记为可读值,确定所述共享内存的访问状态为可读;
所述第一进程从所述共享内存读取数据之后,还包括:
修改所述第二共享进程对应的同步控制标记,其中,当除第二共享进程之外的所有共享进程从所述共享内存读取数据之后,所述同步控制标记被修改为可写值。
7.根据权利要求1所述的方法,其中,该方法还包括:
所述第一进程获取提示标记的状态;
所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态包括:
当提示标记处于触发状态,所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态。
8.根据权利要求7所述的方法,其中,所述提示标记在触发所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态之后,还原为未触发状态;
以及所述第一进程访问所述共享内存之后,还包括:
所述第一进程将所述提示标记设置为触发状态。
9.根据权利要求8所述的方法,其中,所述当所述共享内存的访问状态为可访问时,所述第一进程访问所述共享内存包括:
当存在任一其它共享进程对应的同步控制标记为非零时,所述第一进程从所述共享内存读取由第二共享进程写入的数据,并将所述第二共享进程对应的同步控制标记的值减一,同时将提示标记设置为触发状态;
当所有共享进程对应的同步控制标记为零时,所述第一进程向所述共享内存写入数据,并所述第一进程对应的同步控制标记设为预设值,同时将所述提示标记设置为触发状态,其中,所述预设值为所有共享进程的数量减一。
10.根据权利要求7至9中任一项所述的方法,其中,所述提示标记包括事件内核对象或者信号量。
11.一种用于进程间资源共享的设备,其中,该设备包括:
第一装置,用于控制第一进程创建或打开与共享内存对应的文件映射内核对象,以通过所述文件映射内核对象访问所述共享内存;
第二装置,用于控制所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态;
第三装置,用于当所述共享内存的访问状态为可访问时,控制所述第一进程访问所述共享内存,以向所述共享内存写入数据或者从所述共享内存读取其它共享进程写入的数据。
12.根据权利要求11所述的设备,其中,所述第一装置用于:
当不存在其他共享进程创建的所述文件映射内核对象,控制所述第一进程创建所述文件映射内核对象,以使其他共享进程打开所述文件映射内核对象;
或者当存在其他共享进程创建所述文件映射内核对象,控制所述第一进程打开所述文件映射内核对象。
13.根据权利要求11所述的设备,其中,所述可访问包括可写和可读,其中,所述第三装置用于:
当所述共享内存的访问状态为可写时,控制所述第一进程向所述共享内存写入数据。
14.根据权利要求13所述的设备,其中,所述第二装置用于:
当所有共享进程对应的同步控制标记都为可写值时,确定所述共享内存的访问状态为可写,
所述第三装置控制所述第一进程向所述共享内存写入数据之后还用于:
将所述第一进程对应的同步控制标记设为可读值,以使其他共享进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态为可读。
15.根据权利要求11所述的设备,其中,所述可访问包括可写和可读,其中,所述第三装置用于:
当所述共享内存的访问状态为可读时,所述第一进程从所述共享内存读取由第二共享进程写入的数据。
16.根据权利要求15所述的设备,其中,所述第二装置用于:
当存在任一其他共享进程对应的同步控制标记为可读值,确定所述共享内存的访问状态为可读;
所述第三装置控制所述第一进程从所述共享内存读取数据之后还用于:
修改所述第二共享进程对应的同步控制标记,其中,当除第二共享进程之外的所有共享进程从所述共享内存读取数据之后,所述同步控制标记被修改为可写值。
17.根据权利要求11所述的设备,其中,该设备还包括:
第四装置,用于控制所述第一进程获取提示标记的状态;
所述第二装置用于:
当提示标记处于触发状态,控制所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态。
18.根据权利要求17所述的设备,其中,所述提示标记在触发所述第一进程根据所有共享进程对应的同步控制标记确定所述共享内存的访问状态之后,还原为未触发状态;
以及所述第一进程访问所述共享内存之后,还包括:
第五装置,用于控制所述第一进程将所述提示标记设置为触发状态。
19.根据权利要求18所述的设备,其中,所述第三装置用于:
当存在任一其它共享进程对应的同步控制标记为非零时,所述第一进程从所述共享内存读取由第二共享进程写入的数据,并将所述第二共享进程对应的同步控制标记的值减一,同时将提示标记设置为触发状态;
当所有共享进程对应的同步控制标记为零时,所述第一进程向所述共享内存写入数据,并所述第一进程对应的同步控制标记设为预设值,同时将所述提示标记设置为触发状态,其中,所述预设值为所有共享进程的数量减一。
20.根据权利要求17至19中任一项所述的设备,其中,所述提示标记包括事件内核对象或者信号量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611261263.3A CN106648939A (zh) | 2016-12-30 | 2016-12-30 | 用于进程间资源共享的方法与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611261263.3A CN106648939A (zh) | 2016-12-30 | 2016-12-30 | 用于进程间资源共享的方法与设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106648939A true CN106648939A (zh) | 2017-05-10 |
Family
ID=58838013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611261263.3A Pending CN106648939A (zh) | 2016-12-30 | 2016-12-30 | 用于进程间资源共享的方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106648939A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108171862A (zh) * | 2018-01-08 | 2018-06-15 | 北京值得买科技股份有限公司 | 一种发号方法及发号器 |
CN109086146A (zh) * | 2018-07-26 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种基于Boost的相对可靠的进程间通信方法 |
CN109144725A (zh) * | 2018-08-02 | 2019-01-04 | 北京达佳互联信息技术有限公司 | 文件处理方法、装置、电子设备及存储介质 |
CN109542648A (zh) * | 2018-11-23 | 2019-03-29 | 凌云光技术集团有限责任公司 | 一种跨进程通信的方法及装置 |
CN109783144A (zh) * | 2017-11-13 | 2019-05-21 | 深圳市创客工场科技有限公司 | 虚拟环境交互实现中变量的处理方法、装置和存储介质 |
CN110069346A (zh) * | 2019-04-26 | 2019-07-30 | 杭州迪普科技股份有限公司 | 多进程间资源共享方法、装置、电子设备 |
CN111796948A (zh) * | 2020-07-02 | 2020-10-20 | 长视科技股份有限公司 | 一种共享内存访问方法、装置、计算机设备和存储介质 |
CN112883003A (zh) * | 2021-04-27 | 2021-06-01 | 智道网联科技(北京)有限公司 | 车载终端共享数据方法及装置 |
CN113127218A (zh) * | 2019-12-31 | 2021-07-16 | 深圳市优必选科技股份有限公司 | 机器人的实时通信方法、装置、系统、控制器和机器人 |
CN114020481A (zh) * | 2021-10-22 | 2022-02-08 | 山东浪潮科学研究院有限公司 | 一种防止多个进程访问同一任意波形发生器的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
US20110265093A1 (en) * | 2010-04-27 | 2011-10-27 | Hitachi, Ltd. | Computer System and Program Product |
CN103441831A (zh) * | 2013-08-22 | 2013-12-11 | 焦点科技股份有限公司 | 一种双进程间的全双工通信及互保方法和系统 |
CN103514053A (zh) * | 2013-09-22 | 2014-01-15 | 中国科学院信息工程研究所 | 一种基于共享内存的进程间通讯方法 |
-
2016
- 2016-12-30 CN CN201611261263.3A patent/CN106648939A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1740978A (zh) * | 2004-08-23 | 2006-03-01 | 华为技术有限公司 | 实现共享内存数据库的方法及内存数据库系统 |
US20110265093A1 (en) * | 2010-04-27 | 2011-10-27 | Hitachi, Ltd. | Computer System and Program Product |
CN103441831A (zh) * | 2013-08-22 | 2013-12-11 | 焦点科技股份有限公司 | 一种双进程间的全双工通信及互保方法和系统 |
CN103514053A (zh) * | 2013-09-22 | 2014-01-15 | 中国科学院信息工程研究所 | 一种基于共享内存的进程间通讯方法 |
Non-Patent Citations (4)
Title |
---|
FARSIGHT2009: "linux实现共享内存同步的四种方法", 《HTTP:// HOME.EEWORLD.COM.CN/MY/SPACE-UID-138607-BLOGID-226618.HTML》 * |
LANMANCK: "linux进程通信(一)--共享内存+信号量,代码示例", 《HTTPS://BLOG.CSDN.NET/LANMANCK/ARTICLE/DETAILS/6100019》 * |
张华等: "基于Linux 的同步共享内存的研究与实现", 《湖南工业职业技术学院学报》 * |
沙漠里的海豚: "Linux下用信号量实现对共享内存的访问保护(一)", 《WEB.ARCHIVE.ORG/WEB/20111009043940/HTTP://WWW.CPPBLOG.COM/ZJL-1026-2001/ARCHIVE/2010/03/03/108768.HTML》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783144A (zh) * | 2017-11-13 | 2019-05-21 | 深圳市创客工场科技有限公司 | 虚拟环境交互实现中变量的处理方法、装置和存储介质 |
CN108171862A (zh) * | 2018-01-08 | 2018-06-15 | 北京值得买科技股份有限公司 | 一种发号方法及发号器 |
CN109086146A (zh) * | 2018-07-26 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种基于Boost的相对可靠的进程间通信方法 |
CN109144725A (zh) * | 2018-08-02 | 2019-01-04 | 北京达佳互联信息技术有限公司 | 文件处理方法、装置、电子设备及存储介质 |
CN109144725B (zh) * | 2018-08-02 | 2020-11-17 | 北京达佳互联信息技术有限公司 | 文件处理方法、装置、电子设备及存储介质 |
CN109542648A (zh) * | 2018-11-23 | 2019-03-29 | 凌云光技术集团有限责任公司 | 一种跨进程通信的方法及装置 |
CN110069346A (zh) * | 2019-04-26 | 2019-07-30 | 杭州迪普科技股份有限公司 | 多进程间资源共享方法、装置、电子设备 |
CN110069346B (zh) * | 2019-04-26 | 2021-07-23 | 杭州迪普科技股份有限公司 | 多进程间资源共享方法、装置、电子设备 |
CN113127218A (zh) * | 2019-12-31 | 2021-07-16 | 深圳市优必选科技股份有限公司 | 机器人的实时通信方法、装置、系统、控制器和机器人 |
CN111796948A (zh) * | 2020-07-02 | 2020-10-20 | 长视科技股份有限公司 | 一种共享内存访问方法、装置、计算机设备和存储介质 |
CN111796948B (zh) * | 2020-07-02 | 2021-11-26 | 长视科技股份有限公司 | 一种共享内存访问方法、装置、计算机设备和存储介质 |
CN112883003A (zh) * | 2021-04-27 | 2021-06-01 | 智道网联科技(北京)有限公司 | 车载终端共享数据方法及装置 |
CN114020481A (zh) * | 2021-10-22 | 2022-02-08 | 山东浪潮科学研究院有限公司 | 一种防止多个进程访问同一任意波形发生器的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106648939A (zh) | 用于进程间资源共享的方法与设备 | |
CN104238963B (zh) | 一种数据存储方法、存储装置及存储系统 | |
CN105468300B (zh) | Ip硬盘的管理方法和装置 | |
US20090210464A1 (en) | Storage management system and method thereof | |
US20140223089A1 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
US8621134B2 (en) | Storage tiering with minimal use of DRAM memory for header overhead | |
CN105830059A (zh) | 文件访问方法、装置及存储设备 | |
CN109445685B (zh) | 一种用户态文件系统处理方法 | |
JP2015515047A5 (zh) | ||
CN107111605A (zh) | 管理文件访问的方法和系统 | |
CN105579977A (zh) | 访问文件的方法、装置及存储系统 | |
CN104281535B (zh) | 一种映射表在内存中的处理方法和装置 | |
CN107451271A (zh) | 一种哈希表处理方法、装置、设备及存储介质 | |
CN106294423A (zh) | 数据库分表的写入方法及装置 | |
CN106960156A (zh) | 基于应用程序的数据加密及访问方法、装置 | |
US9411513B2 (en) | Sensitive data file attribute | |
CN108614668A (zh) | 基于kv模型的数据访问方法与固态存储设备 | |
CN107562367A (zh) | 基于软件化存储系统读写数据的方法以及装置 | |
CN108399050A (zh) | 一种数据处理方法及装置 | |
US9703593B2 (en) | Apparatus and method for memory overlay | |
US9330016B2 (en) | Systems and methods for managing read-only memory | |
US20170286312A1 (en) | Delegated media translation layer in a storage appliance | |
US20110307525A1 (en) | Virtual storage device | |
CN103348653A (zh) | 扩容的方法和设备、以及访问数据的方法和设备 | |
CN106919342A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170510 |