基于嵌入式linux的内核错误跟踪技术

基于嵌入式linux的内核错误跟踪技术

ID:34142312

大小:407.08 KB

页数:8页

时间:2019-03-03

基于嵌入式linux的内核错误跟踪技术_第1页
基于嵌入式linux的内核错误跟踪技术_第2页
基于嵌入式linux的内核错误跟踪技术_第3页
基于嵌入式linux的内核错误跟踪技术_第4页
基于嵌入式linux的内核错误跟踪技术_第5页
资源描述:

《基于嵌入式linux的内核错误跟踪技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、http://www.paper.edu.cn基于嵌入式Linux的内核错误跟踪技术黎亮,傅一帆华北计算机系统工程研究所,北京(100083)E-mail:oliliango@gmail.com摘要:为提高操作系统的可靠性,其中一个措施是在内核发生错误时把整个内存映像记录下来,以供分析改进。但嵌入式应用要求出错复位后重新启动要快,且存储空间小而不能容纳整个内存映像,据此开发了一种精简的内核崩溃信息记录技术,保存函数调用链和有选择的记录函数栈内容。记录下的内容可有效的分析定位问题,精简的记录存储也满足了复位

2、后快速重启的要求。关键词:Linux内核,崩溃转储,嵌入式系统中图分类号:TP311.561.概述随着嵌入式Linux系统得到广泛应用,对系统的可靠性提出了更高的要求,尤其是涉[16]及对生命财产等重要领域,要求系统达到安全完整性等级3以上,故障率(每小时出现-7危险故障的可能性)为10以下,相当于系统的平均故障间隔时间(MTBF)至少要达到1141年以上,提高可靠性成为一项艰巨的任务。据对某公司在工业领域14878个控制器系统的应用调查,从2004年到2007年9月底,随着硬软件的不断改进,根据错误报告

3、统计的故障率降低到2004年的五分之一以下,但查找错误的时间增加到原来的3倍以上,如下图1所示。图1控制器系统的故障率和错误平均查找时间这种解决问题所需时间呈上升的趋势固然有软件问题更复杂的因素,但缺乏必要的手段以辅助解决问题才是主要的原因。通过对故障的统计跟踪发现,难于解决的软件错误和从发现到得到解决耗时较长的软件错误集中在操作系统核心部分,这其中又有很大比例集中在[1][15]驱动程序部分。因此,错误跟踪技术被看成是提高系统安全完整性等级的一个重要措施[16],大多数现代操作系统均发展提供了操作系统内

4、核“崩溃转储”机制。即在软件系统宕机时[2][14][15][2]或者将内存内容保存到磁盘,或者通过网络发送到故障服务器,或者直接启动内核[4][12][13]调试器等,以供事后分析改进。基于Linux操作系统内核的崩溃转储机制近年来有以下几种:[2](1)LKCD(LinuxKernelCrashDump)机制-1-http://www.paper.edu.cn[3](2)KDUMP(LinuxKernelDump)机制[4](3)KDB机制[5](4)KGDB机制综合上述几种机制,可以发现他们有以下三

5、个共同点:(1)适用于为运算资源丰富,存储空间充足的应用场合(2)发生系统崩溃后恢复时间无严格要求(3)主要针对较通用的硬件平台,如X86平台在嵌入式应用场合想要直接使用上列机制中的某种,却遇到以下三个难点无法解决:©存储空间不足嵌入式系统一般采用flash作为存储器,且作为存储器的flash容量有限,且可能远远小于嵌入式系统中内存容量。因此将全部内存内容保存到flash不可行。©记录时间要求尽量短嵌入式系统一般有复位响应时间尽量短的要求,有的嵌入式操作系统复位重启时间不超过2秒,而上述几种可用于Linu

6、x系统的内核崩溃转储机制耗时均不可能在30秒内。写flash的操作也很耗时间,实验显示,写2M数据到flash耗时达到400毫秒之多。©嵌入式应用平台广泛,要求对特定的硬件平台能够支持嵌入式系统的硬件多种多样,上面提到的4种机制均针对X86平台提供较好的支持,而对于其他体系的硬件支持均不成熟。由于这些难点的存在,将上述的四种内核崩溃转储机制中的一种移植到特定的嵌入式应用平台困难重重而不可行。因此,针对上文提到的嵌入式系统的三个特点,发展一种基于特定平台的嵌入式Linux内核崩溃信息记录机制(LinuxCr

7、ashRecordandTrace,下文中简称其为LCRT机制),为定位嵌入式Linux系统中软件故障和解决软件故障提供辅助手段。2.Linux内核崩溃的分析分析Linux内核对于运行期间各种“陷阱”的处理,可以得知Linux内核对于应用程序导致的错误可以予以监控,在应用程序发生除零,内存访问越界,缓冲区溢出等错误时Linux内核的异常处理例程可以对这些由应用程序引起的异常情况予以处理。当应用程序产生不可恢复的错误时,Linux内核可以仅仅终止产生错误的应用程序,其他应用程序仍然可以正常运行。如果Linu

8、x内核本身或者新开发的Linux内核模块存在bug,产生了“除零”,“内存访问越界”,“缓冲区溢出”等错误,同样会由Linux内核的异常处理例程来处理这些情况。Linux内核通过在异常处理程序中判断,如果发现是“严重的不可恢复”的内核异常,则会导致“内核恐慌”(kernelpanic),即Linux内核崩溃。[6]如图2所示Linux内核对异常情况的处理流程:-2-http://www.paper.edu.cn图2Linux内

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。