预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据 基于Linux操作系统的光盘容错机制白凤娥王建慧APPLIC』盯IONSSystemOptical为了提高读光盘的能力,厂商在光驱上做了很大改动,提高光驱中激光头的功率是常用的方法,这是从Linux设备驱动程序微计算机应用Fault——TolerantofLinux---BasedOperatingReadingDisk2l世纪,信息的重要性已经得到了充分的证明,而存储信息的介质也因此备受关注。光存储类介质光盘自70年代前后开始大量研究和开发以来,已经过了近30多年的发展。作为一种信息存储媒介,与磁盘相比,光盘具有存储密度高(>108bit/cm2)、存储寿命长(>10年)、抗污染性能好、信息位价格低和读取速度快等一系列优点,因而得到了广泛的应用。但是由于是移动存储设备,并且盘片的表面没有任何保护,因此在多次使用过程中,难免会出现划伤或沾染上杂物等情况,这些小毛病都会影响数据的读取。相对于读盘速度而言,光盘的容错性显得更加重要。硬件设备上提高光盘的容错性能。但是,光头功率增大后,长时间“超频”使用会使光头老化,严重影响光驱的寿命。这种以牺牲光驱寿命来换取容错性的方法是不可取的。本文则是从软件角度出发,在Linux操作系统下,在块设备驱动程序的基础上实现了软件层次的光盘容错机制,以驱动程序小的改动为代价实现了一定能力的光盘容错,提高了光盘的使用寿命。Linux内核与外部设备之间的交互操作是通过设备驱动程序实现的。设备驱动程序属于内核的一部分,为外设定义了相关的数据结构和操作函数,并通过特定的接口与内核和其它设备驱动程序通信。图1就是设备驱动层在内核中的位置:第30卷第5期2009年5月(太原理工大学计算机与软件学院山西030024)摘要:容错机制对于读光盘是很重要的。本文分析了Linux操作系统下块设备驱动程序的工作流程,并实现了一种在驱动层通过扇区块跳读来实现光盘容错的方法,显著提高Linux操作系统下光盘的重复利用率。关键词:Linux驱动程序扇区块光盘容错WANGJianhui,BAI(CollegeSoftware,TaiyuanofTechnology,Shanxi,030024,China)tors.This1MICROCOMPUTERonFeng’e本文于2008—11—26收到。V01.30No.5Mav.2009ofComputerandUniversityAbstract:Fault—tolerantisveryimportantforreadingopticaldisk.ThispaperanalyzeshowblockdevicedriversworkLinuxoperat·inssystem,andbasedthispoint,fulfillsmethodfault—tolerantdiskdriverlayer,bywayskippingincreasesoperatingsystem.Keywords:Linux,drivers,sector,opticaldisk,fault—tolerantrateasee—re—use 万方数据 2块设备驱动数据结构及流程口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用光盘的读取请求是通过块设备驱动程序实现的,在Linux操作系统下,这是通过请求队列的形式实现的。正常的读取操作过程包括三个步骤:微计算机应用2009年系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序作为内核的一部分完成以下的功能。(1)对设备初始化和释放;(2)把数据从内核传送到硬件和从硬件读取数据;(3)读取应用程序传送给设备文件的数据和回送应用程序请求的数据;(4)检测和处理设备出现的错误。在Linux操作系统下有三类主要的设备文件类型,分别是字符设备、块设备和网络设备。字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/0一般就紧接着发生了;块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备的请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际的I/0操作。块设备主要是针对磁盘、光盘等慢速设备设计的,以免耗费过多的CPU时间来等待。光盘作为一种大容量存储设备,它是作为块设备被IAnux中的块设备驱动程序处理。块设备驱动层作为内核的一部分,定义了很多的数据结构,有描述外设的,也有描述外设请求的,这些数据结构对于分析驱动程序流程至关重要,以下是其中的两个重要的数据结构,均在blkdev.h中定义:(1)请求队列结构体。(2)请求结构体:request,,设备号图1设备驱动层在内核中的位