发明名称 基于双缓存机制的实时系统多任务数据共享方法
摘要 本发明公开了一种基于双缓存机制的实时系统多任务数据共享方法,包含双缓存结构初始化操作、双缓存写入操作和双缓存读取操作,双缓存初始化操作对双缓存结构进行分配内存、设置初值等初始化活动。双缓存读取操作由读取任务调用对双缓存结构进行数据读取;双缓存写入操作由写入任务调用对双缓存结构进行数据写入。本发明由于使用了双缓存机制,即不影响原有的系统调度,又保证了写入数据的更新率和读取的数据的相对一致性、及时性、不重复性。
申请公布号 CN105912478A 申请公布日期 2016.08.31
申请号 CN201610210689.X 申请日期 2016.04.06
申请人 中国航空无线电电子研究所 发明人 徐克;张国全;李奎
分类号 G06F12/0877(2016.01)I;G06F12/0893(2016.01)I 主分类号 G06F12/0877(2016.01)I
代理机构 上海和跃知识产权代理事务所(普通合伙) 31239 代理人 杨慧
主权项 一种基于双缓存机制的实时系统多任务数据共享方法,包含双缓存结构初始化操作、双缓存写入操作操作和双缓存读取操作操作,其特征在于:所述双缓存结构初始化操作完成缓存区A和缓存区B的内存分配,以及缓存区A的可写入标志、缓存区B的可写入标志、缓存区可读取标志、缓存区写入次数、缓存区A的更新标志、缓存区B的更新标志、读取任务更新标志、缓存区A的地址、缓存区B的地址的设置;所述双缓存写入操作操作包含以下步骤:步骤2.1、判断待写入数据是否超出单个缓存区能处理的最大值,若超出则返回错误代码,否则根据缓存区可读取标志执行下一步:步骤2.2、如果是第一次写入,则将数据写入缓存区A;如果不是第一次写入,判断非上一次写入的缓存区的可写入标志是否代表可以写入,如何可以写入则将数据写入非上一次写入的缓存区,如果非上一次写入缓存区不可写入,判断上一次写入的缓存区的可写入标志,如果也不可写入,返回错误代码,如果上一次写入缓存区可以写入,先将缓存区可读取标志指向非上一次写入缓存区,然后将数据写入上一次写入缓存区;步骤2.3、更新缓冲区写入次数,将本次写入的缓存区的更新标志设置为更新后的缓冲区写入次数,将缓存区可读取标志指向本次写入的缓存区,返回写入字节数,写入完成;所述双缓存读取操作操作包含以下步骤:步骤3.1、判断待读取数据是否超出单个缓存区能处理的最大值,若超出则返回错误代码,否则执行下一步;步骤3.2、判断读取任务与写入任务的优先级高低,若读取任务优先级高于或等于写入任务,则判断缓存区可读标志所指向的缓存区的更新状态是否大于本次读取任务id对应的读取更新标志判断数据是否有更新,若大于先更新读取更新标志,然后读取缓存区可读标志所指向的缓存区的数据,返回读取字节数;若读取任务优先级低于写入任务,先通过缓存区A的可写入标志判断缓存区A是否正在被其他任务读取,如果是,根据缓存区A的更新状态是否大于本次读取任务id对应的读取更新标志判断数据是否有更新,若大于先更新读取更新标志并且缓存区A的可写入标志加1,然后读取缓存区A中的数据,读取完成后,缓存区A的可写入标志减1,返回读取字节数;如果缓存区A没有正在被其他任务读取,则再通过缓存区B的可写入标志判断缓存区B是否正在被其他任务读取,如果是,则根据缓存区B的更新状态是否大于本次读取任务id对应的读取更新标志判断数据是否有更新,若大于先更新读取更新标志并且缓存区A的可写入标志加1,然后读取缓存区A中的数据,读取完成后,缓存区A的可写入标志减1,返回读取字节数。
地址 200233 上海市徐汇区桂平路432号