CN1472663A - 一种共享临界区数据传递的方法 - Google Patents

一种共享临界区数据传递的方法 Download PDF

Info

Publication number
CN1472663A
CN1472663A CNA021363528A CN02136352A CN1472663A CN 1472663 A CN1472663 A CN 1472663A CN A021363528 A CNA021363528 A CN A021363528A CN 02136352 A CN02136352 A CN 02136352A CN 1472663 A CN1472663 A CN 1472663A
Authority
CN
China
Prior art keywords
critical section
pointer
content
write
shared
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.)
Granted
Application number
CNA021363528A
Other languages
English (en)
Other versions
CN1287306C (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.)
ZTE Corp
Original Assignee
Shanghai No 2 Research Institute of ZTE Corp
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 Shanghai No 2 Research Institute of ZTE Corp filed Critical Shanghai No 2 Research Institute of ZTE Corp
Priority to CN 02136352 priority Critical patent/CN1287306C/zh
Publication of CN1472663A publication Critical patent/CN1472663A/zh
Application granted granted Critical
Publication of CN1287306C publication Critical patent/CN1287306C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

本发明提出一种共享临界区数据传递的方法,特别适合嵌入式领域中两个处理器或两个设备之间通过共享内存双向通讯的情况。包括:将共享临界区分成完全独立的两块,每块临界区各拥有自己的控制结构,包括写指针和读指针;由通讯双方一起对两块临界区的控制结构初始化;然后按上下行方向选择相应的临界区,重复以下过程进行通讯:发送方将内容放入临界区;发送方修改写指针;接受方取读指针,获悉有新内容;接受方取内容,修改读指针。采用本发明所述方法,与现有技术相比,提高了通过共享临界区传递数据的效率,降低了编程的复杂度。

Description

