一种多任务嵌入式系统共享数据管理方法技术方案

技术编号:17006987 阅读:34 留言:0更新日期:2018-01-11 03:31
本发明专利技术公开了一种多任务嵌入式系统共享数据管理方法,通过将多任务访问的共享数据进行分类,对可以通过一条汇编指令实现读写的基本数据类型数据实现无锁互斥访问,在访问其他类型数据时仍使用互斥锁技术解决互斥问题。本发明专利技术提供的一种多任务嵌入式系统共享数据管理方法在32位以内的基本数据类型占比较大且访问频繁的嵌入式系统中,该方法可降低关中断时间,提高共享数据访问速度,从而大大提高嵌入式系统的性能。

【技术实现步骤摘要】
一种多任务嵌入式系统共享数据管理方法
本专利技术涉及一种多任务嵌入式系统共享数据管理方法。
技术介绍
在多任务系统中,由于各个任务都有可能随时抢占CPU资源来运行自身的程序,避免不了任务间的相互关系,任务间的相互关系主要包括互斥与同步两种。所谓互斥,是指某一资源同时只允许一个任务对其进行访问,具有唯一性和排它性,只有在当前任务使用完成后其他任务才能访问这个资源,但互斥无法限制任务对资源的访问顺序,即访问是无序的。所谓同步,是指在互斥的基础上(大多数情况),通过其它机制实现任务对资源的有序访问。在大多数情况下,同步已经实现了互斥。在此仅讨论任务的互斥。任务互斥是任务之间发生的一种间接性作用,一般是程序不希望的。通常的情况是两个或两个以上的任务需要同时访问某个共享数据。我们一般将发生能够访问共享数据的程序段称为临界区。两个任务不能同时进入临界区,否则就会导致数据的不一致,产生与时序有关的错误。这种错误主要包括以下两种:1)当写入任务没有写入完成时,读取任务抢占CpU而读取数据,则读取到的是不完整的数据。2)如果两个写入任务并发写入数据,会出现两个写入任务交叉写入数据的不同部分而导致数据错误。为了避免上述多任务间访问共享数据的互斥问题,一般通过使用互斥锁的方式来保护共享数据。互斥锁是一种简单的通过加锁来控制对共享资源的访问的方法,互斥锁只有两种状态,即上锁和解锁。通过这种机制可以解决多任务的互斥问题,但是为了实现加锁和解锁过程中不被其他任务打断,一般通过关中断的方式进行加锁和解锁。而关中断在嵌入式系统中是比较大的开销如果频繁关中断还可能影响系统的实时性,加上任务阻塞和维护互斥锁状态的代码开销,导致互斥锁的加锁和解锁将会导致较大的系统开销,大大影响嵌入式系统的性能。在嵌入式系统中,一般共享数据的数据不大,而任务访问的共享数据量更小,如果每次访问很小的数据都需要加锁和解锁,可能加锁和解锁的时间会远大于实际读写数据的时间,大大降低系统性能。
技术实现思路
本专利技术的首要目的是提供一种多任务嵌入式系统共享数据管理方法,在不增加系统开销的情况下提高共享数据访问速度,进而提升系统性能。为解决上述技术问题,本专利技术所采用的技术方案是:一种多任务嵌入式系统共享数据管理方法,通过将多任务访问的共享数据进行分类,对可以通过一条汇编指令实现的基本数据类型数据实现无锁互斥访问,在访问其他类型数据时仍使用互斥锁技术解决互斥问题。优选的,在访问基本数据类型数据时,首先获取要访问数据的指针,将该指针转换为实际的数据类型,通过对指针取数据的方式直接进行读写。优选的,对于其他类型的数据,首先对互斥锁加锁,然后对数据进行读写操作,完成后对互斥锁解锁。优选的,基本数据类型包括长度为8位、16位或32位的数据。本专利技术提供的一种多任务嵌入式系统共享数据管理方法在32位以内的基本数据类型占比较大且访问频繁的嵌入式系统中,该方法可降低关中断时间,提高共享数据访问速度,从而大大提高嵌入式系统的性能。附图说明构成本申请的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术实施例共享数据的存在形式示意图;图2为本专利技术实施例32位以内基本数据类型访问流程示意图;图3为本专利技术实施例其它类型共享数据访问流程示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。实施例(一)共享数据的存在形式。共享数据以内存中一片区域的形式存在,如图1所示,在这片内存区域中,数据可能是8位、16位、32位的基本数据类型的数据,也可能是大于32位的基本数据类型(如double)、字符串、数组等其他数据类型的数据。(二)共享数据的访问方式。对于32位以内的基本数据类型,可通过指针(地址)方式直接访问。对于其他类型的数据,通过加互斥锁方式进行访问。具体为:1)如图2所示,对于32位以内数据类型的数据,首先获取要访问数据的指针(地址),将该指针转换为实际的数据类型,通过对指针取数据的方式直接进行读写。如指针为p,则通过*p可获取数据,通过*p=x可将x赋值到p指向的共享数据。在当前主流的基于Cortex-M3/M4内核的嵌入式CPU中,支持对数据的非对齐访问,即不管数据的起始地址是否对齐,都可以通过一条汇编指令实现32位以内基本数据类型数据的读写,这样无论数据的分布位置如何,对32位以内基本数据类型的读写都是天然互斥的。因此,32位以内基本数据类型的数据可直接读写,不需要使用互斥锁。2)如图3所示,对于其他类型的数据,首先对互斥锁加锁,然后对数据进行读写操作,完成后对互斥锁解锁。以上所述仅为本专利技术的较佳实施例而已,并不用以限制本专利技术,凡在本专利技术的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本专利技术的保护范围之内。本文档来自技高网
...
一种多任务嵌入式系统共享数据管理方法

【技术保护点】
一种多任务嵌入式系统共享数据管理方法,其特征在于:通过将多任务访问的共享数据进行分类,对可以通过一条汇编指令实现读写的基本数据类型数据实现无锁互斥访问,在访问其他类型数据时仍使用互斥锁技术解决互斥问题。

【技术特征摘要】
1.一种多任务嵌入式系统共享数据管理方法,其特征在于:通过将多任务访问的共享数据进行分类,对可以通过一条汇编指令实现读写的基本数据类型数据实现无锁互斥访问,在访问其他类型数据时仍使用互斥锁技术解决互斥问题。2.根据权利要求1所述的一种多任务嵌入式系统共享数据管理方法,其特征在于:在访问基本数据类型数据时,首先获取要访问数据的指针,将该指...

【专利技术属性】
技术研发人员:崔彦波杨蒙路欣
申请(专利权)人:北京国华世纪电子科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1