CN109445959A - 一种传感器数据处理实时操作系统 - Google Patents
一种传感器数据处理实时操作系统 Download PDFInfo
- Publication number
- CN109445959A CN109445959A CN201811205805.4A CN201811205805A CN109445959A CN 109445959 A CN109445959 A CN 109445959A CN 201811205805 A CN201811205805 A CN 201811205805A CN 109445959 A CN109445959 A CN 109445959A
- Authority
- CN
- China
- Prior art keywords
- sensing data
- thread
- linux
- operating system
- kernel
- 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
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/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种传感器数据处理实时操作系统,包括应用层、应用框架层、运行时系统以及系统内核,应用框架层包括消息处理模块以及传感器管理模块,运行时系统包括运行时系统接口、虚拟机以及支撑库,传感器管理模块为每一类传感器都分配一个线程处理传感器数据,线程的数据来自于底层的polling线程,Polling线程直接从内核读取传感器原始数据并返回给上层线程做进一步处理。
Description
技术领域
本发明涉及操作系统技术领域,具体涉及一种传感器数据处理实时操作系统。
背景技术
分时系统的主要目的是让多个计算机用户能共享系统的资源,能及时地响应和服务于联机用户,只具有很弱的实时功能,与实时操作系统有明显的区别。具体的说,对于分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。而对于实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时限内作出响应(系统响应时间),即使是在尖峰负荷下,也应如此,系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出精确的估计。
传统的安卓(Android)系统可以看做一个三层结构:自底向上分别是Linux内核、支撑库、运行时系统和应用框架层。在系统之上运行的应用程序,如图1所示。
系统服务是为用户访问系统资源提供接口的,例如传感器管理模块(SensorManager)提供对传感器的访问接口,定时器管理模块(AlarmManager)提供对系统定时器的访问接口。这些系统服务的问题是没有把实时性作为一种基本要求。在所以的系统服务当中,定时器管理模块和传感器管理模块是运行实时程序所必须的。
传统安卓系统的如下特点导致其不能应保证应用的实时性。系统的消息传递机制的行为具有严重的不可预测特性,无法提供可预测的执行时间保证;系统服务的设计不是面向实时系统的。
发明内容
本发明的目的就在于为了解决上述问题而提供一种等技术效果,详见下文阐述。
为实现上述目的,本发明提供了以下技术方案:一种传感器数据处理实时操作系统,包括应用层、应用框架层、运行时系统以及系统内核,应用框架层包括消息处理模块、消息循环模块、定时器管理模块以及传感器管理模块,运行时系统包括运行时系统接口、虚拟机以及支撑库,传感器管理模块为每一类传感器都分配一个线程处理传感器数据,线程的数据全部来自于更为底层的polling线程,Polling线程直接从内核读取传感器原始数据并返回给上层线程做进一步处理。
有益效果在于:
1、本发明实现了基于优先级的传感器事件消息的高效传递。
2、本发明重新设计消息处理模块、消息循环模块使得其支持实时应用需求,使得其支持实时应用需求;
3、本发明的两级红黑树保证高优先级线程的响应时间,优化了定时器请求所需的资源;
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术的安卓系统组成框图;
图2是本发明的安卓系统组成框图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
参见附图,一种传感器数据处理实时操作系统,包括应用层、应用框架层、运行时系统以及系统内核,应用框架层包括消息处理模块、消息循环模块、定时器管理模块以及传感器管理模块,运行时系统包括运行时系统接口、虚拟机以及支撑库,
消息处理模块和消息循环模块采用实时消息传递方法对消息进行传递;
定时器服务模块采用两级红黑树对定时器请求进行管理;
传感器管理模块使用Polling线程对传感器数据进行处理。
进一步的说,消息处理模块根据线程发出的每个消息所指定的优先级分配至相应的队列中,并负责收发队列中待处理的消息;
其中,优先级的指定支持两种策略,分别为:
A.继承策略,优先级继承自发出消息的线程优先级,实时线程需要发送消息并且采用继承策略,则该消息就作为实时消息放入实时消息队列,而普通线程需要发送消息并且采用继承策略,则该消息作为普通消息放入普通消息队列;
B.继承+指派策略,优先级继承自发出消息的线程优先级并辅以线程主动调整,若一个实时线程需要发送消息并且采用继承+指派策略,则默认情况下该消息就作为实时消息放入实时消息队列,实时线程也可用操作系统提供的接口指定该消息指派为普通消息,并放入普通消息队列。
上述做法,是低优先级线程发出的消息不会影响高优先级线程发出的消息的响应时间,队列都是静态配置的,所以内存空间可控。
进一步的说,定时器管理模块通过两级红黑树对定时器请求的管理过程具体为:
步骤1,应用程序调用定时器管理设置函数(AlarmManager.set())向运行时系统注册定时器(Alarm)请求;
步骤2,定时器管理模块(AlarmManager)采用了两级红黑树对定时器请求进行管理;
其中,第一级红黑树的每个叶节点保存所有定时器请求的时间戳以及指向第二级红黑树的指针;第二级红黑树的叶节点保存的是同一时间戳下的所有定时器请求,并且按照请求发出者的优先级进行排序;
步骤3,当应用程序提出新的定时器请求时,定时器管理线程立刻被唤醒,并在两级红黑树中插入新的定时器服务节点;
步骤4,为该定时器请求设置一个专门的服务线程;
步骤5,调度该服务线程在定时器请求指定的时间返回定时器消息;
步骤6,定时器触发后,定时器管理模块就会发送消息给应用程序,进而触发应用程序的回调函数(BroadcastReceiver.onReceive())实现业务逻辑。
两级红黑树保证低优先级的线程发出的定时器请求不会影响高优先级线程发出的定时器请求的响应时间,并且低优先级的定时器请求不会耗尽高优先级的定时器请求所需的资源。
进一步的说,传感器管理模块为每一类传感器都分配一个线程处理传感器数据,线程的数据全部来自于更为底层的polling线程,Polling线程直接从内核读取传感器原始数据并返回给上层线程做进一步处理。
其中,polling线程是独立的线程,用来从内核读取传感器的原始数据,polling线程会周期性的将传感器数据从内核读出,数据格式为压缩格式,并传递至相应的传感器数据处理线程,相应的传感器数据处理线程在收到传感器数据后会进行过滤、处理,使其成为用户可读的格式,并交由应用程序显示、处理。
例如,加速度计测量的数据会最先被内核读取,而后polling线程会周期性的从内核将加速度计测量的数据读取,此时的数据格式一般是某种便于存储的压缩格式,而非用户友好的格式,并传递至加速度计数据处理线程。加速度计数据处理线程在收到数据后会进行数据的过滤、处理,使其成为用户可读的友好格式,并交由应用程序显示、处理。
其中,传感器数据的处理过程具体为:
步骤1,当优先级为p的应用程序注册成为某传感器事件的监听者,则传感器数据处理线程继承优先级p;
步骤2,当消息发送线程创建一个执行传感器事件监听者的回调函数的新线程时,也会给其赋予原应用程序的优先级p。
基于上述做法实现了基于优先级的传感器事件消息的高效传递。
进一步的说,运行时系统接口为Fiji运行时系统接口,虚拟机为Fiji虚拟机,支撑库包括实时Bionic库。
Fiji虚拟机是适用于硬实时环境的、可预测的Java实时虚拟机。
Bionic库是安卓(Android)平台为C/C++开发者进行原生应用程序开发所提供的符合POSIX(可移植操作系统接口)标准的C库,Bionic库支持Pthreads和mutexes的实时扩展接口。
当Dalvik虚拟机被替换为Fiji虚拟机时,Bionic就不能符合要求了,因为它不支持Pthreads和mutexes的实时扩展,这是Fiji的基本要求。本发明对Bionic库进行了修改使其支持Pthreads和mutexes的实时扩展接口。
进一步的说,系统内核为包括RT-Linux、RTEMS在内的实时操作系统内核。
RT-Linux是嵌入式硬实时操作系统,部分支持POSIX.1b标准,RT-Linux通过对标准Linux内核进行改造,对Linux内核工作环境进行了一些改变,在Linux内核和硬件中断的地方加上了RT-Linux内核的控制,Linux的控制信号都要先交给RT-Linux内核进行处理,在RT-Linux内核中实现了虚拟中断机制,Linux本身不能屏蔽中断,发出的中断屏蔽信号和打开中断信号都修改成向RT-Linux发送的信号,即将所有的中断分成Linux中断和实时中断两类,如果RT-Linux内核接收到的中断信号是普通Linux中断,那就设置一个标志位;如果是实时中断,就继续向硬件发出中断,在RT-Linux中执行STI将中断打开之后,那些设置了标志位表示的Linux中断就继续执行。
因此,CLI并不能禁止RT-Linux内核的运行,却可以用来中断Linux。Linux不能中断自己,而RT-Linux可以。安卓的非实时基础模块Dalvik、Linux等用实时模块Fiji虚拟机、RT-Linux等进行替代。Dalvik虚拟机的垃圾收集模块可以随时可以中断任意用户线程,这就导致了程序行为的不可预测性。因此,采用了具有实时特征的Fiji虚拟机替换了原有的Dalvik虚拟机。同时,将非实时的linux内核替换为RT-Linux内核,从而使得基础模块能够满足实时安卓系统的要求。
传统安卓系统采用的核心C库不是glibc而是其自定义的Bionic支撑库,面向的是CPU性能和内存都极度受限的场景。但是当将Dalvik虚拟机改为支持实时的Fiji虚拟机时,Bionic不支持Fiji所依赖的Pthreads以及互斥操作。因此对Bionic进行修改使其能够兼容POSIX的必要的实时接口。
对Bionic支撑库进行了实时扩展,使其能够支持实时内核和实时虚拟机。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种传感器数据处理实时操作系统,包括应用层、应用框架层、运行时系统以及系统内核,应用框架层包括消息处理模块以及传感器管理模块,运行时系统包括运行时系统接口、虚拟机以及支撑库,传感器管理模块为每一类传感器都分配一个线程处理传感器数据,线程的数据来自于底层的polling线程,Polling线程直接从内核读取传感器原始数据并返回给上层线程。
2.根据权利要求1所述一种传感器数据处理实时操作系统,其特征在于:polling线程是独立线程,从内核读取传感器的原始数据,polling线程周期性的将传感器数据从内核读出,数据格式为压缩格式,并传递至相应的传感器数据处理线程,相应的传感器数据处理线程在收到传感器数据后会进行过滤、处理,使其成为用户可读的格式,并交由应用程序显示、处理。
3.根据权利要求1所述一种传感器数据处理实时操作系统,其特征在于传感器数据的处理过程具体为:
步骤1,当优先级为p的应用程序注册成为某传感器事件的监听者,则传感器数据处理线程继承优先级p;
步骤2,当消息发送线程创建一个执行传感器事件监听者的回调函数的新线程时,也会给其赋予原应用程序的优先级p。
4.根据权利要求1所述一种传感器数据处理实时操作系统,其特征在于:消息处理模块采用实时消息传递方法对消息进行传递。
5.根据权利要求4所述一种传感器数据处理实时操作系统,其特征在于:消息处理模块根据线程发出的每个消息所指定的优先级分配至相应的队列中,并负责收发队列中待处理的消息。
6.根据权利要求1所述一种传感器数据处理实时操作系统,其特征在于:运行时系统接口为Fiji运行时系统接口,虚拟机为Fiji虚拟机,支撑库包括实时Bionic库。
7.根据权利要求6所述一种传感器数据处理实时操作系统,其特征在于:Fiji虚拟机是适用于硬实时环境的、可预测的Java虚拟机。
8.根据权利要求6所述一种传感器数据处理实时操作系统,其特征在于:Bionic库是安卓平台为C/C++开发者进行原生应用程序开发所提供的符合POSIX标准的C库,Bionic库支持Pthreads和mutexes的实时扩展接口。
9.根据权利要求1所述一种传感器数据处理实时操作系统,其特征在于:系统内核为包括RT-Linux、RTEMS在内的实时操作系统内核。
10.根据权利要求1所述一种传感器数据处理实时操作系统,其特征在于:RT-Linux是嵌入式硬实时操作系统,部分支持POSIX.1b标准,RT-Linux通过对标准Linux内核进行改造,对Linux内核工作环境进行了一些改变,在Linux内核和硬件中断的地方加上了RT-Linux内核的控制,Linux的控制信号都要先交给RT-Linux内核进行处理,在RT-Linux内核中实现了虚拟中断机制,Linux本身不能屏蔽中断,发出的中断屏蔽信号和打开中断信号都修改成向RT-Linux发送的信号,即将所有的中断分成Linux中断和实时中断两类,如果RT-Linux内核接收到的中断信号是普通Linux中断,那就设置一个标志位;如果是实时中断,就继续向硬件发出中断,在RT-Linux中执行STI将中断打开之后,那些设置了标志位表示的Linux中断就继续执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811205805.4A CN109445959A (zh) | 2018-10-17 | 2018-10-17 | 一种传感器数据处理实时操作系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811205805.4A CN109445959A (zh) | 2018-10-17 | 2018-10-17 | 一种传感器数据处理实时操作系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109445959A true CN109445959A (zh) | 2019-03-08 |
Family
ID=65546646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811205805.4A Pending CN109445959A (zh) | 2018-10-17 | 2018-10-17 | 一种传感器数据处理实时操作系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109445959A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110233936A (zh) * | 2019-07-04 | 2019-09-13 | Oppo广东移动通信有限公司 | 接近状态获得方法、装置、计算机设备以及存储介质 |
CN111766853A (zh) * | 2019-03-14 | 2020-10-13 | 北京初速度科技有限公司 | 一种传感器数据分发系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060112377A1 (en) * | 2004-09-17 | 2006-05-25 | Andre Nacul | Phantom serializing compiler and method of operation of same |
CN1952898A (zh) * | 2005-03-14 | 2007-04-25 | Qnx软件操作系统公司 | 采用进程线程的自适应分区的进程调度程序 |
CN101887378A (zh) * | 2010-06-18 | 2010-11-17 | 阳坚 | 一种半实物实时仿真机和半实物实时仿真系统 |
CN101894045A (zh) * | 2010-06-18 | 2010-11-24 | 阳坚 | 一种实时Linux操作系统 |
CN102141915A (zh) * | 2010-12-29 | 2011-08-03 | 中国船舶重工集团公司第七研究院 | 一种基于RTLinux的设备实时控制方法 |
CN105278940A (zh) * | 2014-07-08 | 2016-01-27 | 北京航空航天大学 | 一种基于多核处理器架构的机器人混合系统应用框架 |
CN108200134A (zh) * | 2017-12-25 | 2018-06-22 | 腾讯科技(深圳)有限公司 | 请求消息管理方法及装置、存储介质 |
CN108519610A (zh) * | 2018-03-29 | 2018-09-11 | 武汉大学 | 多传感器组合导航系统时间同步及实时数据采集方法 |
CN108594819A (zh) * | 2018-05-03 | 2018-09-28 | 济南浪潮高新科技投资发展有限公司 | 自动驾驶车载计算资源管理系统和方法 |
-
2018
- 2018-10-17 CN CN201811205805.4A patent/CN109445959A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060112377A1 (en) * | 2004-09-17 | 2006-05-25 | Andre Nacul | Phantom serializing compiler and method of operation of same |
CN1952898A (zh) * | 2005-03-14 | 2007-04-25 | Qnx软件操作系统公司 | 采用进程线程的自适应分区的进程调度程序 |
CN101887378A (zh) * | 2010-06-18 | 2010-11-17 | 阳坚 | 一种半实物实时仿真机和半实物实时仿真系统 |
CN101894045A (zh) * | 2010-06-18 | 2010-11-24 | 阳坚 | 一种实时Linux操作系统 |
CN102141915A (zh) * | 2010-12-29 | 2011-08-03 | 中国船舶重工集团公司第七研究院 | 一种基于RTLinux的设备实时控制方法 |
CN105278940A (zh) * | 2014-07-08 | 2016-01-27 | 北京航空航天大学 | 一种基于多核处理器架构的机器人混合系统应用框架 |
CN108200134A (zh) * | 2017-12-25 | 2018-06-22 | 腾讯科技(深圳)有限公司 | 请求消息管理方法及装置、存储介质 |
CN108519610A (zh) * | 2018-03-29 | 2018-09-11 | 武汉大学 | 多传感器组合导航系统时间同步及实时数据采集方法 |
CN108594819A (zh) * | 2018-05-03 | 2018-09-28 | 济南浪潮高新科技投资发展有限公司 | 自动驾驶车载计算资源管理系统和方法 |
Non-Patent Citations (1)
Title |
---|
FILIP PIZLO; LUKASZ ZIAREK; JAN VITEK: "Real time Java on resource-constrained platforms with Fiji VM", 《JAVA TECHNOLOGIES FOR REAL-TIME AND EMBEDDED SYSTEMS》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111766853A (zh) * | 2019-03-14 | 2020-10-13 | 北京初速度科技有限公司 | 一种传感器数据分发系统 |
CN111766853B (zh) * | 2019-03-14 | 2023-12-19 | 北京魔门塔科技有限公司 | 一种传感器数据分发系统 |
CN110233936A (zh) * | 2019-07-04 | 2019-09-13 | Oppo广东移动通信有限公司 | 接近状态获得方法、装置、计算机设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10635558B2 (en) | Container monitoring method and apparatus | |
US6988226B2 (en) | Health monitoring system for a partitioned architecture | |
US7103745B2 (en) | Two-level operating system architecture | |
US20020161957A1 (en) | Methods and systems for handling interrupts | |
US20020144010A1 (en) | Communication handling in integrated modular avionics | |
US8266577B2 (en) | RFID enhanced operating system (EOS) framework | |
US11386014B2 (en) | Method and system for low latency data management | |
CN113939805A (zh) | 一种进程间通信的方法及系统 | |
EP3489815B1 (en) | Method and system for low latency data management | |
CN102103526A (zh) | 服务端和客户端间通过服务管理进行进程间通信的方法及系统 | |
JP2009187567A (ja) | エージェントシステム | |
CN111857993B (zh) | 一种内核态调用用户态函数的方法 | |
US20040078799A1 (en) | Interpartition communication system and method | |
CN111414246B (zh) | 具备tee扩展的计算平台上的跨安全世界实时功能调用方法及装置 | |
US20040015979A1 (en) | System and method for efficiently exchanging data among processes | |
Baron et al. | Mach kernel interface manual | |
US20070198997A1 (en) | Customer framework for embedded applications | |
US7552446B1 (en) | Methods and apparatus for a timer event service infrastructure | |
WO2023011249A1 (zh) | Io多路复用方法、介质、设备和操作系统 | |
CN109445959A (zh) | 一种传感器数据处理实时操作系统 | |
Bruyninckx | Real-time and embedded guide | |
Powell | Extra Performance Architecture (XPA) | |
CN109343976A (zh) | 一种单任务实时消息传递操作系统 | |
CN117407054A (zh) | 中断处理方法、电子设备和存储介质 | |
CN104318165A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: A102, courtyard 8, No. 4, Qinghe East Binhe Road, Haidian District, Beijing 100083 Applicant after: Beijing Jide System Technology Co.,Ltd. Address before: A102, courtyard 8, No. 4, Qinghe East Binhe Road, Haidian District, Beijing 100083 Applicant before: BEIJING JIDE TERMINAL TECHNOLOGY Co.,Ltd. |
|
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190308 |