一种共享临界区数据传递的方法
技术领域
本发明提供一种共享临界区数据传递的高效方法,特别适合嵌入式领域中两个处理器或两个设备之间通过共享内存双向通讯的情况。
背景技术
在两个处理器或者两个设备之间通过共享内存进行通讯时,为避免同时读写,造成混乱,通常采用信号量控制等方法,使得双方对临界区的操作互斥,即任一时刻只能有一方可以读或写。
如图1所示,设备1向设备2传递数据时,通过一个共享临界区,称之为下行信息区,设备1下行信息区的写操作和设备2对下行信息区的读操作,要通过程序保证不能同时操作。
设备2向设备1传递数据时,将这个共享临界区称之为上行信息区,设备1对上行信息区的读操作和设备2对上行信息区的写操作,也是不能同时进行的。
通过共享临界区进行数据通信,如果整个临界区只作为一块来处理,任何一方进行读、写操作都需要获得许可证,冲突概率非常高,所以往往是按如图1所示,将临界区分成两块,一块用于下行数据,另一块用于另一方向的上行数据,每一块都是一方写信息,另一方读信息。作为每一块来说,采用现有技术的做法,仍不能完全避免读写冲突。
采取互斥的方法处理共享临界区间的数据传递,处理起来编程麻烦,而且效率较低。
发明内容
本发明要解决的技术问题是为提高在两个处理器或者两个设备之间通过共享内存进行通讯时的效率,降低编程的复杂度,提出一种共享临界区数据传递的方法,双方可以同时操作临界区,大大提高系统效率。
本发明的技术方案是这样的:
首先把整个共享临界区分成完全独立的两块,分别用于上行或下行的数据,其大小与上、下行数据流量成正比,若上下行数据流程差不多,可将临界区基本等分;每块临界区各拥有自己的控制结构,包括写指针和读指针,临界区为环形;
其次由通讯双方一起对这两块临界区的控制结构进行初始化;
然后双方就可以按上下行方向选择相应的临界区,重复以下过程进行通讯:
1.发送方检查临界区有无空间,若无,延迟后再发;
2.发送方将内容放入临界区;
3.发送方修改写指针,如果系统如果采取中断方式处理时,则通知对方;
4.接受方取读指针,获悉有新内容;
5.接受方取内容,修改读指针,如果系统如果采取中断方式处理时,则通知对方。
采用本发明所述方法,与现有技术相比,提高了通过共享临界区传递数据的效率,降低了编程的复杂度。
附图说明图1为两个设备之间通过临界区进行通讯的示意图;图2表示环形临界区通讯的正常、空、满的情况;图3给出了共享临界区数据传递方法中数据区的两种具体实例。
具体实施方式
下面将参照本发明的附图详细描述本发明。
图1为两个设备之间通过临界区进行通讯的示意图;如前面所述,采用现有技术的做法,仍不能完全避免读写冲突。但是,如果把每块都看成环形结构,采用本发明所述方法,就可以完全避免读写冲突,达到通信双方可同时操作的效果。本发明中,整个共享临界区分成两块,分割后的两块临界区完全独立,每块功能单一,双方的操作也得到简化,对于任何一块来说,一方只对它进行写操作,而另一方只对它进行读操作,操作可以同时进行。把两块结合到一起看,就可以达到临界区双方可以同时对临界区同时读写的效果,而不需要通过信号量控制。
图2中,(a)表示环形临界区通讯的正常情况;(b)表示环形临界区为空的情况,此时读指针=写指针;(c)表示环形临界区为满的情况,此时写指针=读指针-1;
整块临界区可以看成一个环型,缓冲区用到末尾后自动回到开头,设置一个写指针和一个读指针,写指针在前,读指针在后;
其中写指针指向当前缓冲环可写空间起始位置,读指针指向当前缓冲环中可读内容起始位置,只有当读写指针一样时,读指针指向的位置才无内容可读;
从读指针到写指针之间是已经放入到临界区的信息,接受方可以读出;从写指针环回到读指针位置之间的空间就是可以用来存放传输内容的空间;
在每块临界区内设置一个控制结构,用于记录临界区内信息的状况,以及信息的读写指针位置。
下面以从设备1到设备2下行信息的传输操作为例说明该方法的具体步骤:
第一步,由设备1或设备2初始化临界区控制结构,包括设置读指针BeginPtr和写指针EndPtr为共享临界区的首地址,双方同步后再进行通讯状态;
第二步,设备1要向临界区送内容;
1、当写指针EndPtr等于读指针BeginPtr时,缓冲区全空;
2、当写指针EndPtr小于读指针BeginPtr时,可写缓冲区长度为:(读指针BeginPtr-写指针EndPtr1-1),如图3(b);
3、当写指针EndPtr大于读指针BeginPtr时,可写缓冲区长度为:(尾地址-写指针EndPtr+1)+(读指针BeginPtr-首地址)-1,如图3(a);
第三步,设备1根据临界区大小向临界区写入内容,然后修改写指针,并通知设备2或由设备2定时扫描;
第四步设备2被激活,查询临界区;
1、当读指针BeginPtr等于写指针EndPtr时,没有可读的内容。
2、当读指针BeginPtr小于写指针EndPtr时,可读消息内容长度为:(写指针EndPtr-读指针BeginPtr),如图3(a)。
3、当读指针BeginPtr大于写指针EndPtr时,可读消息内容长度为:(尾地址-读指针BeginPtr+1)+(写指针EndPtr-首地址),如图3(b)。
第五步,读出消息内容,进行相应处理。同时将读指针BeginPtr移动至写指针EndPPtr处,并通知设备1或由设备1定时扫描以继续发送,重复步骤二~五。
本发明之所以能够实现通讯双方可以同时操作临界区,不仅仅是因为将共享临界区分成了互不相干的两块,而且对于每块来说,操作双方也是可以同时对它进行操作的;
这是因为写指针永远在读指针的前面,如果一方正在进行读取操作时,另一方向临界区添加内容,修改写指针,则可读的内容更多,不会影响原来的读操作,只是取过之后它还可以再取刚刚放入的内容;同样,如果一方正在进行写操作时,另一方读走内容,修改了读指针,只会使写空间变得更大,写操作结束后,如果还有内容,还可以立即再进行一次写操作。
图3为共享临界区数据传递方法中数据区的两种具体实例:其中,图3(a)为写指针大于读指针的情况;图3(b)为写指针小于读指针的情况,此时信息已从临界区尾部掉头。在前面图2中,我们形象说明了临界区的环形结构情况,并按信息量用(a)、(b)、(c)分别说明了一般情况、全空、全满的情况,在环形结构中,其信息是一个连续存储段,而实际情况临界区不可能首尾连在一起,对于临界区非空情形,即图2的(a)和(c),都有如图3所示的两种可能。
本发明在使用中需特别注意以下几点:
(1)读取内容后再移动读指针,否则可能导致内容尚未读走就被覆盖;
(2)写完内容后再移动写指针,否则可能导致内容尚未填好就被读走;
(3)由于临界区往往较大,以单字节表示读、写指针通常是不够的;而(这里有些不通顺)字节就可能会出现一方正在存取指针时,另一方读出的指针部分为新的,还有部分为旧的现象,所以必须保证获取的读、写指针正确;本发明采用的办法是获取指针后等待一个很短的延时,然后再获取一次,如此下去,直至连续两次获取的指针相同为止。
(4)当读指针与写指针相等时,可能有两种理解,临界区满或空,为避免二义性,本发明将临界区空出一个字节,即读指针与写指针相等时,表示缓冲区空;就是图2(b)中的情况;当写指针在读指针后面一个字节时,表示临界区满,就是图2(c)中的情况。

