CN105760305A - 一种linux下的系统实时性监控方法 - Google Patents
一种linux下的系统实时性监控方法 Download PDFInfo
- Publication number
- CN105760305A CN105760305A CN201610131738.0A CN201610131738A CN105760305A CN 105760305 A CN105760305 A CN 105760305A CN 201610131738 A CN201610131738 A CN 201610131738A CN 105760305 A CN105760305 A CN 105760305A
- Authority
- CN
- China
- Prior art keywords
- task
- real time
- monitoring
- content
- system real
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种linux下的系统实时性监控方法,本方法通过CPU的定时器中断机制、软件计数器机制及堆栈解析技术实现了全新的系统实时性监控技术。本发明能够有效解决现有系统实时性监控机制所存在的问题,且适用于多(单)任务嵌入式系统的实时性监控。
Description
技术领域
本发明涉及软件系统技术,具体涉及软件系统中内存监控技术。
背景技术
现有的系统实时性监控技术是通过看门狗芯片实现,使用一颗看门狗芯片,系统每隔一段时间复位这颗看门狗芯片(喂狗),当系统超过一定时间没有复位这颗看门狗芯片时,则认为系统实时性过低,看门狗芯片将通过CPU的复位引脚复位CPU,系统将重新启动。
这种方法对于系统实时性监控是比较有效的,但存在以下几个缺点:
1.当系统实时性过低时,看门狗芯片将系统复位,现场信息全部丢失,这给程序开发人员工作带来较多的麻烦。
2.在多任务系统中,有可能是某个任务消耗过多CPU资源导致系统实时性过低,如果开发人员不知道是哪个任务时,就不得不排查所有任务,这大大降低开发人员的工作效率。
综上所述,系统实时性监控技术所存在的这些缺点将会极大的影响多任务嵌入式系统软件的调试进度。
发明内容
本发明针对现有系统实时性监控技术所存在的问题,而提供一种全新的软件系统实时性监控方法。本方案基于CPU的定时器机制、软件计数器机制及堆栈解析技术实现了全新的软件系统实时性监控技术,有效解决现有软件系统实时性监控技术所存在的缺陷,提高多(单)任务嵌入式系统软件的调试进度。
为了达到上述目的,本发明采用如下的技术方案:
一种linux下的系统实时性监控方法,所述监控方法包括如下步骤:
(1)linux操作系统初始化时,挂载定时器中断处理函数,在中断处理函数中对内部计时器执行加一操作,并使能该定时器;
(2)创建一个低优先级的任务,每隔设定时间,复位内部计数器;
(3)当系统实时性过低时,步骤(2)中创建的低优先级任务将得不到运行,内部计数器将会溢出;
(4)当内部计数器溢出时,判断当前正在运行的任务是内核态任务,还是用户态任务:若为用户态任务,则跳转到步骤(6);若为内核态任务,则执行步骤(5)操作;
(5)获取当前时间、当前运行的任务ID、各寄存器内容、堆栈内容;
(6)向用户态函数发送信号;
(7)用户态信号关联函数接收到信号,获取当前时间、当前运行的任务ID、各寄存器内容、堆栈内容;
(8)分析堆栈得到任务调用关系;
(9)将步骤(5)、步骤(7)、步骤(8)中得到的内容保存,并输出;
(10)重启系统。
优选的,所述步骤(2)中创建的低优先级任务为系统内最低优先级的任务。
优选的,所述步骤(5)中获取当前运行的内核态任务ID。
优选的,所述步骤(7)中获取当前运行的用户态任务ID。
优选的,所述步骤(9)中循环记录相关内容。
优选的,所述步骤(9)中保存的内容由串口输出。
本发明通过CPU的定时器机制、软件计数器机制及堆栈解析技术实现了全新的软件系统实时性监控技术,能够有效提高多任务嵌入式系统软件的调试进度。
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为本发明实例中对软件系统实时性监控的实施流程图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实例和图示,进一步阐述本发明。
本实例以Broadcom公司的BCM54685运行Linux操作系统为例进一步说明本发明方案具体的实施过程,具体实施步骤如下,参考图1:
1.在linux操作系统的定时器中断处理函数中加入钩子函数time_watchdog_kick_func,并在linux操作系统初始化时,将处理函数挂载在time_watchdog_kick_func,该定时器在系统初始化完毕后使能。
2.用linux操作系统提供的_sys_task_spawn()接口创建一个低优先级的任务(该任务为linux操作系统内最低优先级的任务),每隔一段时间(该时间根据实际情况设定),复位内部计数器。
3.当系统正常运行时,步骤(2)中创建的低优先级任务将定时复位内部计数器,内部计数器不会溢出;当系统实时性过低即某个优先级较高(高于步骤(2)中创建的低优先级任务的优先级)的任务一直占用CPU资源时,步骤(2)中创建的任务将得不到运行,无法复位内部计数器,内部计数器将会溢出。
4.当内部计数器溢出时,使用user_mode(regs)判断当前正在运行的任务是内核态任务,还是用户态任务:若为用户态任务,则跳转到步骤(6);若为内核态任务,则执行步骤(5)操作。
5.使用linux时间函数do_gettimeofday()获取当前时间、使用current->pid获取当前运行的任务ID(内核态)、使用中断现场宏pt_regs获取各寄存器内容、根据寄存区中的SP寄存器获取堆栈内容。
6.使用linux系统提供的send_sig_info()接口向用户态函数发送信号。
7.用户态信号关联函数break_head_record()接收到信号,使用linux系统提供的time_system_get_time()接口获取当前时间、使用linux系统提供的sys_task_id_self()接口获取当前运行的任务ID(用户态)、使用linux系统提供的中断现场宏pt_regs获取各寄存器内容、根据寄存区中的SP寄存器获取堆栈内容。
8.分析任务堆栈,得到任务的调用关系。
9.将步骤(5)、步骤(7)、步骤(8)中得到的内容保存,并调用串口驱动函数将获取到的内容输出;该步骤可进行循环记录、输出。
10.调用sys_reset_myself()函数重启系统;
上述实例中,通过CPU定时器机制、计数器机制及堆栈解析技术能够实现软件系统实时性监控,且该监控技术能够适用于多(单)任务嵌入式系统。
监控方案中,采用区分内核态和用户态方案能有效获取到开发人员关心的任务状态信息,减少程序调试强度。
同时,采用自动解析方案,能自动分析任务堆栈中函数的调用关系,减少程序调试难度。
再者,采用的在线串口输出方案使开发人员能第一时间获得系统相关信息。循环记录方案,非常有效的适用于无人值守的设备。
基于上述实例方案可知,所有有定时器机制的CPU都能变通实现,其原理都如上所述,此处不加以赘述。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (6)
1.一种linux下的系统实时性监控方法,其特征在于,所述监控方法包括如下步骤:
(1)linux操作系统初始化时,挂载定时器中断处理函数,在中断处理函数中对内部计时器执行加一操作,并使能该定时器;
(2)创建一个低优先级的任务,每隔设定时间,复位内部计数器;
(3)当系统实时性过低时,步骤(2)中创建的低优先级任务将得不到运行,内部计数器将会溢出;
(4)当内部计数器溢出时,判断当前正在运行的任务是内核态任务,还是用户态任务:若为用户态任务,则跳转到步骤(6);若为内核态任务,则执行步骤(5)操作;
(5)获取当前时间、当前运行的任务ID、各寄存器内容、堆栈内容;
(6)向用户态函数发送信号;
(7)用户态信号关联函数接收到信号,获取当前时间、当前运行的任务ID、各寄存器内容、堆栈内容;
(8)分析堆栈得到任务调用关系;
(9)将步骤(5)、步骤(7)、步骤(8)中得到的内容保存,并输出;
(10)重启系统。
2.根据权利要求1所述的一种linux下的系统实时性监控方法,其特征在于,所述步骤(2)中创建的低优先级任务为系统内最低优先级的任务。
3.根据权利要求1所述的一种linux下的系统实时性监控方法,其特征在于,所述步骤(5)中获取当前运行的内核态任务ID。
4.根据权利要求1所述的一种linux下的系统实时性监控方法,其特征在于,所述步骤(7)中获取当前运行的用户态任务ID。
5.根据权利要求1所述的一种linux下的系统实时性监控方法,其特征在于,所述步骤(9)中循环记录相关内容。
6.根据权利要求1所述的一种linux下的系统实时性监控方法,其特征在于,所述步骤(9)中保存的内容由串口输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610131738.0A CN105760305A (zh) | 2016-03-09 | 2016-03-09 | 一种linux下的系统实时性监控方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610131738.0A CN105760305A (zh) | 2016-03-09 | 2016-03-09 | 一种linux下的系统实时性监控方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105760305A true CN105760305A (zh) | 2016-07-13 |
Family
ID=56332758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610131738.0A Pending CN105760305A (zh) | 2016-03-09 | 2016-03-09 | 一种linux下的系统实时性监控方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105760305A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708670A (zh) * | 2020-06-10 | 2020-09-25 | 中国第一汽车股份有限公司 | 实时操作系统中任务时间参数的确定方法、装置及车辆 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1400529A (zh) * | 2001-07-30 | 2003-03-05 | 华为技术有限公司 | 一种实时嵌入系统的故障定位方法 |
CN1477512A (zh) * | 2002-08-20 | 2004-02-25 | 华为技术有限公司 | 嵌入式软件任务死循环监控方法 |
CN1595368A (zh) * | 2003-09-13 | 2005-03-16 | 华为技术有限公司 | 多任务系统的异常监控装置及其方法 |
CN1855067A (zh) * | 2005-04-28 | 2006-11-01 | 华为技术有限公司 | 一种实时操作系统中任务挂起状态监控方法 |
CN102346708A (zh) * | 2010-08-03 | 2012-02-08 | 中兴通讯股份有限公司 | 一种调试器及其调试方法 |
CN102521098A (zh) * | 2011-11-23 | 2012-06-27 | 中兴通讯股份有限公司 | Cpu死机监控的处理方法和装置 |
CN104199746A (zh) * | 2014-09-01 | 2014-12-10 | 中国东方电气集团有限公司 | 一种多任务软件看门狗的实现方法 |
CN104503885A (zh) * | 2014-12-31 | 2015-04-08 | 国家电网公司 | 一种定时看门装置及系统 |
-
2016
- 2016-03-09 CN CN201610131738.0A patent/CN105760305A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1400529A (zh) * | 2001-07-30 | 2003-03-05 | 华为技术有限公司 | 一种实时嵌入系统的故障定位方法 |
CN1477512A (zh) * | 2002-08-20 | 2004-02-25 | 华为技术有限公司 | 嵌入式软件任务死循环监控方法 |
CN1595368A (zh) * | 2003-09-13 | 2005-03-16 | 华为技术有限公司 | 多任务系统的异常监控装置及其方法 |
CN1855067A (zh) * | 2005-04-28 | 2006-11-01 | 华为技术有限公司 | 一种实时操作系统中任务挂起状态监控方法 |
CN102346708A (zh) * | 2010-08-03 | 2012-02-08 | 中兴通讯股份有限公司 | 一种调试器及其调试方法 |
CN102521098A (zh) * | 2011-11-23 | 2012-06-27 | 中兴通讯股份有限公司 | Cpu死机监控的处理方法和装置 |
CN104199746A (zh) * | 2014-09-01 | 2014-12-10 | 中国东方电气集团有限公司 | 一种多任务软件看门狗的实现方法 |
CN104503885A (zh) * | 2014-12-31 | 2015-04-08 | 国家电网公司 | 一种定时看门装置及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708670A (zh) * | 2020-06-10 | 2020-09-25 | 中国第一汽车股份有限公司 | 实时操作系统中任务时间参数的确定方法、装置及车辆 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101957533B1 (ko) | 가상 머신 브랜칭 및 병렬 실행 기법 | |
US7992042B2 (en) | Debug support device, and program for directing computer to perform debugging method | |
US10740146B2 (en) | Migrating virtual machines between compute systems by transmitting programmable logic accelerator state | |
EP3352083B1 (en) | Debugging method, multi-core processor, and debugging equipment | |
CN101887393B (zh) | 基于半虚拟化技术的设备故障复现方法及系统 | |
KR101715759B1 (ko) | 멀티코어 환경에서의 악성코드 분석 장치 및 방법 | |
JP2013546103A5 (zh) | ||
US9396096B2 (en) | Android automated cross-application testing device and method | |
CN105740139B (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
CN105511937A (zh) | 一种适用于云平台的批量虚拟机蓝屏监控方法 | |
US20110314453A1 (en) | Real time profiling of a computer software application running on parallel computing resources | |
CN108762886B (zh) | 虚拟机的故障检测恢复方法及系统 | |
CN114184885A (zh) | 一种故障检测方法、装置及存储介质 | |
RU2432601C2 (ru) | Метод внедрения детерминизма среди множества интервалов тактирования | |
Hung et al. | System-wide profiling and optimization with virtual machines | |
CN105760305A (zh) | 一种linux下的系统实时性监控方法 | |
US20220108052A1 (en) | Verification device, verification method, and computer-readable recording medium | |
CN101256531A (zh) | 一种分析嵌入式设备实时性的方法 | |
US20130117732A1 (en) | Technique to improve performance of software breakpoint handling | |
JPH10254738A (ja) | エミュレータ装置及びエミュレーション方法 | |
TWI554876B (zh) | 節點置換處理方法與使用其之伺服器系統 | |
US9600422B2 (en) | Monitoring accesses to memory in a multiprocessor system | |
CN112068980A (zh) | 采样cpu挂死前信息的方法和装置、设备和存储介质 | |
CN106250260B (zh) | 处理器溢出监控和调试方法及装置 | |
Jofri et al. | A survey on energy-aware profiler for mobile devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160713 |
|
WD01 | Invention patent application deemed withdrawn after publication |