基于Linux操作系统的光盘容错机制.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《基于Linux操作系统的光盘容错机制.pdf》由会员分享,可在线阅读,更多相关《基于Linux操作系统的光盘容错机制.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3 0 卷第5 期2 0 0 9 年5 月微计算机应用M I C R O C O M P U T E RA P P L I C 盯I O N SV 0 1 3 0N o 5M a v 2 0 0 9基于L i n u x 操作系统的光盘容错机制王建慧白凤娥(太原理工大学计算机与软件学院山西0 3 0 0 2 4)摘要:容错机制对于读光盘是很重要的。本文分析了L i n u x 操作系统下块设备驱动程序的工作流程,并实现了一种在驱动层通过扇区块跳读来实现光盘容错的方法,显著提高L i n u x 操作系统下光盘的重复利用率。关键词:L i n u x 驱动程序扇区块光盘容错F a u l t
2、T o l e r a n to fL i n u x-B a s e dO p e r a t i n gS y s t e mo nR e a d i n gO p t i c a lD i s kW A N GJ i a n h u i,B A IF e n g e(C o l l e g eo f C o m p u t e ra n dS o f t w a r e,T a i y u a nU n i v e r s i t yo f T e c h n o l o g y,S h a n x i,0 3 0 0 2 4,C h i n a)A b s t r a c t:F a
3、u l t t o l e r a n ti sv e r yi m p o r t a n tf o rr e a d i n go p t i c a ld i s k T h i sp a p e ra n a l y z e sh o wb l o c kd e v i c ed r i v e r sw o r ko nL i n u xo p e r a t i n ss y s t e m,a n db a s e do nt h i sp o i n t,f u l f i l l sam e t h o do ff a u l t t o l e r a n to nr e
4、a d i n go p t i c a ld i s ko nd r i v e rl a y e r,b yw a yo fs k i p p i n gs e e t o r s T h i sm e t h o di n c r e a s e sr e u s er a t eo fo p t i c a ld i s ko nL i n u xo p e r a t i n gs y s t e m K e y w o r d s:L i n u x,d r i v e r s,s e c t o r,o p t i c a ld i s k,f a u l t t o l e r
5、 a n t2 l 世纪,信息的重要性已经得到了充分的证明,而存储信息的介质也因此备受关注。光存储类介质光盘自7 0 年代前后开始大量研究和开发以来,已经过了近3 0 多年的发展。作为一种信息存储媒介,与磁盘相比,光盘具有存储密度高(1 0 8 b i t c m 2)、存储寿命长(1 0 年)、抗污染性能好、信息位价格低和读取速度快等一系列优点,因而得到了广泛的应用。但是由于是移动存储设备,并且盘片的表面没有任何保护,因此在多次使用过程中,难免会出现划伤或沾染上杂物等情况,这些小毛病都会影响数据的读取。相对于读盘速度而言,光盘的容错性显得更加重要。为了提高读光盘的能力,厂商在光驱上做了很大改
6、动,提高光驱中激光头的功率是常用的方法,这是从硬件设备上提高光盘的容错性能。但是,光头功率增大后,长时间“超频”使用会使光头老化,严重影响光驱的寿命。这种以牺牲光驱寿命来换取容错性的方法是不可取的。本文则是从软件角度出发,在L i n u x 操作系统下,在块设备驱动程序的基础上实现了软件层次的光盘容错机制,以驱动程序小的改动为代价实现了一定能力的光盘容错,提高了光盘的使用寿命。1L i n u x 设备驱动程序L i n u x 内核与外部设备之间的交互操作是通过设备驱动程序实现的。设备驱动程序属于内核的一部分,为外设定义了相关的数据结构和操作函数,并通过特定的接口与内核和其它设备驱动程序通
7、信。图1 就是设备驱动层在内核中的位置:本文于2 0 0 8 1 1 2 6 收到。万方数据6 2微计算机应用2 0 0 9 年系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序作为内核的一部分完成以下的功能。(1)对设备初始化和释放;(2)把数据从内核传送到硬件和从硬件读取数据;(3)读取应用程序传送给设备文件的数据和回送应用程序请求的数据;(4)检测和处理设备出现的错误。在L i n u x 操作系统下
8、有三类主要的设备文件类内型,分别是字符设备、块设备和网络设备。字符设备和块设备的主要区别是:在对字符设备发出读写请求时,实际的硬件I 0 一般就紧接着发生了;块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备的请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际的I 0 操作。块设备主要是针对磁盘、光盘等慢速设备设计的,图1 设备驱动层在内核中的位置结构图以免耗费过多的C P U 时间来等待。光盘作为一种大容量存储设备,它是作为块设备被I A n u x 中的块设备驱动程序处理。2 块设备驱动数据结构及流程块设备驱动层作为内核的一部分,定义了很多的数据结构,有描述
9、外设的,也有描述外设请求的,这些数据结构对于分析驱动程序流程至关重要,以下是其中的两个重要的数据结构,均在b l k d e v h 中定义:(1)请求队列结构体。r e q u e s t _ q u e u es t r u e tr e q u e s t _ q u e u e s t r u c tr e q u e s t _ l i s t r q;请求队列空列表,读请求一个,写请求一个i n tn r _ r e q u e s t s;一个请求队列上的请求数a t o m i c _ tn r _ s e c t o r s;每个队列上的5 1 2 b y t e 块的总块数
10、i n tm a x q u e u e s e c t o r s;每个队列上的5 1 2 b y t e 块的最大块数(2)请求结构体:r e q u e s ts t r u e tr e q u e s t s t r u e th s t _ h e a dq u e u e;k d e v _ tr q _ d e v;i n te m d;u n s i g n e dl o n gs t m t _ t i m e;u n s i g n e dl o n gs e c t o r;u n s i g n e dl o n gn r _ s e e t o r s;,设备号标示
11、读或者写要读的扇区块数s t r u c tl i s t _ h e a d q u e u e h e a d;r e q u e s t _ f n _ p r o c|-r e q u e s t _ f n;请求操作处理函数s p i n l o c k _ t q u e u e _ l o c k;互斥请求锁w a i t _ q u e u e _ h e a d _ tw a i t _ f o r _ r e q u e s t s;等待的任务队列;u n s i g n e dl o n gc u r r e n t _ n r _ s e c t o r s,h a r
12、 d _ c u r _ s e c t o r s;c h a r$b u f f e r;指向缓冲区的指针s t r u c tb u f f e r _ h e a d b h;管理缓冲区的结构体指针r e q u e s t _ q u e u e _ t q;光盘的读取请求是通过块设备驱动程序实现的,在L i n u x 操作系统下,这是通过请求队列的形式实现的。正常的读取操作过程包括三个步骤:万方数据5 期王建慧等:基于L i n u】【操作系统的光盘容错机制6 3(1)检查当前读取请求的有效性。这是由b l k h 中定义的宏I N I T _ R E Q U E S T 完成;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linux 操作系统 光盘 容错 机制
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内