Claims (8)

1、一种共享临界区数据传递的方法,其特征在于:
首先把整个共享临界区分成完全独立的两块环形临界区,每块临界区各拥有自己的控制结构,包括写指针和读指针;
其次由通讯双方一起对这两块临界区的控制结构进行初始化;
然后双方就可以按上下行方向选择相应的临界区,重复以下过程进行通讯:
发送方将内容放入临界区;
发送方修改写指针;
接受方取读指针,获悉有新内容;
接受方取内容,修改读指针。
2、根据权利要求1所述的共享临界区数据传递的方法,其特征在于,在所述发送方将内容放入临界区之前,还包括:发送方根据读指针和写指针是否相等,判断临界区有无空间,若无空间,延迟后再发。
3、根据权利要求1所述的共享临界区数据传递的方法,其特征在于,所述完全独立的两块共享临界区,分别用于上行或下行的数据,其大小与上、下行数据流量成正比,若上下行数据流量基本相等,则将临界区等分。
4、根据权利要求1、2或3所述的共享临界区数据传递的方法,其特征在于,如果系统如果采取中断方式处理时,发送方修改写指针后,或者接受方取内容,修改读指针后,都通知对方。
5、根据权利要求1所述的共享临界区数据传递的方法,其特征在于,为保证获取的读、写指针正确,获取指针后等待一个很短的延时,然后再获取一次,如此下去,直至连续两次获取的指针相同为止。
6、根据权利要求1所述的共享临界区数据传递的方法,其特征在于,所述通讯双方一起对这两块临界区的控制结构进行初始化,包括设置读指针BeginPtr和写指针EndPtr为共享临界区的首地址,双方同步后再进行通讯状态。
7、根据权利要求6所述的共享临界区数据传递的方法,其特征在于,当读指针等于写指针时,表示环形临界区为空;当写指针等于读指针减一时,表示环形临界区为满。
8、根据权利要求1所述的共享临界区数据传递的方法,其特征在于,读取内容后再移动读指针,写完内容后再移动写指针。
CN 02136352 2002-07-30 2002-07-30 一种共享临界区数据传递的方法 Expired - Lifetime CN1287306C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 02136352 CN1287306C (zh) 2002-07-30 2002-07-30 一种共享临界区数据传递的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 02136352 CN1287306C (zh) 2002-07-30 2002-07-30 一种共享临界区数据传递的方法

Publications (2)

Publication Number Publication Date
CN1472663A true CN1472663A (zh) 2004-02-04
CN1287306C CN1287306C (zh) 2006-11-29

Family

ID=34146422

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 02136352 Expired - Lifetime CN1287306C (zh) 2002-07-30 2002-07-30 一种共享临界区数据传递的方法

Country Status (1)

