CN101295269B - 一种基于事务的构件交互同步的方法 - Google Patents

一种基于事务的构件交互同步的方法 Download PDF

Info

Publication number
CN101295269B
CN101295269B CN2008100616465A CN200810061646A CN101295269B CN 101295269 B CN101295269 B CN 101295269B CN 2008100616465 A CN2008100616465 A CN 2008100616465A CN 200810061646 A CN200810061646 A CN 200810061646A CN 101295269 B CN101295269 B CN 101295269B
Authority
CN
China
Prior art keywords
client
service
service end
component
priority
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.)
Expired - Fee Related
Application number
CN2008100616465A
Other languages
English (en)
Other versions
CN101295269A (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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN2008100616465A priority Critical patent/CN101295269B/zh
Publication of CN101295269A publication Critical patent/CN101295269A/zh
Application granted granted Critical
Publication of CN101295269B publication Critical patent/CN101295269B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种基于事物的构件交互同步的方法,该方法通过构件化嵌入式操作系统实现构件的客户端和服务端之间的数据交互通讯,当服务端收到客户端发送的请求时服务端获取所述基于事务的交互同步构件的事务上下文,根据所述的基于事务的构件交互同步机制的事务上下文确定本次构件交互的优先级,以客户端的优先级运行。本发明还公开了一种基于事务的构件化交互模型,该模型基于事务上下文,实现构件之间准确的交互。本发明方法通过引入基于事务的交互同步构件的事务上下文,解决了独立构件之间的优先级倒置问题,并在多内核构件化嵌入式操作系统平台Pcanel上得到了实现,保证了构件之间交互的高效率和低开销。

Description

一种基于事务的构件交互同步的方法
技术领域
本发明属于计算机数据交互通讯领域,尤其涉及一种计算机的基于事务的构件化嵌入式操作系统的构件交互同步的方法。
背景技术
构件是系统中的可重用的部分,构件的状态及其行为被构件接口所封装。构件之间通过接口相互通信(远程方法调用)。构件之间一般通过IPC机制进行交互,具有良好的隔离错误的能力,保护受信任的构件不被干扰或攻击。IPC(Inter-Process Communication)是指共享″命名管道″的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。由于构件化操作系统在运行过程中必须频繁的使用IPC,因此必须保证IPC的效率。由于传统的构件间交互一般采用的是客户端/服务端模式的IPC,调用者将阻塞直到被调用者发回响应结果,因此,两个构件的线程间建立了某种依赖关系,由此在现有技术基础上构件在交互的过程中可能引起优先级倒置的问题。
目前,客户端/服务端模式的IPC主要用于支持构件之间的远程方法调用,由于它是基于一种同步的消息传递方式,用于实时系统时会导致一些问题。
一次典型的构件交互过程如图1所示,其中包含一个客户端和一个服务端。在一次完整的远程方法调用中,服务端应处于特定的状态,等待接收来自客户端的请求;客户端首先是作为发送者,向服务端发送一个请求。一旦服务端接受请求后,它的线程得到执行,最后计算出一个结果,在服务端将该结果返回给客户端的过程中,服务端是发送者的角色,而客户端是接收者的角色。客户端在发送请求后一直处于阻塞状态,直到服务端返回结果或者收到其它线程发起的抢占式IPC。服务端从接收到请求那一刻起离开阻塞状态,当把结果返回给客户端后再次处于阻塞状态等待新的请求。
虽然消息传递过程不涉及线程调度,其它所有线程保持原有状态不变,但是在下一个调度周期到来时,对线程进行调度后有可能发生优先级倒置问题。如图2所示,高优先级的客户端C向低优先级的服务端S发送了请求,在S的运行过程中,发生了一次调度,中等优先级的客户端X抢占S的运行,结果是,中等优先级的X导致高优先级的C不能及时得到响应。
另一种情况如图3所示,中等优先级的客户端X向服务端S发送了请求,在服务端S的处理过程中,发生了一次调度,高优先级的客户端C进入运行,并向服务端S发送请求,但是在客户端/服务端模式的IPC机制下,服务端S必须处理完客户端X的请求后才能接收客户端C的请求,导致高优先级的客户端C不能得到及时响应。
发明内容
本发明提供了一种基于事物的构件化嵌入式操作系统的构件交互同步的方法,该方法有效地解决了客户端/服务端模式下进程间通信引发的优先级倒置问题,保证了构件之间交互的高效率和低开销。
本发明还提供了一种基于事务的构件化交互模型,该模型基于事务上下文,实现构件之间准确的交互。
一种基于事务的构件交互同步的方法,该方法包括:
系统启动后,交互同步的构件的客户端向的交互同步的构件的服务端发送请求(即调用远程方法),客户端向服务器发起请求后,服务端将客户端的构件交互的事务上下文和执行上下文存入服务端的服务栈,根据所述的事务上下文确定客户端的优先级,优先级高的客户端先服务;在执行请求的过程中,若有优先级更高的客户端请求,服务端将优先级更高的客户端的构件交互的事务上下文和执行上下文存入服务端的服务栈内,创建一个新的初始上下文,保存当前的执行状态,服务端的服务栈通过状态转换,切换到所述优先级更高的客户端的构件交互的执行上下文,执行所述优先级更高的客户端的服务请求;所述优先级更高的客户端的请求执行完毕后,初始客户端的构件交互的事务上下文和执行上下文移出服务栈,服务端的服务栈恢复初始上下文,继续执行初始客户端的请求执行完毕后将结果返回给初始客户端。
本发明所述的一种基于事务的构件化交互模型由用于交互同步的构件组成,构件之间通过接口相互通信(即远程方法调用),该模型基于事务上下文,实现构件之间准确的交互。
所述的交互同步的构件包括:
服务端消息接口Ms,是由服务端接收的消息集,用于接收和处理事务请求;
客户端消息接口Mc,是服务端要求客户接收的消息集,用于发送事务请求;
消息传递的协议P;
接口API,是构件交互协议的应用程序的编程接口;
构件交互时的事务上下文TC,用于存放与调用有关的信息,包括线程的优先级、执行时间和服务质量QoS(Quality of Service);
构件交互时的执行上下文EC,用于存放寄存器组以及线程的状态信息,包括构件接口是否处于IPC等待状态信息。
所述的服务端包括一个可以存放一组TC和EC的服务栈,服务栈相当于一个状态和行为转换系统,它是四个集合组成的四元组(S,A,T,I),S是组状态(states)集合;A是一个行为(actions)集合;T是一个转换(transactions)集合;I是一个初始状态(initial states)集合。服务栈的状态S反映了服务栈内部接受的所有请求的上下文(EC和TC)。集合之间有以下的关系:
Figure G2008100616465D00031
对于任一(s1,a,s2)∈T,可以写成服务栈可以进行状态转换。当构件的远程方法被调用时,运行第一条指令前线程的EC定义为服务栈的初始上下文。S1指转换前的组状态,S2是转换后的组状态。
所述的服务栈的状态转换方法为:
高优先级的事务请求TC进入服务栈;
服务栈状态根据转换集合T发生改变,
Figure G2008100616465D00033
其中
Figure G2008100616465D00034
高优先级的事务请求TC执行完后,服务栈状态恢复到未执行前的状态,此时s′=tail s。
本发明方法通过引入基于事务的交互同步构件的事务上下文,解决了独立构件之间的优先级倒置问题。通过交互同步构件服务端的服务栈,使得一个构件的服务端能够同时向多个构件的客户端线程提供共享访问,有效的支持抢占式的远程方法调用。
附图说明
图1是同步消息的传递模型。
图2是一般的交互方法抢占运行引起的优先级倒置的模型。
图3是一般的交互方法客户端/服务端模式引起优先级倒置。
图4是本发明方法的流程图。
图5是基于事务的构件交互模型。
图6是基于事务的远程方法调用的模型。
图7是基于事务的抢占式的远程方法调用的模型。
具体实施方式
下面结合附图对本发明基于构件化嵌入式操作系统的构件交互同步的方法的实施例进行详细说明。
如图4所示,嵌入式操作系统启动后,一个构件的客户端A向另一个构件的服务端A发送请求(即调用远程方法),服务端A将客户端A的TC和EC存入服务栈。判断服务端A是否正在执行更高级别的客户端B的请求,若是,则服务端A创建一个新的初始上下文,继续执行客户端B的请求,执行完毕,服务端A将结果返回给客户端B。服务栈通过状态转换,使服务端A的状态转换到客户端A的TC,服务端A共享客户端A的TC,执行客户端A的请求。若否,则直接执行客户端A的请求,在执行的过程中,判断是否有更高级别的客户端C向服务端发送请求。若是,服务端A将客户端C的TC和EC存入服务端A的服务栈内,创建一个新的初始上下文,保存当前的执行状态。服务端A的服务栈通过状态转换,转换到客户端C的TC,执行客户端C的服务请求,客户端C的请求执行完毕后客户端C的TC和EC移出服务栈,服务端A将结果返回给客户端C。服务端A的服务栈恢复初始上下文,服务端A继续执行客户端A的请求。若否,则继续执行客户端A的请求,执行过程中,判断服务端A是否需要其他服务端协调完成请求任务,若是,服务端A发送请求给需要协助的服务端B,服务端B和服务端A共享客户端A的TC,服务端B执行完毕后将结果返回给服务端A,服务端A继续执行客户端A的请求。若否,服务端A继续执行客户端A的请求,执行完毕,客户端A的TC和EC移出服务栈,服务端A将执行结果返回给客户端A,请求服务结束。
上述方法中的服务栈的状态转换方法为:
高优先级的事务请求TC进入服务栈;
服务栈状态根据转换集合T发生改变,
Figure G2008100616465D00051
其中
高优先级的事务请求TC执行完后,服务栈状态恢复到未执行前的状态,此时s′=tail s。
如图5所示的是基于事务构件交互的模型。客户端构件和服务端构件通过事务上下文实现同步消息的传递。
如图6所示,构件A创建一个新的TC,这个TC包含优先级为5以及2ms的执行时间,而且可以进一步扩展加入更复杂的服务质量信息QoS(Quality of Service)。信息构件A的客户端向构件B的服务端发送事务请求,即调用远程方法,系统的上下文环境从构件A的EC切换到构件B的EC,这意味着B构件进入A构件调用线程的执行路径。但系统仍保持调用者的TC不变,构件B与构件A共享一个TC。构件B为了完成构件A发送的事务请求,向构件C发送事务请求,构件C又向构件D发送请求,这时构件A、B、C、D共享由构件A创建的TC,构件D事务执行结束后将结果返回给构件C,构件C事务执行结束后将结果返回给构件B,构件B事务执行结束后将结果返回给构件A,构件A的客户端发送的事务请求执行完毕。由于TC中包括构件A线程的优先级和可执行的时间,因此,服务端使用构件A客户端的剩余执行时间并且继承了构件A客户端的优先级协议,以构件A客户端的优先级运行,服务端在执行构件A客户端的请求时就不会被其他优先级比构件A的优先级更低的客户端抢占。
如图7所示,客户端X向服务端S发送请求,服务端S的服务栈接收到客户端X的请求时将客户端X的TC和EC存入栈内。服务端S使用客户端X的TC并执行客户端X发送的请求,此时客户端X处于阻塞状态。在执行过程中,另一个较高优先级客户端C,向服务端S发送请求,服务端S在将结果返回给客户端X之前,接收客户端C的请求,并将客户端C的TC和EC存入栈内,这时服务端S就通过创建一个新的初始上下文,连同更高优先级的客户端C的TC一起置入服务栈。服务端S的服务栈通过状态转换
Figure G2008100616465D00061
其中将服务器S处于客户端X的TC的状态转换为处于客户端C的TC状态,服务器执行客户端C的事务请求。当客户端C的事务请求执行完毕将结果返回给客户端C后,客户端C的TC移出服务器S的服务栈,服务端S恢复到客户端X的执行状态,继续执行客户端X的事务请求,执行完毕后将结果返回给客户端X。
本发明方法可在多内核构件化嵌入式操作系统Pcanel平台上实现,Pcanel具有5个内核,各个内核保持相对独立并协调工作。其中C-kernel是构件模型SmartCM的内核,其基本功能是,支持线程调度,地址空间管理和同步消息传递,基于事务的构件交互模型正是在C-Kernel中得到了良好的实现。在一个不失一般的例子中,基于事务的构件交互模型由四个构件A,B,C,D组成,它们在依次调用远程方法时共享相同的事务上下文TC,事务的执行路径由三次远程方法调用和三次结果返回组成。
构件之间的交互由一个个六元组构成:I=(Ms,Mc,P,API,TC,EC)。
Ms是由服务端接收的消息集,即服务端消息接口,服务端即为一个可以存放一组TC和EC的服务栈,服务栈相当于一个状态和行为转换系统,它包含一个四元组(S,A,T,I),S是组状态(states)集合;A是一个行为(actions)集合;T是一个转换(transactions)集合;I是一个初始状态(initial states)集合。服务栈的状态S反映了服务栈内部接受的所有请求的上下文(EC和TC)。集合之间有以下的关系:
Figure G2008100616465D00063
对于任一(s1,a,s2)∈T,可以写成
Figure G2008100616465D00064
当构件的远程方法被调用时,运行第一条指令前线程的EC定义为服务栈的初始上下文。
Mc是服务端要求客户接收的消息集,即客户端消息接口;
P是消息传递的协议;
API是构件交互协议的应用程序的编程接口;
TC是构件交互时的事务上下文,存放与调用有关的信息,包括线程的优先级和执行时间,当一个构件使用某个事务上下文时,表明现构件处于这个事务的执行路径(Execution Path)中。
EC是构件交互时的执行上下文,存放寄存器组以及线程的状态信息,包括构件接口是否处于IPC等待状态信息。
我们对采用基于事务的构件交互同步的远程方法调用进行了测试,测试采用的硬件平台是PXA255开发板,主要评估的是高优先级事务多次远程方法调用的平均时间成本,所有的测试都在共享地址空间内进行,我们测试采用四种方法调用的形式:
(A)传递只读参数,返回结果只需要使用寄存器;
(B)允许方法内部改变参数;
(C)没有参数,返回少量结果;
(D)B,C两种方法的总和。
我们设定事务的优先级为0-15,0为最高优先级,15为最低优先级,然后随机的生成10万个具有随机优先级(0-15)的事务,让这些事务去调用同一个构件的远程方法,测试结果如表1所示,从图中可以看出,采用基于事务的构件交互模型可以使得高优先级(0-7)事务的响应时间进一步提高20%,而不影响整个系统的交互性能。这种基于构件化嵌入式操作系统的构件交互同步的方法通过引入事务上下文和服务栈解决了独立构件之间的优先级倒置问题,有效的支持抢占式的远程方法调用。
表1  远程方法调用的平均时间比较
Figure G2008100616465D00071

Claims (1)

1.一种基于事务的构件交互同步的方法,该方法包括:
(1)系统启动后,交互同步的构件的客户端向交互同步的构件的服务端发送请求;
(2)客户端向服务端发起请求后,服务端将客户端的构件交互的事务上下文和执行上下文存入服务端的服务栈,根据所述的事务上下文确定客户端的优先级,优先级高的客户端先服务;
(3)在执行请求的过程中,若有优先级更高的客户端请求,服务端将优先级更高的客户端的构件交互的事务上下文和执行上下文存入服务端的服务栈内,创建一个新的初始上下文,保存当前的执行状态,服务端的服务栈通过状态转换,切换到所述优先级更高的客户端的构件交互的执行上下文,执行所述优先级更高的客户端的服务请求;
(4)所述优先级更高的客户端的请求执行完毕后,初始客户端的构件交互的事务上下文和执行上下文移出服务栈,服务端的服务栈恢复初始上下文,继续执行初始客户端的请求,执行完毕后将结果返回给初始客户端。
CN2008100616465A 2008-05-26 2008-05-26 一种基于事务的构件交互同步的方法 Expired - Fee Related CN101295269B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100616465A CN101295269B (zh) 2008-05-26 2008-05-26 一种基于事务的构件交互同步的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100616465A CN101295269B (zh) 2008-05-26 2008-05-26 一种基于事务的构件交互同步的方法

Publications (2)

Publication Number Publication Date
CN101295269A CN101295269A (zh) 2008-10-29
CN101295269B true CN101295269B (zh) 2010-06-09

Family

ID=40065565

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100616465A Expired - Fee Related CN101295269B (zh) 2008-05-26 2008-05-26 一种基于事务的构件交互同步的方法

Country Status (1)

Country Link
CN (1) CN101295269B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135899B (zh) * 2010-01-26 2013-08-28 华为技术有限公司 一种事务控制方法及装置
CN112839067B (zh) * 2019-11-22 2022-07-22 腾讯科技(深圳)有限公司 一种数据同步方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1225472A (zh) * 1998-02-04 1999-08-11 国际商业机器公司 服务器内调度和分派排队客户请求的装置和方法
CN1290362A (zh) * 1998-03-31 2001-04-04 国际商业机器公司 用于客户/服务器计算的设备、方法和计算机程序产品
US6807181B1 (en) * 1999-05-19 2004-10-19 Sun Microsystems, Inc. Context based control data
CN1798031A (zh) * 2004-12-27 2006-07-05 北京航空航天大学 Web服务事务处理系统及处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1225472A (zh) * 1998-02-04 1999-08-11 国际商业机器公司 服务器内调度和分派排队客户请求的装置和方法
CN1290362A (zh) * 1998-03-31 2001-04-04 国际商业机器公司 用于客户/服务器计算的设备、方法和计算机程序产品
US6807181B1 (en) * 1999-05-19 2004-10-19 Sun Microsystems, Inc. Context based control data
CN1798031A (zh) * 2004-12-27 2006-07-05 北京航空航天大学 Web服务事务处理系统及处理方法

Also Published As

Publication number Publication date
CN101295269A (zh) 2008-10-29

Similar Documents

Publication Publication Date Title
US8555242B2 (en) Decentralized system services
Basu et al. Choreography conformance via synchronizability
TWI407373B (zh) 用於管理多核心架構之資源的方法和設備
CN102591726B (zh) 一种多进程通信方法
CN108063813B (zh) 一种集群环境下密码服务网络并行化的方法与系统
CN106161537A (zh) 远程过程调用的处理方法、装置、系统及电子设备
CN105045658A (zh) 一种利用多核嵌入式dsp实现动态任务调度分发的方法
EP2838243B1 (en) Capability aggregation and exposure method and system
CN110134534B (zh) 基于nio针对大数据分布式系统进行消息处理优化的系统及方法
CN107193672B (zh) 一种跨区块异步调用合约系统
CN108156181A (zh) 一种基于协程异步io的漏洞探测方法及其漏洞扫描系统
CN114564435A (zh) 异构多核芯片的核间通信方法、装置及介质
JP2009123201A (ja) データを処理するためのサーバ‐プロセッサ・ハイブリッド・システムおよび方法
CN100433011C (zh) 嵌入式环境下内存数据库的一致性保护方法
CN113553153A (zh) 业务数据处理方法、装置及微服务架构系统
US6085246A (en) Multiple interface data communication system and method utilizing multiple connection library interfaces with buffer and lock pool sharing
TWI338844B (en) Processor task migration over a network in a multi-processor system
CN101295269B (zh) 一种基于事务的构件交互同步的方法
CN114371935A (zh) 网关处理方法、网关、设备及介质
US9501312B2 (en) Using compensation transactions for multiple one-phase commit participants
CN110377411B (zh) 一种面向分布式云的工作流任务调度方法和系统
Pallemulle et al. Byzantine fault-tolerant web services for n-tier and service oriented architectures
CN110290139B (zh) 消息传输方法及装置
JP2005509216A (ja) 分散型ソフトウェアコンポーネントを構築する方法
Stoess Towards effective user-controlled scheduling for microkernel-based systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100609

Termination date: 20180526