(计算机应用技术专业论文)linux虚拟调试系统关键技术的研究与实现.pdf_第1页
(计算机应用技术专业论文)linux虚拟调试系统关键技术的研究与实现.pdf_第2页
(计算机应用技术专业论文)linux虚拟调试系统关键技术的研究与实现.pdf_第3页
(计算机应用技术专业论文)linux虚拟调试系统关键技术的研究与实现.pdf_第4页
(计算机应用技术专业论文)linux虚拟调试系统关键技术的研究与实现.pdf_第5页
已阅读5页,还剩80页未读 继续免费阅读

(计算机应用技术专业论文)linux虚拟调试系统关键技术的研究与实现.pdf.pdf 免费下载

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

文档简介

o 一 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明 确的说明并表示谢意。 签名:盔呈整挞 日期:刊口年广月啪 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 躲盘整赶! 翩躲趣 日期:年月 曰 2 o 0 警w , 、 摘要 摘要 目前l i n u x 内核开发工作的工程师们始终没有能找到一种高效、快捷的调试方 法。这当然与l i n u x 内核的开源性有关。内核开发者可以根据自己需要来修改内核, 这种修改打破了内核的统一。要实现一种适合所有修改内核的调试工具显然不合 适,同时由于调试的意图也不一样( 查看关键变量值或状态、执行某个逻辑过程、 给测试人员使用) 要实现统一的调试工具就更加困难。目前常用的l i n u x 内核调试 方法有p r i n t k ,k d b ,k p r o b e s ,k g d b 。其中p r i n t k 是用户通过在代码中增加打印信 息来查看程序的执行情况。它调试手段单一,无法动态调试一些关键逻辑过程, 和用户的交互性差。k d b 无法直接使用到裁减过的l i n u x 内核上。k p r o b e s 工具软 件使用复杂,且对使用者要求高。同时对该工具使用需要有一定时间、和经验的 积累。k g d b 软件适合远程调试,需要两台机器才能搭建好环境,占用过多资源。 本文根据实际的工程项目需求,结合l i n u x 内核虚拟文件系统和s c s i 中层的 软件设计原则提出了v t l s ( v i r t u a lt e s tl a y e rs y s t e m ) 。v t l s 以一种统一和具体内 核版本无关调试方式提供给开发者、测试者、维护者使用。它能够让内核模块开 发者自己决定需要的调试点,并在软件运行过程中动态执行调试代码,即时向用 户输出调试结果。开发者自己决定用户态下的输入命令,并且支持多内核模块的 调试。该系统同时向测试人员提供测试接口,测试人员只需要在用户态下执行相 关命令行就可以调用内核相关例程,并即时查看执行结果。软件后期的维护者可 以根据开发者提供的调试手册通过执行对应的调试命令快速排查问题,找出问题 的根源,这会大大降低产品的后期维护成本。l s 系统的k v t m ( k e r n e lv i r t u a l t e s tm o d u l e ) 设计采用独立性的思想,通过降低和被调试模块间的耦合度提高了 系统的稳定性,使得v t l s 系统能够在大型的工程项目中发挥其高效的优势。被 调试模块只需要调用k v t m 的注册函数和注销函数就可以完成向v t l s 添加调试 命令和注销命令的功能。l s 系统的u v t m ( u s e rv i r t u a lt e s tm o d u l e ) 通过提 供t a b 键联想命令、上下键翻转历史命令、编辑错误命令等功能为用户提供最快 捷的调试方式。同时k v t m 和u v t m 采用多样化的通信方式可以避免单点故障, 在一种方式交互失败情况下,可以通过其他方式( 字符驱动、p r o o f s 、i o 共享) 查 看甚至修复k v t m 的错误。 关键词:l i n u x ,调试系统,内核模块,v r l s ,k v t m ,i 删,调试代码 t l丫心, a b s t r a c t a bs t r a c t c u r r e n t l y , l i n u xk e r n e ld e v e l o p m e n t e f f i c i e n t ,f a s td e b u g g i n gm e t h o d t h i s ,o f e n g i n e e r sh a v en e v e rb e e na b l et of i n da l l c o u r s e ,h a v es o m er e l a t i o n s h i pw i t hl i n u x k e r n e l 、so p e n - s o u r c ec h a r a c t e r i s t i c s k e r n e ld e v e l o p e r sc a nm o d i f yt h ek e r n e la c c o r d i n g t ot h e i ro w nn e e d s ,b u ts u c ha l la m e n d m e n tw o u l db r e a kt h eu n i t yo ft h ek e r n e l t o a c h i e v eas u i t a b l ek e r n e ld e b u g g i n gt o o l sf o ra l lc h a n g e si sc l e a r l yi n a p p r o p r i a t e a tt h e s a m et i m e ,t h ea t t e n t i o no fd e b u g g i n gi sn o ta l lt h es a m e ( f o re x a m p l e s :t oc h e c k et h e k e yv a r i a b l eo rs t a t e ,t oi m p l e m e n tal o g i c a lp r o c e s so rt og i v ei t f o rt e s t e r s ) ,s ot o a c h i v eau n i f i e dd e v u g g i n gt o o l ss e e m se v e nm o r ed i f f c u l t a tp r e s e n tt h ec o m m o n l y w a y su s e di nl i n u xk e r n e ld e b u g g i n ga r ep r i n t k ,k d b ,k p r o b e s ,k g d b u s e rc a nu s e p r i n t kt op r i n ts o m ei n f o r m a t i o nd u r i n gt h ec o d ee x e c u t i n g p r i n t ki saw a y t od e b u ga s i n g l e ,b u ti t i su n a b l et od e b u gs o m eo ft h ek e yl o g i co fd y n a m i cp r o c e s s e s ,a n dt h e u s e ri n t e r a c t i o ni sp o o rk d bc a nn o tb ed i r e c t l yu s e dt ot h el i n u xk e r n e lt h a th a v e d b e e dm o d i f i e d t h eu s eo fk p r o b e st o o l si ss oc o m p l e x ,a n dt h er e q u i r e m e n t si ss o h i g h l y ( t h eu s e rh a v eh a r d w a r ek n o w l e d g ea n df a m i l i a rw i t ht h el i n u xs y s t e m ) a tt h e s a m et i m eu s eo fk p r o b e sn e e da c c u m u l a t i o no ft i m ea n de x p e r i e n c e k g d bs o f t w a r e s u i t a b l ef o rr e m o t ed e b u g g i n g ,b u ti tn e e dt ot a k et w om a c h i n e si no r d e rt ob u i l dag o o d e n v i r o n m e n ta n dt h i st a k eu pt o om a n yr e s o u r c e s b a s e do nt h ea c t u a lp r o j e c tn e e d s ,c o m b i n e dw i t hl i n u xk e r n e lv i r t u a lf i l es y s t e m a n dt h es c s im i d l e v e ls o f t w a r ed e s i g np r i n c i p l e s ,w ep u tf o r w a r dt h ev t l s ( v i r t u a l t e s tl a y e rs y s t e m ) v t l sc a nb ep r o v i d e dt od e v e l o p e r s ,t e s t e r s ,m a i n t a i n e r si naw a y o fu n i f o r ma n di n d e p e n d e n to ft h es p e c i f i ck e r n e lv e r s i o n i tc a nl e tt h ek e r n e lm o d u l e d e v e l o p e r s t od e c i d et h e i rd e b u g g i n g p o i n t ,e x e c u t ed e b u g g i n gc o d e ,c h e c kt h e d e b u g g i n gr e s u l tr e a l - t i m e d e v e l o p e r sc a nd e c i d et h ec o m m a n dt h a tu s e rc a ne n t e ra n d a tt h es a m et i m ev t l ss u p p o r t sm u l t i - k e r n e lm o d u l ed e b u g g i n g t h es y s t e ma l s o p r o v i d e si n t e r f a c et ot e s tp e r s o n n e lw h oo n l yn e e dt oe n t e ra t e s tc m m a n d a n di tc a l l t h er e l e v a n tk e r n e l - r e l a t e dr o u t i n e s ,a n di m m e d i a t e l ys e et h er e s u l t sa c h i e v e d a tt h e l a t t e rp a r to ft h es o f t w a r ed e v e l o p m e n t ,d e v e l o p e r sc a nd e b u gp r o b l e m st h r o u g ht h e i m p l e m e n t a t i o no f t h ec o r r e s p o n d i n g d e b u gc o m m a n d t ot r o u b l e s h o o tp r o b l e m sq u i c k l y , i i a b s t r a c t a n di d e n t i f yt h er o o to ft h ep r o b l e m ,w h i c hw o u l ds i g n i f i c a n t l yr e d u c et h ep r o d u c to f t h ep o s t m a i n t e n a n c ec o s t s v t l ss y s t e m 、sk v t m ( k e r n e lv i r t u a lt e s tm o d u l 曲i s d e s i g n e dw i t ht h ei d e ao fi n d e p e n d e n c e a n dt h i sw a yc a nb eu s e dt or e d u c et h e c o h e s i o no fd i f f e r e n tk e r n e lm o d u l e s ,a n di n c r e a s et h es t a b i l i t yo ft h es y s t e m ,w h i c h m a k ev t l sah i g l lw a yi nl a r g e - s c a l ep r o j e c t s t h ed e b u gm o d u l e so n l yn e e dt ou s e r e g i s t e rf u n c t i o no ru n r e g i s t e rf u n c t i o nt oa d do rd e l e t eat e s tc o m m a n di nv t l s v t l s 、su v t m ( u s e rv i r t u a lt e s tm o d u l e ) m o d u l ec a np r o v i d eu s e rt h ef a s td e b u gw a y b yt a bk e yt h i n k i n gc o m m a n d ,u pa n dd o w nk e y sc h a n g i n gh i s t o r yc o m m a n d ,a n d e d i t i n gt h ee r r o rc o m m a n d a tt h es a m et i m ek v t ma n du v t m c a l lc o m m u n i c a t ew i t h e a c ho t h e ri nm a n yw a y s ,a n dt h i sc a na v o i ds i n g l ep o i n tp a i l u r e f o re x a m p l e ,w h e n u s eo n ew a yi n t e r a c tf a i l u r e s ,i tc a nu s eo t h e rw a y s ( c h a r a c t e r - d r i v e n ,p r o c f s ,i os h a r i n g ) k e y w o r d s :d e b u g g i n gs y s t e m ,k e r n e lm o d u l e ,v t l s ,k v t m ,u v t m ,d e b u g g i n g c o d e i i i 0 二, 目录 目录 第一章绪论1 1 1 课题背景和来源1 1 2 l i n u x 内核调试技术的发展现状2 1 3 主要研究内容2 1 3 1 模块间耦合性一3 1 3 2 资源独立性3 1 3 3 软件可扩展性和复用性3 1 3 4 易用性一3 1 3 5 内核态与用户态通信4 1 4 技术路线4 1 5 论文组织结构5 第二章相关理论和技术。7 2 1l i n u x 虚拟文件系统( w s ) 7 2 1 1v f s 综j 苤7 2 1 2v f s 架构分析8 2 1 3v f s 设计思想研究总结9 2 2l i n u x 内核s c s i 子系统9 2 2 1s c s i 子系统介绍9 2 2 2s c s i 架构10 2 2 3s c s i 中层设计研究总结一12 2 3l i n u x 字符驱动1 2 2 3 1 字符驱动介绍一1 2 2 3 2 字符驱动研究总结1 4 2 ,4p r o c f s 文件系统1 4 2 4 1 p r o c 目录介绍1 5 2 4 2p r o c 内核接口与使用方式1 5 2 4 3p r o c 总结1 7 2 5l i n u x 终端控制l7 目录 2 5 1 终端分类l7 v ,; 目录 4 4 2 上下键使用历史命令5 0 4 4 3 命令帮助信息提取设计。5 0 4 5 本章小结5 0 第五章通信模块设计。5 0 5 1 设计目的5 0 5 2 设计思想5 0 5 3p r o c f s 查看k v t m 状态5 0 5 3 1p r o c f s 显示内容设计【3 5 】5 0 5 3 2 读取k v t m 接口5 0 5 4 虚拟字符驱动子模块5 0 5 5 大数据块共享5 0 5 5 1 内存共享支持5 0 5 5 2v i i l s 内存映射设计原理5 0 5 6 应用分析5 0 5 6 1 应用场景介绍一5 0 5 6 2 效果检验一5 0 5 7 本章总结一5 0 第六章总结与展望5 0 j l l 【谢5 0 参考文献5 0 个人简历和在学习期间发表的学术论文5 0 v l , 图目录 图目录 图1 1 存储控制器软件内核架构1 图2 1v f s 在l i n u x 文件系统中位置8 图2 2v f s 中文件系统注册表组成9 图2 3s c s i 三层模型1 1 图3 1 虚拟调试系统设计框架2 1 图3 2v t l s 接口位置2 2 图3 3 模块调试链表2 3 图3 4 命令树拓扑结构2 5 图3 5 命令初始化过程2 6 图3 - 6 修改命令树过程2 8 图3 7 被调试模块反注册处理流程3 0 图3 8 命令处理过程3 8 图4 1v t l s 登录界面4 0 图4 2u v t m 命令接收过程4 6 图4 3 字符驱动打开过程4 8 图4 _ 4 初始化命令数组4 8 图4 5t a b 键联想设计原理4 9 图4 - 6 历史命令淘汰方式【4 5 1 5 0 图5 1 多用户登录v t l s 5 2 图5 2k v t m 状态变迁5 4 图5 3 虚拟字符驱动和k v t m 通信接口5 6 图5 - 4m m a p 和i o r e m a p 函数5 7 图5 5 内存映射过程5 9 图5 - 6v r l s 系统状态检测6 l 图5 7 查看系统注册命令6 2 图5 8t e s t c o m m a n d 命令执行情况一6 2 图5 - 9 业务开启过程6 3 图5 1 0 停业务执行过程6 3 v l i 表目录 表目录 表1 - 1 软件易用性分布4 表l 一2 内核与用户态通信方式4 表2 - 1 常用s c s i 命令1o 表3 1 命令组织方式3 1 表5 1 工程调试时间调查6 3 v i , 第一章绪论 1 1 课题背景和来源 第一章绪论 随着l i n u x 内核开发工作的增加,越来越多的调试手段和调试方法被引入到内 核。由于内核开发的特殊性,它不能像在用户态一样和开发者有良好的交互性。 在大型的内核软件项目开发过程中,“调试”的概念已经超过普通所说调试的范畴。 因为使用它不仅包括开发人员还包括测试人员。开发者会在软件开发过程中使用 调试工具执行普通调试,如查看变量值,执行单步等功能。而测试者则是通过调 试工具执行具体功能和性能测试,并查看执行结果信息。因此、内核的调试工具 已经超过普通意义上所说的调试工具,它是集调试,测试功能与一身的工具软件。 图1 。1 是目前存储界各大厂商( 如e m c 、i b m 、h p ) 普遍使用的控制器( 双控) 系统架 构【l 】。各个模块都在逻辑上完成一定的功能算法,但是在整体上它们又是前后联系 的,如h m p ( 主机多路径模块) 负责判断数据流是经过本端下发还是走i b s 通过对 端下发。本端进入c a c h e 模块,继续c a c h e 模块的逻辑处理。s y s m ( 系统管理) 负责对整个系统模块的监视、和管理工作。所有这些模块都是运行在内核状态下, 系统启动过程中按照由下往上的顺序加载各个模块,当所有模块加载完成后由 s y s m 模块负责发送开工命令,让各个模块真正开始工作。 图1 - 1 存储控制器软件内核架构 电子科技大学硕士学位论文 面对这么一个复杂、代码量庞大( 5 0 万行) 系统如何从用户界面以命令行的方式 对其各个模块可访问、和查看模块状态甚至控制模块中一些关键流程工作的起停 就显得非常重要。 本课题来源于中国电子科技集团公司第十研究所某大型军工存储服务器开发 项目。该项目通过独立双控来实现数据的高效可靠存储功能。本课题在研究所内 软件工具的可复用性要求下设计并开发出面向开发人员、测试人员的工具软件。 软件先后借鉴虚拟文件系统和s c s i 中层设计思想,使用l i n u x 虚拟字符驱动和p r o c 文件系统等功能。 1 2 lin 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 官方组织认可,但他们确实功能完善,十分强大。调试内核问题时,利用这 些工具与方法跟踪内核执行情况,并查看其内存和数据结构将是非常有用的。 目前业界还没有一种统一的模式来整合调试、查看各模块状态、控制各模块 运行与一体的软件。目前国内各大公司现有的方式是针对具体某个模块的调试, 如通过字符驱动的i o c t l 系统调用查看一个模块的关键状态,执行流程等信息。这 种方式没有扩展性,当模块数多于一个,尤其是模块之间存在复杂的调用关系时, 该方式就不能简单扩展,而是需要针对每个模块写一个字符驱动。这一方面给给 后期维护人员带来代码复杂性和可阅读性,另一方面由于测试人员不能在一种统 一的界面下执行测试任务,从而加重了测试人员的工作。因此寻求一种简洁、统 一的调试方法已经成为一个迫在眉睫的技术问题,各个l i n u x 厂商也开始进入该领 域内。 1 3 主要研究内容 实现一个可移植到不同l i n u x 内核版本上,并有良好的用户交互性的调试系统 2 第一章绪论 ( v i r t u a lt e s tl a y e rs y s t e m ) ,要求设计过程中考虑调试系统模块和内核被调试模块 间的耦合性,将耦合性降低到最小。同时由于具有可移植性,对调试系统需要分 配的资源也需要独立申请,实现和内核无关的资源分配接口。由于调试系统只对 被调试模块导出必要的接口,调试系统的大部分实现对被调试模块是透明的。调 试系统分为内核和用户态两部分,因此,这两部分之间的高效通信对系统的稳定 性来说很重要。v t l s 可动态扩展被调试模块的数量,系统设计时的扩展性和复用 性就显得尤为重要。 1 3 1 模块间耦合性 v ,r l s 和内核被调试模块之间的耦合性对v t l s 的独立性和可一致性很重要。 耦合度越高v t l s 和被调试模块之间的关系越复杂,将v t l s 移植到另外一个系 统下工作的难度也就越大。但是,要使被调试模块和用户态相联系,多个被调试 模块可以同时通过v t l s 工作,耦合度肯定又不为零,也即是v t l s 和被调试模 块之间不是完全没有关系。如何将v t l s 和内核众多被调试模块之间的耦合度降 低到最低,是本课题研究的一个重要内容。 1 3 2 资源独立性 v t l s 模块资源分配要使用统一接口,能提高v t l s 移植的效率。在不同的工 程项目中,内核模块使用的内存资源的范围是不同的,没有统一的起始地址也没 有固定的长度,这种情况下要求v t l s 使用资源的接口独立性要好。即使移植到 另外一个工程项目中,只需要修改资源分配接口即可,而不需要对v t l s 中每个 请求资源的地方都重新修改。 1 3 3 软件可扩展性和复用性 v t l s 支持内核模块的动态扩展,要求v t l s 设计考虑扩展性。由于v t l s 也 是软件项目,良好的软件复用性可提高开发效率。扩展性和模块间耦合性是相对 立,扩展性会提高系统模块间耦合性,而降低耦合性可以通过将扩展性降低来实 现。如何在二者之间寻找平衡是本课题研究的内容之一。扩展性设计计划采用c 程序设计中注册方式实现。这种方式在后面将介绍的v f s 和s c s i m i d 中有详细介 绍。v r l s 只需要对外导出一个接口即可,所以被调试模块只需要调用该接口注册 进v t l s 即可完成注册工作。 3 电子科技大学硕士学位论文 1 3 。4 易用性 v t l s 系统使用者有开发人员与测试人员以及产品后期维护人员,涉及到很多 使用者,就要求v t l s 有良好的易用性。对测试人员与维护人员来说,良好的人 机交互界面,如提供命令的h e l p 信息,t a b 键联想功能等是很重要的。具体如表 1 1 所示。 表1 - 1 软件易用性分布 易用性程度功能项关注人员 强接口函数设计软件开发人员 强全局类型设计软件开发人员 一般命令行响应时间软件开发n 试维护人员 强命令设计测试维护人员 一般t a b 键功能测试维护人员 强命令h e l p 信息测试维护人员 1 3 5 内核态与用户态通信 使用者在用户态的命令行输入命令,内核态的模块会负责处理命令所对应的 模块的调试过程。这其中选择一种高效的内核和用户态交互方式对系统的性能非 常重要。常用的内核与用户态交互方式如表1 2 所示。选择哪种方式,取决于v t l s 最终的用户需求。对内核与用户态通信的研究也是本课题的一个重要方面。 表1 - 2 内核与用户态通信方式 方式优点缺点 p r o c f s 方便用户操作实现的功能简单,读取内容大于一页不稳定 方便内核向用户态传大量 s e qf i l e 数据用户向内核交互性不好 字符驱动操作快捷、交互性好不利于大量数据传输 便于大量数据传送,快速内核无现有s o c k e t 接口,需要单独开发内核 s o c k e t响应。通信的s o c k e t 接口 n e t l i n k 操作快捷资源占用大、依赖工具软件 1 4 技术路线 开发过程将在n o v e l ls u s el i n u xe n t e r p r i s es e r v e r1 0f o rx 8 6 系统上进行。首 先设计用户态模式的命令解析器,循环接收并处理用户输入的命令。用户可以通 过p r o o f s 查看v t l s 当前状态信息。 用户态和内核通信借助虚拟字符驱动的系统调用实现。当登陆虚拟调试系统 4 - , 第一章绪论 后,循环接收从用户态传过来的数据,并打开虚拟字符驱动后通过i o c t l 系统调用 进入内核。具体数据处理由解析模块负责解析。 内核态除了通信模块之外,主要有解析模块,资源管理模块,注册表管理模 块。命令解析模块主要解析非模块相关命令的解析工作,并向用户态返回解析结 果,模块相关命令将加入注册表管理模块链表上,由负责该链表的线程进行分发 执行。 1 5 论文组织结构 全文分为六章,对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 代码设计的模块独立性思 想、接口注册思想。还根据系统需要介绍p r o c f s 文件系统与字符驱动相关技术。 第三章内核虚拟调试模块,详细介绍v t l s 的内核部分设计过程。该部分设 计使用接口注册思想,充分利用第二章研究的v f s 和三层驱动的s c s i 中间层设 计模式。具体分为命令初始化子模块和命令解析子模块,命令初始化子模块将在 用户登录v t l s 的时候初始化用户态的命令树,而命令解析子模块则主要根据用 户命令遍历全局双向链表,该链表记录注册进来模块的调试信息,与模块状态。 解析模块会根据遍历链表的结果和待调试模块的状态来处理用户输入命令。同时 命令解析子模块向全局符号表只导出一个唯一的注册函数,各功能模块开发者只 需根据本模块写好需要调试代码,调用注册函数注册进l s 即可。 第四章用户调试模块,该模块是唯一一个在用户态运行的代码。它直接关系 到在用户态操作的效果。所以在易用性方面做单独设计考虑。实现众多的命令行 下帮助信息和快捷键方式。用户态调试模块会在登录时初始化命令表格,将系统 当前所有命令初始化到命令表中。 第五章通信模块,设计内核虚拟调试模块与用户态模块之间的通信。考虑到 该课题工程性强相关的特性,与用户交互越多调试系统越强大( 可以用多种方式和 内核模块交换数据) 。本课题计划设计三种交互方式,第一种是主要数据流的通信 5 电子科技大学硕士学位论文 使用l i n u x 下的虚拟字符驱动,第二种是查看v t l s 的状态信息的p r o o f s 文件系统。 第三种是内存共享机制。 第六章,对本课题研究的成果做进一步系统的总结,指出一些不足之处以及 今后改进的措施和深入研究的方向。 6 - , 第二章相关理论和技术 第二章相关理论和技术 2 1lin u x 虚拟文件系统( v f s ) 随着计算机的发展,形成了各种不同的文件系统。以通用操作系统为目标的 l i n u x ,具有管理各种文件系统的能力。本节将介绍l i n u x 是如何来管理这些格式 各异的文件系统,以及它们在l i n u x 操作系统下组织和实际使用方式。 2 1 1v f s 综述 l i n u x 的有一个显著特性就是它支持多文件系统,如e x t 3 、e x t 2 、r e i s e r f s 、 n t f s 、i f f s 等。若l i n u x 的整个文件系统中没有v f s ,l i n u x 文件系统是不可能成功 运行的。v f s ( v i r t u a lf i l es y s t e m ) 起着对用户来说屏蔽具体文件系统的差异,提供 统一的操作接口的作用,同时对下具有管理各个不同的具体文件系统的功能,因 此其地位非常重要。 l i n u x 文件系统设计的基本思想是:分析各种各样不同的文件系统,找出之间 的共性,发现文件系统的功能都有许多相似点,如向用户输出读写文件接口、查 询文件系统接口等等。于是设计者就可以利用这些共性来构建一个统一的文件系 统框架,并在这个框架中留出必要的空间;当这个虚拟文件系统需要管理一个实 际文件系统时,把这个实际文件系统与共性有差异的信息抽取到这个预留的空间, 而以框架的通用部分作为与用户的接口,就可以实现不同文件系统的统一管理了。 基于上述思想,l i n u x 构建了一个格式统一的文件管理框架,其中的各个数据 结构,除了保存所有文件系统的共性信息和框架本身所需的信息之外,同时也留 出了必要的空间以存放实际文件系统的特殊信息。系统初始化时就在内存中创建 这样一个文件系统框架,当系统需要使用某一个具体的文件系统时,就把这个文 件系统的特殊信息采集到框架的预留空间中来。这样,就可以把各种不同的文件 系统统一纳入到一个框架体系中管理起来,从而使用户可用一个统一的界面( 即统 一的系统调用) 对各种不同的文件系统中的文件进行操作了。这个格式统一的文件 系统框架,就叫做虚拟文件系统。虚拟文件系统式l i n u x 文件系统的精髓,正是由 于他的存在才使得l i n u x 支持众多的实际文件系统。 7 电子科技大学硕士学位论文 2 1 2v f s 架构分析 v f s 所提供的抽象界面主要由一组标准的、抽象的操作构成,例如r e a d ( ) 、 w r i t e 0 、l s e e k 等,这些函数以系统调用的形式供用户程序调用。这样,用户程序 调用这些系统调用时无需关心所操作的德文件属于哪个文件系统、这个文件系统 式如何设计的。 l i n u x 内核中,v f s 与具体文件系统之间的关系如图2 1 所示 3 1 。 图2 1v f s 在l i n u x 文件系统中位置 v f s 所隐含的德主要思想在于引入了一个通用的文件模型,这个模型能表示 所支持的所有具体文件系统。该模型严格遵循传统u n i x 文件系统提供的文件模 型,它由下列对象类型组成。 1 ) 超级块对象( s p e r b l o c k ) :存放系统中已安装文件系统的信息,每个文件系 统都有一个对应的超级块对象。 2 ) 索引节点( i n o d e ) :存放具体文件的一般信息。每个索引节点对象都有一个 索引节点号,这个号唯一地标识某个文件系统中的指定文件。 3 ) 目录项对象( d e n t r y ) :存放目录项与对应文件进行链接的信息。v f s 把每 个目录看做是由若干目录和文件组成的普通文件。 4 1 文件对象( f i l e ) :存放打开文件与进程之间进行交互的相关信息。这类信息 仅在进程访问文件期间存在与内存中。 以上四个对象构成了v f s 中基本的数据单元,各个具体的文件系统都会抽象 出以上四个结构体对象中去。因此这些对象只存在与内存之中,是“虚 对象。 每个文件系统都有一个初始化函数,该函数会调用v f s 的 r e g i s t e r 函数注册进 ,将该文件系统加入一个注册链表中。这样所f i l e s y s t e m v f s 有实际的文件系统在v f s 中就以f i l es y s t e m结构体对象的链表组成,链表头 是变量。图2 2 说明了注册链表_ 的t y 组p e f i l e s y s t e m s 成情况。 8 - , 第二章相关理论和技术 f i l e _ s y s t e m s n a m en 锄e n a m c g e t _ _ s b g e l s b g e t _ s b n e x tn e x t n e x t 图2 - 2v f s 中文件系统注册表组成 2 1 3v f s 设计思想研究总结 通过上面分析,可看出v f s 具有良好的独立性和可扩展性。减轻了用户和文 件系统开发者的负担。 1 ) 用户不必单独考虑具体文件系统的和其他文件系统的差异,而只需要关注 接口,而v f s 对上提供的统一接口变化很小,所以,若一个用户知道如 何在用户态调用接口操作e x t 2 文件中的文件,那么他要操作s m b f s 文件 系统中的文件时接口也一样,不需要单独去查看s m b f s 文件系统的说明手 册,这就提高他的开发效率。 2 ) 具体文件系统的开发者,只需要按照v f s 对下定义的统一接口,按照v f s 要求实现好接口。剩下就是设计自己文件系统,可以随意设计而不需要考 虑本文件系统和其他文件系统之间的差异。 通过v f s 中全局链表操作可以访问到任何一个注册进来的具体文件系统,这 样方便对底层文件系统的管理。 2 2lin u x 内核s o sl 子系统 l i n u x 内核s c s i - - - 层驱动模型中的中间层以其良好的可扩展性和稳定性著称。 三层驱动模型的设计理念保证了块设备驱动开发和底层h b a 卡驱动开发的各自独 立,极大扩展了各h b a 卡厂商驱动软件的通用性。减轻了硬件驱动开发的成本。 本节介绍l i n u x 内核三层驱动设计方案,其中重点介绍s c s i 中层在三层设计中的 重要性,最后总结提取出一种具体设计模式。 2 2 1s o sl 子系统介绍 工作原理:s

温馨提示

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

最新文档

评论

0/150

提交评论