Country Link
CN (1) CN1287306C (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117261A (zh) * 2009-12-30 2011-07-06 重庆重邮信科通信技术有限公司 一种芯片内部处理器之间的通信方法
CN103559079A (zh) * 2013-11-15 2014-02-05 深圳市道通科技有限公司 一种基于共享内存的数据存取方法及装置
CN106802815A (zh) * 2016-12-21 2017-06-06 北京小鸟看看科技有限公司 一种串口闪存在线烧录方法、装置、系统和电子设备
CN107239415A (zh) * 2016-03-28 2017-10-10 华为技术有限公司 一种执行临界区操作的方法及装置
CN108768884A (zh) * 2018-04-27 2018-11-06 江苏中科芯核电子科技有限公司 一种基于环形缓冲区的无线通信数据处理方法
CN117407356A (zh) * 2023-12-14 2024-01-16 芯原科技(上海)有限公司 基于共享内存的核间通信方法、装置、存储介质及终端

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117261A (zh) * 2009-12-30 2011-07-06 重庆重邮信科通信技术有限公司 一种芯片内部处理器之间的通信方法
CN102117261B (zh) * 2009-12-30 2015-04-15 重庆重邮信科通信技术有限公司 一种芯片内部处理器之间的通信方法
CN103559079A (zh) * 2013-11-15 2014-02-05 深圳市道通科技有限公司 一种基于共享内存的数据存取方法及装置
CN107239415A (zh) * 2016-03-28 2017-10-10 华为技术有限公司 一种执行临界区操作的方法及装置
CN107239415B (zh) * 2016-03-28 2020-02-14 华为技术有限公司 一种执行临界区操作的方法及装置
CN106802815A (zh) * 2016-12-21 2017-06-06 北京小鸟看看科技有限公司 一种串口闪存在线烧录方法、装置、系统和电子设备
CN108768884A (zh) * 2018-04-27 2018-11-06 江苏中科芯核电子科技有限公司 一种基于环形缓冲区的无线通信数据处理方法
CN117407356A (zh) * 2023-12-14 2024-01-16 芯原科技(上海)有限公司 基于共享内存的核间通信方法、装置、存储介质及终端
CN117407356B (zh) * 2023-12-14 2024-04-16 芯原科技(上海)有限公司 基于共享内存的核间通信方法、装置、存储介质及终端

Also Published As

Publication number Publication date
CN1287306C (zh) 2006-11-29

Similar Documents

Publication Publication Date Title
US5477541A (en) Addressing technique for storing and referencing packet data
CN101504617B (zh) 一种基于处理器共享内存的数据发送方法及装置
KR950002709B1 (ko) 데이타 전송 방법
JP2809961B2 (ja) マルチプロセッサ
CN1859325A (zh) 基于链表的进程间消息传递方法
ITRM20120094A1 (it) Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale
CN113760578B (zh) 跨进程快速传输大数据的方法、装置、设备及计算机程序
CN1286038C (zh) 基于双环形队列、非中断式pci通信方法
CN1122929C (zh) 在远程存储器中控制原子操作的方法以及实现这种方法的装置
CN1472663A (zh) 一种共享临界区数据传递的方法
CN100534065C (zh) 用于调整系统间信道字的传输速率的数据映射设备和方法
CA2172355C (en) A data transfer control device for executing data transfer by controlling a cluster and another cluster
CN101087410A (zh) 算术编码电路和算术编码控制方法
CN113778706A (zh) 一种基于amp架构的操作系统核间通信方法
JPH0828732B2 (ja) 伝送制御方法
US6205251B1 (en) Device and method for decompressing compressed video image
CN116170831B (zh) 一种基于5g网络的数据多通道传输方法、装置、设备及介质
KR940002722A (ko) 2개의 cpu로 구성된 시스템에서의 cpu간 데이타 전송 및 동기화방법
JPS6010847A (ja) メツセ−ジ送信におけるパツキング方式
JP2984594B2 (ja) マルチクラスタ情報処理システム
EP0892354A1 (en) Efficient representation and transmission of objects with variants
JPH0511341B2 (zh)
CN116932454A (zh) 数据传输方法、装置、电子设备及计算机可读存储介质
CN118427151A (zh) 一种数据传输方法、装置、设备、介质和产品
CN112965950A (zh) 一种实现流式数据写入对象存储的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: ZTE CO., LTD.

Free format text: FORMER OWNER: SHENZHENG CITY ZTE CO., LTD. SHANGHAI SECOND INSTITUTE

Effective date: 20050422

C10 Entry into substantive examination
C41 Transfer of patent application or patent right or utility model
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20050422

Address after: Shenzhen Nanshan District hi tech Industrial Park Science and technology south road Zhongxing building law department

Applicant after: ZTE Corp.

Address before: No. 396, Shanghai, Guilin Road

Applicant before: Shenzhen ZTE Co.,Ltd. Shanghai Second Research Institute

C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20061129

CX01 Expiry of patent term