(计算机系统结构专业论文)仿真平台上linux内核跟踪技术的研究.pdf_第1页
(计算机系统结构专业论文)仿真平台上linux内核跟踪技术的研究.pdf_第2页
(计算机系统结构专业论文)仿真平台上linux内核跟踪技术的研究.pdf_第3页
(计算机系统结构专业论文)仿真平台上linux内核跟踪技术的研究.pdf_第4页
(计算机系统结构专业论文)仿真平台上linux内核跟踪技术的研究.pdf_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华北电力大学硕士学位论文 摘要 本文主要研究仿真平台上对l i n u x 操作系统跟踪技术,对跟踪结果进行数据分 析,并对仿真平台上嵌入式软件的跟踪调试进行探讨。首先研究了在仿真平台下进 行系统分析和软件跟踪工具,分析了与传统硬件平台下进行系统分析和软件跟踪的 优势。其次,提出了仿真平台上跟踪l i n u x 内核的函数及数据跟踪方案,设计了跟 踪l i n u x 内核初始化过程及进程创建和进程调度过程的具体跟踪方案。再次,提出 了跟踪分析这些过程需要跟踪的内核函数和数据结构,实现了设计的l i n u x 内核跟 踪调试方案。最后,根据跟踪方案所记录的跟踪信息流,分析并展示出进程创建以 及进程调度的运行过程。 关键词:仿真平台,内核跟踪,l i n u x 内核,进程创建,进程调度 a b s t r a c t t h i s p a p e rc o n c e n t r a t e s o nt h er e s e a r c ho f t r a c k i n g l i n u xo p e r a t i n g s y s t e m o n s i m u l a t i o np l a t f o r m a n a l y s i st h er e s u l to ft r a c kd a t aa n dd i s c u s s e dt h et r a c k i n ge m b e d d e d s o f t w a r eo ns i m u l a t i o np l a t f o r m f i r s t l y , s t u d yas i m u l a t i o np l a t f o r mf o rs y s t e ma n a l y s i sa n d s o f t w a r et r a c k i n gt o o lp r o p o s e df e a t u r e so ft h i st o o li s a n a l y z e du n d e rt h et r a d i t i o n a l h a r d w a r ep l a t f o r ma n ds o f t w a r ea n a l y s i st ot r a c ka d v a n t a g e s s e c o n d l y , t r a c kl i n u xk e r n e lo n s i m u l a t i o np l a t f o r ma n dd a t at r a c k i n gp r o g r a m ;t od e s i g nt h es p e c i f i ct r a c k i n gp r o g r a mt h a ti s t ot r a c kl i n u xk e r n e li n i t i a l i z a t i o np r o c e s sa n dt h ep r o c e s sc r e a t i o na n dp r o c e s ss c h e d u l i n g p r o c e s s a g a i n ,a n dp r o p o s e df o l l o w - u pa n a l y s i so ft h e s ep r o c e s s e sn e e dt ot r a c kt h ek e r n e l f u n c t i o n sa n dd a t as t r u c t u r e st oa c h i e v et h ed e s i g no ft h el i n u xk e r n e ld e b u gp r o g r a m f i n a l l y , a c c o r d i n gt ot r a c k i n gr e c o r d e db yt r a c k i n gi n f o r m a t i o n ,a n a l y s i sa n dd e m o n s t r a t et h e p r o c e s so fc r e a t i o na n dt h ep r o c e s so fs c h e d u l i n gp r o c e s so fl i n u xo p e r a t i o ns y s t e m l iq i n g q i a n ( c o m p u t e r a r c h i t e c t u r e ) d i r e c t e db yp r o f s h a oz u o z h i k e yw o r d s :s i m u l a t i o np l a t f o r m ,k e r n e lt r a c k ,l i n u xk e r n e l ,c r e a t i o np r o c e s s , s c h e d u l ep r o c e s s 8 舢8咖2舢6 9m7,iiiil唧y 华北电力人学硕+ 学位论文 目录 摘要i a b s t r a c t i 第一章绪论1 1 1 选题背景1 1 2 课题的研究现状2 1 2 1 国内外系统级仿真技术研究现状一2 1 2 2 仿真平台上系统分析与调试工具4 1 3 课题的研究目的和意义6 1 4 本文的研究内容及组织结构一6 第二章仿真平台上lin u x 内核分析跟踪技术。8 2 1 仿真平台上l i n u x 内核跟踪技术8 2 1 1 仿真平台上l i n u x 内核跟踪原理8 2 1 2 仿真平台上l i n u x 内核函数跟踪方案。8 2 1 3 仿真平台上l i n u x 内核数据跟踪方案一9 2 2 仿真平台上l i n u x 内核跟踪方案1 0 第三章仿真平台上l ln u x 内核跟踪模型实现1 3 3 1 仿真平台上组成模块及简介1 3 3 2 仿真平台上l i n u x 内核跟踪模块实现1 5 3 2 1l i n u x 内核初始化过程跟踪内容1 6 3 2 2l i n u x 内核进程创建与进程调度跟踪内容1 7 3 2 3l i n u x 内核数据信息跟踪1 9 第四章仿真平台上l i n u x 内核跟踪数据分析2 2 4 1 构建嵌入式l i n u x 仿真平台一2 2 4 1 1l i n u x 内核裁剪及编译2 2 4 1 2 制作根文件系统2 3 4 2 仿真平台上进程创建和进程调度跟踪数据分析2 6 4 2 1 仿真平台上进程创建过程数据分析2 6 4 2 2 仿真平台上进程调度过程数据分析3 0 第五章总结3 6 参考文献3 7 至炙谢4 0 在学期间发表论文和参加科研情况4 1 华北电力大学硕士学位论文 图索引 图2 一ll i n u x - 2 6 内核堆栈1 2 图3 1 仿真平台结构图1 3 图3 2 跟踪模块流程图2 0 图4 一l 仿真平台上l in u x 内核启动界面2 6 图4 2 进程创建函数跟踪结果2 9 图4 3 进程切换过程跟踪结果。3 2 图4 - 40 号进程内核栈地址3 3 图4 5l 号内核线程转化为l 号进程3 3 l l 华北电力人学硕士学位论文 表索引 表3 1 被跟踪内核函数查找文件1 9 表4 1l i n u x 一2 6 8 1 内核配置2 2 i i i 华北电力大学硕士学位论文 1 1 选题背景 第一章绪论 在计算机、互联网和通信技术高速发展的同时,嵌入式系统开发技术也取得了 迅速的发展。特别是近年来嵌入式领域得到了迅猛地发展,嵌入式系统已经变得无 处不在,嵌入式系统的开发也变得越来越复杂,软硬件的复杂度都大幅度增加,而 市场对于嵌入式系统的开发周期要求也越来越高,这对于嵌入式开发工具也提出了 新的挑战l 。主要表现在以下几个方面: ( 1 ) 开发周期长 嵌入式系统现在越来越复杂,硬件复杂性和软件复杂性大大增加。由于很多硬 件已经高度集成,这导致在目前的嵌入式系统开发中间,软件开发占8 0 以上的工 作量【2 j 。因此,现在某些嵌入式软件开发已经逐步达到中型软件项目的程度,而随 着软件规模的增大,软件按时交付率将会下降,但是市场对嵌入式系统开发周期要 求却越来越短。 嵌入式系统开发中软件和硬件的依赖性非常高,软件开发和硬件开发需要协同 进行,如果能减少两者之间的依赖性,尤其是软件开发对硬件开发的依赖,那么将 可以大大加快开发周期。 ( 2 ) 各类开发工具之间配合复杂 嵌入式系统开发过程中会使用到各种工具,包括i d e 环境、编译工具、软硬件 调试工具、操作系统等等。根据项目的需求,往往会选择来自不同的厂商的工具进 行组合。如果能非常方便地将这些不同厂商的工具无缝地配合起来,对于开发人员 而言很重要,这可以大大减少一些不必要的工作【3 】。 ( 3 ) 嵌入式系统调试复杂 嵌入式系统越来越复杂,很多嵌入式系统都开始使用各种操作系统、使用多核 结构。当需要分析内存错误、多任务之间关系、异常或中断处理、睡眠模式等情况 时,常规的调试方法效果较差,系统实时运行时基本是黑箱运行【4 1 。这就需要更加 强大的调试工具和手段来为开发复杂的嵌入式应用提供支持。 针对传统嵌入式系统开发和调试存在的弊端,经过探索,逐步形成一种在软件 仿真平台上软硬件协同开发和调试技术,即在仿真平台上进行软硬件的开发,在开 发和调试过程中对系统的软硬件功能、性能做出评估,然后实现在真实平台上。在 仿真平台上协同开发系统软硬件,不仅是一种嵌入式开发技术,同时也是一种新的 设计方法学【5 】,即系统级设计。系统级设计核心问题是在设计过程中协调软件子系 统和硬件子系统。它依据系统目标要求,通过综合分析系统软硬件功能及现有资源, 华北电力大学硕士学位论文 最大限度的挖掘系统软硬件设计开发之间的并发性,协同设计软硬件体系结构,以 便系统能工作在最佳状态。这种设计方法,可以充分利用现有的软硬件资源,缩短 系统开发周期、降低开发成本、提高系统性能,避免由于独立设计软硬件体系结构 而带来的弊端。 1 2 课题的研究现状 通过软件仿真的方式来进行嵌入式系统设计开发一直是嵌入式开发工具的重 点发展方向。利用软件仿真技术可以加快软件开发进度,使得软件工程师对硬件工 程师的依赖减弱;同时还减少了对硬件损伤的机会;另外对于学习者提供了廉价的 学习方法,降低了学习门槛。目前,软件仿真技术在嵌入式的各个层面都取得了长 足的发展。 1 2 1 国内外系统级仿真技术研究现状 ( 1 ) 传统的电子设计自动化( e d a ) 仿真技术 c p l d f p g a 的设计是嵌入式系统硬件设计常用的实现方法,而且随着片上系 统设计的增长,e d a 在硬件设计中所占的比例将越来越高,也越来越复杂1 6 l 。目前 的商用e d a 设计软件已普遍具有功能强大的逻辑仿真工具,能进行完备的电路功 能仿真和时序逻辑仿真,对时序和关键路径延时分析已经非常精确。 例如,a l t e r a 公司的设计工具q u a r t u si i 就具备以下强大的仿真及验证工具: t i m e q u e s t 时序分析器、p o w e r p l a y 功耗分析器、芯片规划器、s i g n a l t a pi i 嵌入式 逻辑分析器、r t l 查看器技术映射查看器,还能对第三方验证工具提供支持i 刀。 c p l d f p g a 设计的仿真和验证工具目前已经非常精确,经过仿真工具分析和 验证的设计,基本上就可直接编程使用。硬件工程师更多的工作是使用v h d l 编程 语言进行编程和仿真测试。 ( 2 ) 专用的功能级系统设计仿真工具 在嵌入式开发工具中,有些具备的仿真功能都只是局限予对处理器功能的仿 真。而近来出现的一些仿真工具,已经大大扩大了仿真范围,能仿真各种处理器片 上单元模块,支持各种外部输入信号的仿真,并可以根据仿真的结果对应用程序进 行性能分析,帮助程序员优化软件设计。 例如a r m 公司的r e a l v i e wm d k ,充分发挥了k e i l 公司的z v i s i o n 的模块仿 真优势,支持外部信号仿真、快速指令集仿真、中断仿真、片上外设( a d c 、d a c 、 e b i 、t i m e r s 、u a r t 、c a n 、1 2 c 等等) 仿真等功能,并可将仿真结果以图形化的 方式呈现出来,例如逻辑分析仪、通讯终端等1 8 】。另外,在软件仿真的基础上,m d k 华北电力大学硕士学位论文 的性能分析工具还非常方便用户得到性能分析数据,例如代码覆盖率分析、执行时 间统计等,以进行软件优化。 在功能级仿真平台的设计中,软件仿真还不能取代硬件仿真和测试。但是这种 软件仿真可以使得软件设计人员在硬件设计还没有完成,或者硬件还不是很稳定的 情况,进行软件设计和测试,使得软硬件设计之间的耦合关系减弱,从而可以大大 加快系统设计的进度。但是,这种仿真工具只适用于特定硬件平台的开发工具链中, 不能独立地进行仿真设计开发。 ( 3 ) 通用系统级仿真开发设计技术 系统级设计开发采用系统级设计工具,这种工具具有高仿真速度以及建模效 率、时序和行为可以分开建模、支持基于接口的设计、支持软硬件混合建模、支持 从系统级到门级的无缝过渡、支持系统级调试和系统性能分析等功能,而传统系统 级设计工具所应用的硬件描述语言如v h d l 和v c r i l o gh d l 都不能独立地满足这些 要求。目前有一种所谓的系统级描述语言s l d l ,这种语言能够用于描述各种不同 的抽象级别( 如系统级、寄存器传输级等) ,能够胜任软硬件的协同设计和验证, 并且仿真速度要快。s y s t e m c 就是目前这方面研究最新、最好的成果,他扩展传统 的软件语言c 和c + + 并使他们支持硬件描述,所以可以很好地实现软硬件的协同 设计,是系统级芯片设计语言的发展趋势【9 1 。一方面可以把它看作是与v h d l 或 v e r i l o g 类似的硬件语言, 另一方面可以把它看作纯粹的c + + 程序,只是拥有类似 h d l 的类库支持。这使得s y s t e m c 可以建模不同抽象级别的包括软件和硬件的复 杂电子系统;它既可以提供纯功能模型和系统体系结构,也可以描述软硬件的具体 实现1 1 叭。另外对于嵌入式系统的开发而言,需要将模型同时提供给硬件设计人员和 软件专业人员,s y s t e m c 语言设计考虑到了这一问题,在系统级提供了用于平台建 模的有效机制。 ( 4 ) 仿真平台上嵌入式操作系统移植问题 操作系统在嵌入式系统软件中占有重要地位,操作系统之上的应用层软件设计 往往与p c 机上的应用软件设计区别不大。嵌入式系统上的操作系统通常都是需要 根据处理器以及硬件来进行定制。目前,嵌入式操作系统的移植工作都需要在对硬 件细节有着充分了解情况下才能进行,这使得开发和研究的工作常常会将大量的精 力放在硬件系统上,在硬件不稳定的情况,所花费的时间更是无法预计。 如果建立一个嵌入式操作系统仿真平台,能使得在进行嵌入式操作系统的移植 工作时,比在实际硬件系统上调试操作系统变得方便,这将会大大加快嵌入式操作 系统设计移植工作、应用层软件开发的进度,也可以为初学者提供一个良好的平台。 在x 8 6 结构的p c 计算机上,已经出现了一些商业的操作系统仿真软件,例如v m w a r e 和v i r t u a l p c 等,能完全仿真一个真实的p c ,用户可以在其上安装各种操作系统。 目前,在嵌入式领域还没有出现商业的操作系统仿真平台,但已经出现了一些嵌入 3 华北电力大学硕士学位论文 式操作系统仿真平台的自由软件【1 1 j 。 例如,清华大学陈渝博士于2 0 0 2 年底开始组建的开源项目s k y e y e ,已经可以 已经模拟基于a r m 内核的c p u ,包括a r m 7 t d m i 、a r m 7 2 0 t 、a r m 9 t d m i 、 a r m 9 x x 、a r m l o x x 、s t r o n g a r m 、x s c a l e 等,并扩展了一些处理器的内存控制和 各种i o 控制器,# c l i n u x 、g c o s i i 等多种嵌入式操作系统和各种系统软件( 如 t c p i p ,图形子系统,文件子系统等) 可以在该平台上进行仿真运行,并能对它们 进行源码级的分析和测试。s k y e e y e 项目组,近期已经开始了加入m i p s 处理器内 核的工作【1 2 】。 ( 5 ) 图形化设计方法 图形化开发在嵌入式领域已经越来越多,从硬件设计到软件编程的各个环节中 都已经有了非常多优秀的工具。例如,r e a l v i e wm d k 的启动代码生成器,通过图 形对话框可以非常容易地生成上百行的汇编代码,大大提高了效率,尤其是对于新 手而言。但是这些图形化设计工具都是针对嵌入式系统设计的某个环节而言的。 将整个嵌入式系统的设计图形化是嵌入式系统设计的另一个新趋势。加州大学 伯克利分校的e d w a r dl e e 提出,现在嵌入式系统的开发手段如基于文本编程和面 向对象的工具都难以用来构建嵌入式实时系统,因为面向对象很难直观地表达时间 和并行性,而时间和并行性在现在的嵌入式系统中是必不可少的。e d w a r dl e e 因此 提出了面向角色的图形化方法,它能够更好地表达整个系统,减少与特定硬件以及 操作系统的相关性,这使得更多的软件设计和算法容易理解并被重复使用,更适合 嵌入式系统设计【1 3 】。这种图形化的总体设计简化了嵌入式设计的复杂性,降低了对 系统开发人员和领域专家在嵌入式设计流程中各个步骤的要求,同时提供了从建 模、设计、原型到部署,从软件调试、功能测试到生产检测的统一环境,使得工程 师和科学家们可以更快速地进行重复设计。 由上述可知,软件仿真的作用在嵌入式设计中已经开始逐步扩大。一旦单元 模块仿真技术完善、操作系统仿真技术出现商业化,那么嵌入式设计的过程和方法 很可能将出现重大的变革。其实,目前已经出现了一些商业软件将这个过程中的一 些部分集成起来了,例如单片机仿真软件p r o t e u s ,组合了高级原理布图、混合模式 s p i c e 仿真、p c b 设计以及自动布线,可以实现一个完整的电子设计系统【l 引。 1 2 2 仿真平台上系统分析与调试工具 在仿真平台上进行系统级软硬件设计与传统的软硬件独立设计相比具有很大 的优势,但是,仿真平台上软硬件模块的性能指标直接关系到软硬件产品化后的性 能指标。系统设计的早期阶段对系统的性能指标、体系结构等测试和评估,对于后 续进行实际硬件平台的开发具有成本低、效率高、可靠性好等优点。所以,如果有 4 华北电力大学硕士学位论文 一个可以测量和评估系统软硬件运行功能以及性能的工具来对模型性能进行分析 评估,对产品的开发过程十分有益。这种性能分析和跟踪工具根据仿真平台具有的 运行过程可控制、运行过程中系统各种参数可测量的特点,来实现对仿真平台上系 统级设计的硬件模型和软件程序进行功能及性能的量化分析与跟踪测量,对系统性 能的分析和对于协调和优化系统级的软硬件系统开发和调试有重要意义,具有比传 统平台下性能分析与软件跟踪工具明显的优势。 这种仿真平台上系统级设计的性能分析与软件跟踪调试工具主要具有以下方 面功能: ( 1 ) 对仿真平台的软硬件模块的性能分析评估:根据嵌入式系统硬件组成的 各个部分描述,用一种硬件描述语言如s y s t e m c 等建立硬件模型,可以是r t l 级或功 能级,用系统级设计方法模拟硬件的行为和功能,以此达到仿真的目的。在建立硬 件模型后,需要对此模型以及运行在此模型上的软件进行功能和性能的分析验证, 从而对仿真平台的整体性能进行评估【1 5 l 。利用系统分析来对仿真平台的各种性能参 数和指标进行分析,对了解平台的整体性能、性能瓶颈,然后系统的设计改进有重 要作用。由于仿真平台具有运行过程可控、运行中结果参数可测等特点,在仿真平 台上的分析工具与传统硬件平台上性能分析工具不大一样。在仿真平台硬件模型方 面,这种工具可以评估硬件模型是否可以覆盖到所仿真硬件系统的功能;对硬件模蛾 型进行量化测试,对于其时钟周期,总线频率,硬件访问控制时间、外设状态等方 面的指标进行具体量化评估;对总线上数据流量分析,如i o 间数据流量,产生流量 的原因分析( 事件、时刻、程序) ;c p u 或特定设备的负载分析,如c p u 负载分析, m m u 效率分析,存储页使用分析,c a c h e 效率分析。在运行在硬件模型的软件方面, 这种工具可以对在仿真系统上所运行的程序性能、结构等进行分析,比如进程之间 调度过程分析,函数间相互调用关系,程序中变量使用情况,程序运行的耗时以及 系统结构的静态展示等,如:模块的连接结构,存储映像。 ( 2 ) 对仿真平台上软件进行跟踪和调试:嵌入式软件开发和调试有别于桌面 软件系统开发和调试的一个显著的特点是一般需要一个交叉编译和调试环境,即编 辑和编译软件在主机上进行,编译好的软件需要下载到目标机上运行,主机和目标 机之间建立起通讯连接,并传输调试命令和数据。由于主机和目标机往往运行着不 同的操作系统,而且处理器的体系结构也彼此不同,这就提高了嵌入式软件开发和 调试的复杂性。特别是对于嵌入式操作系统,其开发和调试方法与普通的用户程序 有很大的不同。例如:l i n u x 系统内核的调试相对于一般的应用程序来说,要复杂 艰难得多,目前主要是通过向l i n u x 内核代码中插入探针或钩子函数来截获关于内核 运行过程中产生的有价值信息,但是这种方法需要在内核源代码的基础上加入代 码,在一定程度上影响了l i n u x 内核的正常执行顺序,所调试的功能范围有限,有时 候甚至导致内核的安全性降低。在仿真模型中,对操作系统内核的跟踪调试与传统 5 华= l 匕电力大学硕士学位论文 硬件平台上的跟踪调试不同,它可以实时获取操作系统运行状态,并且还可以获取 操作系统运行中的数据,这种跟踪调试不会对操作系统的正常运行产生影响,所调 试的范围也大大扩展了。 1 3 课题的研究目的和意义 本次设计的内容为在仿真平台上进行l i n u x 内核跟踪技术的研究,主要目的是 探索在仿真系统环境下,对仿真系统的软硬件环境进行性能分析和软件调试工具的 研究与开发,就如何在软硬件系统分析过程中进行跟踪采样和数据分析的设计,如 何在跟踪仿真系统运行的条件下降低对仿真系统运行的影响等方面进行分析与研 究。 由于在硬件平台上对操作系统内核的调试的复杂性,本次设计通过研究在仿真 平台上对l i n u x 内核的跟踪技术,对l i n u x 内核的初始化过程、进程创建、进程调 度的过程以及在内核运行过程中建立的进程控制块等数据信息流进行跟踪记录,并 对这些跟踪记录进行数据分析,展现l i n u x 内核进行初始化、进程创建、进程调度 的过程。对于更好地进行仿真平台的设计开发具有重要意义,同时提供了一种可以 像调试用户程序一样在仿真平台上调试l i n u x 内核的途径,有利于在仿真平台上进 行软硬件的协同开发和调试。对于开发仿真平台上软硬件分析和调试工具,有很好 的参考价值。 1 4 本文的研究内容及组织结构 本课题主要研究以下几个方面的内容: ( 1 ) 本文研究了在仿真平台下进行系统分析和软件跟踪工具,提出了这种工 具的功能特点,分析了与传统硬件平台下进行系统分析和软件跟踪的优势。 ( 2 ) 提出和分析了在仿真平台上进行l i n u x 内核跟踪和调试的方案。分别对 内核函数和内核数据的跟踪方案的特点以及使用情况作了分析。本次设计以跟踪 l i n u x 操作系统内核初始化过程及进程创建和进程调度过程为目标,根据l i n u x 内 核的特点对内核的指令跟踪和数据跟踪设计了具体跟踪方案。 ( 3 ) 研究了仿真平台的结构组成及功能特点,详细分析了l i n u x 内核的初始 化过程、进程创建、进程调度,进程控制块数据结构,并提出了跟踪分析这些过程 需要跟踪的内核函数和数据结构,实现了设计的l i n u x 内核跟踪调试方案,。 ( 4 ) 根据跟踪方案所记录的内核启动过程、进程创建、进程调度以及进程控 制块数据信息流,分析并展示出内核上述运行过程。 本文的组织结构如下:第一章绪论部分,介绍了本文的选题背景、用仿真系统 6 华北电力大学硕士学位论文 进行嵌入式开发的研究现状及相关技术,提出了本文研究的目的和意义;第二章分 析了仿真平台上进行软件跟踪的技术以及有关方案,并对l i n u x 内核跟踪的内容以 及特点进行了分析,根据其特点设计了具体跟踪方案;第三章介绍了结合仿真平台 的特点,分别详细设计了l i n u x 内核初始化过程、进程创建、进程调度、进程控制 块的跟踪方案;第四章为对跟踪结果进行数据分析。通过在仿真平台上构建嵌入式 l i n u x 操作系统,并将裁减的l i n u x 内核移植到该平台上,在其上对内核的启动过 程、进程创建、进程调度以及进程控制块数据信息进行跟踪记录,并对这些跟踪记 录进行数据分析,展现l i n u x 内核进行初始化、进程创建、进程调度的过程:第五 章对本文的研究进行了总结。 华北电力大学硕士学位论文 第二章仿真平台上l in u x 内核分析跟踪技术 2 1 仿真平台上lif l u x 内核跟踪技术 2 1 1 仿真平台上l i n u x 内核跟踪原理 在仿真平台上,系统硬件和软件的运行都处在可控的状态下,任何时刻都可以 观察硬件资源使用情况,包括处理器中各个寄存器值,这些信息对于跟踪调试l i n u x 内核有很重要的意义,也使在仿真环境下进行l i n u x 内核跟踪调试比传统内核调试 更有优势的地方。在本次设计中,主要任务是仿真平台上,利用仿真平台的特点和 l i n u x 内核的特点在不修改l i n u x 内核源代码的基础上对内核的运行过程和运行过 程中的数据结构进行跟踪,并将内核在运行过程中的函数调用及数据结构提取出来 进行内核运行状态和参数的分析。 在仿真平台上增加内核跟踪模块,根据l i n u x 内核原理对内核在运行过程及其 在此过程中的数据结构进行跟踪和数据采集,并对跟踪的结果和数据进行分析,更 好的分析系统的运行状态和进程的参数。内核跟踪模块是根据编译l i n u x 内核后产生 的s y s t e m m a p 文件设计,该文件是个内核符号映射表,它是将内核中的符号( 如内 核中的函数名) 和它的地址联系起来的一个列表【1 6 】,根据p c 值可得出此时内核将 要执行的函数。在内核空间,页表对于每个用户进程来说是共用的,其虚拟地址与 物理地址为线性关系,根据s y s t e m m a p 文件某个内核函数的虚拟地址就可以得到其物 理地址。除了跟踪内核的运行情况外,还有一项重要的工作就是跟踪内核在运行过程中 的数据结构,l i n u x 内核有众多的数据结构,跟踪内核的关键数据结构才能更好的得到 对内核运行有重要价值的信息。对于跟踪l i n u x 内核的数据结构,其中最重要的结构为 t h r e a di n f o 和进程控制块( t a s ks t r u c t ) 两个结构体,进程控制块是进程资源分配的基 本单位,进程控制块是进程信息的数据集合,在该数据结构中,有关进程的大部分 信息都存放在这里,其中包括:进程状态信息、进程调度信息、进程标识符、与进 程通信和链接的信息、时间和定时器信息、虚拟内存信息等,跟踪进程控制块可以 得到系统中各个进程在运行时的相关信息。 2 1 2 仿真平台上lin u x 内核函数跟踪方案 ( 1 ) 实时跟踪、事后分析法。在仿真平台上跟踪l i n u x 内核运行,将程序执 8 华北电力大学硕士学位论文 行的每一条指令地址记录下来,待被跟踪程序运行结束后,根据记录结果对程序的 指令流进行分析。这种方案的优点是对内核信息跟踪全面,但由于跟踪结果产生大 量的冗余信息,通过分析指令地址对其内核运行进行分析的工作量比较大,如果需 要对l i n u x 内核进行精确跟踪和分析,这种方案比较适合,如果只需关心程序运行 的少量信息,不需要对其每一个过程进行跟踪分析,则用此方案会是分析工作变得 繁杂,且分析效率不高。 ( 2 ) 实时跟踪、实时分析法。对l i n u x 内核进行实时跟踪和分析,即在每次 执行指令时,将该指令地址与内核函数中的每个函数地址进行比对,来判断执行到 某个函数并对内核函数的运行情况、处理器状态、该函数运行的上下文等进行分析。 这种方案不会对每条指令跟踪和记录,只对内核函数进行跟踪,可以减少分析指令 流的工作量,同时对内核函数的运行情况有详细的跟踪。但是在c p u 每次取指后 与每个内核函数地址进行比对,也会产生一些冗余信息,对分析内核函数运行情况 也有一定的影响。 ( 3 ) 实时跟踪、重点分析法。根据设计的l i n u x 内核跟踪要求及l i n u x 内核运 行的特点,对以上两种指令跟踪方法进行优化和改进。这种方案不对l i n u x 内核所 有函数进行跟踪分析,而只是根据设计的跟踪目标或者自己关心的函数和运行状态 进行跟踪,不需要每次执行指令时对每个内核函数进行对比,对平台运行时间及性 能的影响不大,减少了对跟踪结果分析的工作量。 以上几种对程序的指令的跟踪方案,应该根据仿真平台以及程序的特点,同时 结合对跟踪的要求来进行选择使用。 2 1 3 仿真平台上l i n u x 内核数据跟踪方案 ( 1 ) 对程序数据的跟踪可以通过指令仿真器( i s s ) 中执行指令的同时取得程 序将要访问的地址和数据,通过跟踪访存指令来取得相应数据。这种方式对于程序 中访问和产生的数据都可以进行获取,可以最大限度的满足跟踪程序需要,但是, 如果所仿真体系结构中的访存指令过多,在每条访存指令进行访存处加入数据跟踪 函数,对于编程会有比较大的工作量,程序的可读性比较差。 ( 2 ) 当仿真的硬件系统中支持m m u 时,可以通过所有访存函数调用m m u 时,利用m m u 的存取函数进行数据的获取,虽然处理器中的访存指令众多,但是 这些访存指令最终需要通过m m u 模块进行数据的存取访问,而m m u 模块中的访 存函数有限,这样可以减少编程的工作量。同时,该方案还能同时获取访存指令访 问数据的虚拟地址及其对应的物理地址,对于分析系统的运行有一定的帮助。 ( 3 ) 可以通过分析l i n u x 内核数据结构的特点来得到所要访问的数据,通过 分析l i n u x 内核数据结构以及这些数据结构的相互关系,从而可以直接或者间接得 9 华北电力大学硕士学位论文 到某一个或某一块内存的物理地址,然后利用仿真平台上内存存取函数来对相应的 存储数据进行读取。这种方案适用于被跟踪程序具备一些特点,如访问数据内存物 理地址可知、数据块连续读取等。可以避免每次跟踪访存指令对内存数据进行存取, 提高了仿真平台跟踪性能。 2 2 仿真平台上l in u x 内核跟踪方案 本次设计的跟踪l i n u x 内核的目标,主要完成其初始化阶段以及进程创建和进 程调度过程的跟踪,并且在跟踪的过程中,对进程的一些基本信息和数据结构进行 获取,基于这样的目的选择既不会对仿真平台的跟踪速度有明显影响,又可以达到 跟踪目的的方案。 ( 1 ) 内核初始化过程:内核的初始化是系统将操作权交给内核后的第一项工 作,l i n u x 内核初始化从s t a r t _ k e r n e l 0 开始。s t a r t _ k e r n e l o 函数将进行一系列的初始 化工作。这些初始化将把系统带入一个稳定而且大部分服务都具备的状态【1 7 】。在内 核初始化阶段在s t a r tk e r n e l 中将调用到大量的i n i t 函数,来完成内核的各种初始化。 例如: p a g e a d d r e s s i n i t o ; s c h e d _ i n i t ( ) ; p a g e a l l o c _ i n i t o ; i n i t i r q o ; s o f t i r q _ i n i t o ; c o n s o l e _ i n i t o ; r e s t _ i n i t o ; 这些函数主要任务是进行硬件平台初始化、页表初始化、 络初始化、文件系统初始化等等,虽然内核初始化函数众多, 理相关的函数有6 个。 中断处理初始化、网 经过分析,与进程管 ( 2 ) 进程创建及调度过程:进程的创建和调度是操作系统最基本的功能之一, 也是应用软件开发的基础。由于进程的创建和调度涉及硬件系统的访问和操作,可 以通过跟踪进程创建和调度的过程和情况,对仿真平台的硬件模型进行优化和调 试。在l i n u x 系统中,创建进程调用f o r k ( ) 函数,当进程调用该函数时,系统会产生 一个t a s ks t r u c t 结构。然后从父进程,那里继承一些数据,并把新的进程插入到进程 树中,以待进行进程管理【1 8 】。在进程调度时,内核需要完成两个进程之间的切换, 在切换的过程中分为两步:首先,进行进程地址空间的切换,由系统函数s w i t c hm m o 来完成进行用户空问的切换,主要任务是切换地址转换表( p 鲥) ;其次,进行寄存器 1 0 华北电力大学硕士学位论文 上下文的切换,由s w i t c ht o 宏来实现,这个宏的实现依赖于其处理器类型,主要 完成通用寄存器,浮点寄存器,程序计数器,状态寄存器,内核栈等上下文的切换 1 9 1 o 根据l i n u x 内核指令跟踪思路,对函数的跟踪主要是通过查找s y s t e m m a p 文件 中函数地址来进行的,编译后生成的该文件中内核函数达5 0 0 0 多个。若对内核函 数逐一进行跟踪,仿真速度必然会大幅度下降。通过分析内核运行过程可知,在内 核初始过程中,虽然有众多初始化函数,但与进程管理相关的初始化函数十分有限; 同时,通过跟踪几个关键过程函数就可以分析处进程创建和进程调度过程。因此, 指令跟踪采用实时跟踪、重点分析可以减少取值时c p u 指令地址比较的次数,对 仿真平台运行跟踪程序影响也有限。 本次设计数据跟踪内容,重点跟踪进程控制块结构( t a s k结构)、进程struct t h r e a d i n f o 结构、进程页表地址等信息。由于l i n u x 内核进程所含信息多,成员复 杂,如果对这些信息通过访存指令进行获取,对仿真平台的开销是巨大的,特别是 得到的数据后,需要进行数据的分析,耗时也很大。并且,进程控制块是在进程创 建时由系统动态创建,在此情况下,通过跟踪访存指令来获取进程控制块的信息会 变得非常复杂,也不易分析。 在l i n u x 系统下,每个进程都有两个栈:用户栈和内核栈。其中在内核2 6 中 内核堆栈定义为: u n i o nt h r e a d _ u n i o n s t m c tt h r e a d i n f ot h r e a d _ i n f o ; u n s i g n e dl o n gs t a c k t h r e a d s i z e s i z e o f ( 1 0 n g ) 】; ) ; 根据内核的配置,t h r e a ds i z e 既可以是4 k 字节( 1 个页面) 也可以是8 k 字 节( 2 个页面) 。t h r e a d i n f o 是5 2 个字节长【2 0 1 。进程控制块( t a s k _ s t r u c t 结构) 与进程的 t h r e a d i n f o 结构、t h r e a di n f o 结构与内核栈的关系如图2 1 所示,通过分别屏蔽掉 内核栈的1 2 b i tl s b ( 4 k ) 或1 3 b i tl s b ( 8 目,获得内核栈的起始位置,该地址就是 t h r e a d i n f o 结构的地址。如果得到了t h r e a di n f o 结构,调用仿真平台上的内存调用 函数来获取该结构体的数据块,通过查找该结构体中t a s k 字段,获得该进程控制块 ( t a s k s t r u c t 结构) 的地址,进而可以通过仿真平台的访存函数得到进程控制块 ( t a s k结构) 的内容。对进程的页表基址的获取可以通过读取体系结构的struct a r m c p l 5 协处理器的r 2 寄存器得到,该寄存器的值即为进程页表的物理基址。 由以上分析可知:进程控制块的信息不必通过跟踪访存指令来获取,可以利用 l i n u x 内核中内核栈与t h r e a di n f o 的关系,以及t h r e a di n f o 与进程控制块的关系间 接获得进程控制块的信息。这样,既不需要指令集仿真器的程序结构进行大量改动, 减少了编程工作量,而且也可以全面地获取到进程相关信息。 1 1 华北电力大学硕士学位论文 0 x 0 1 5 f b 蕾f 伽m 1 5 f b 0 0 0 仍【0 1 5 躺7 8 呶0 1 5 f a 0 3 4 仍【0 1 5 f a 0 0 0 图2 1l i n u x 2 6 内核堆栈 1 2 华北电力大学硕士学位论文 第三章仿真平台上l in u x 内核跟踪模型实现 3 1 仿真平台上组成模块及简介 本次设计采用基于a r m 9 2 0 t 核的$ 3 c 2 4 1 0 芯片的仿真平台。该硬件模型平台 目前包括c p u 模型、m e m o r y 模型、s y s t i m e 模型、r t c 模型、i n t c t r l 模型、 u a r t 模型、p m w 模型。虽然该仿真平台并没有实现$ 3 c 2 4 1 0 的全部功能,但已 经能够满足l i n u x 内核最小系统的运行要求。为叙述方便,以下简称该硬件模型平 台为s o c 模型平台。该模型是系统级模型,因此运行速度快,能够满足l i n u x 运行 的需求。平台的运行可控的,可以追踪每条指令的执行状态,任意设置断点观察运 行情况,甚至人为指定测试某种极端的、真实硬件难以捕获的情形。这些模块是由 s y s t e m c 语言封装或者构建的,图3 1 描述的是仿真平台的结构。 图3 1 仿真平台结构图 s o c 模型平台执行应用程序的基本流程是:c p u 处理器模块发送指令地址及数 据地址给d e c o d e r 模块,d e c o d e r 模块根据地址,驱动不同的模块执行相应的 操作。下面是每个模块的功能简介: c p u 模块:本模块主要功能是进行可执行文件的取指、译码、执行功能,译码 和执行的动作是通过指令仿真集( i s s ) 来实现的。指令集仿真器模型采用解释型 指令集仿真器,将应用程序装载入仿真的存储中,在运行时模拟c p u 执行指令的 1 3 型不支持m m u ( 如a r m 7 t d m i ) ,则仿真平台会根据将访问的地址,直接转到 m e m o r y 模拟模块或开发板i o 模拟模块。 内存模块:本模块在结构上仿真$ 3 c 2 4 1 0 芯片的内存模块,它的主要任务包括: 根据配置文件进行内存初始化,并加载二进制文件;进行r a m r o m 读写的模拟。 根据$ 3 c 2 4 1 0 芯片的内存模块的组成与功能,仿真平台设计了三种内存读取的函 数。 v o i dm e m w ( u n s i g n e di n ta d d r ,u n s i g n e di n t 串d a t a ,i n t 姗) ; v o i dm e m h w ( u n s i g n e di n ta d d r ,u n s i g n e ds h o r t 宰d a t a ,i n tr w ) ; v o i dm e m c ( u n s i g n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论