欢迎来到天天文库
浏览记录
ID:43046035
大小:1.03 MB
页数:15页
时间:2019-09-25
《【精品】块设备分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、块设备驱动程序LinuxO.11内核包含3个块设备的驱动:ramdisk,硬盘,软盘。首先需要注意的块设备的操作方式:在系统(内核)与硬盘进行IO操作时,需要考虑三个对象Z间的交互作用。它们是系统、控制器和驱动器(例如硬盘或软盘驱动器)。命令系统(CPU)设备控制器数捱传输<中断诸求块设备衣项do.rd.requestcurrent-requestdo_hd_requestcurrent.requestcurrent.requestdo_hd_requestcurrent-requestdo.rd.request
2、current.requestcurrent.requestiiY询请求项ii:余请求项II':闲请求頊请求项数组(32项)系统可以直接向控制器发送命令或等待控制器发出屮断请求:控制器在接受到命令后就会控制驱动器的操作,读/写数据或者进行其他操作。因此我们可以把这里控制器发出的中断信号看作是这三者之间的同步操作信号,所经历的操作步骤为:首先系统指明控制器在执行命令结束而引发的中断过程中应该调用的c两数,然后向块设备控制器发送读、写、复位或其他操作命令。当控制器完成了指定的命令,会发出中断请求信号,引发系统执行块设
3、备的中断处理过程,并在其中调用指定的C函数对读/写或其他命令进行命令结束后的处理工作。块设备表项和请求项数组构成的数据结构是块设备部分的核心数据结构。请求队列数组与块设备结构为如下关系内存虚拟盘硬盘软盘请求项数组存放所有系统中对块设备的请求,原因佔计是块设备一般都是低速外设,所以处理时间较长,来不及的请求先存储起来。每个块设备表项的current_request指向当前需要处理的请求项数组屮的请求项,在请求项数组屮的请求项Z间用指针相链接,这样就构成了对某一设备的请求队列。卜面分析ll_rw_blk.c程序,它是
4、块设备(软硬盘,ramdisk)与缓冲管理之间的接口程序,主要功能是为块设备创建块设备读写请求项,并插入到指定块设备请求队列屮。实际的读写操作由请求项处理函数request_fn完成。request_fn通过blk.h的宏定义映射到实际设备的操作(do_hd_request,do_fd_request,do_rd_request)引发中断如上图,ll」w_block程序为左半边图,作用是往请求项链表中插入请求项,插完后调用request_fn()会引发中断逐个处理某设备的所有请求项。插入请求项是利用电梯算法插入到
5、对应某个设备的请求链表中。对于硬盘,首先涉及的是硬盘的知识,0.11内核支持的是AT硬盘。硬盘的分区结构如下:主引k引导记囲盍!!表第]分女项第2分区表顶第3分女顶第4分区表顶0x55AA引导扇区!基本分区1引导扇区盘!!基本分区3引导扇区引录一扩爭:nI•1■«••1■«••1■«••1■«iiA逻辑駆动爺nI•1■«••1■«••1■«••1■«iiA扩展分区扩0x55AA引导扇区i引录ii展兰八扩早八Ji逻辑驱动器扩表0x55AA引导扇区图5—个4分区的基本磁盘当前下一个0x55AA引导扇区当前下f0x55
6、AA引导躯当前下f0x55AA引导躯ir为区表项1遥空辰襄颈3
7、
8、■■«■■■■M*■•[姜.j佥旻垂:观.g一i结耒有效标志I扩协ii襄颈1咲空区表项2遥分区表项3!表少区表项4'结耒有效标志i扩分区表项1険空区表项2遥尬云衰臥3:吏.卷旻垂孜丄绫*i道義桩査!总辑!驱!动i器图6分区表链接图示与代码联系较紧密的是主引导记录的分区表,内核H«partition结构完全对应了分区表的字段。4^iasterBootRecord^基础AS移星:Offset0席移标题Masterbootstraploadercode数
9、值
10、33CO8EDOBC007CFBPartitionTableEntry#11BE80=activepartition淹祥分电杨衣1BFStartheadICOStartsectorICOStartcylinder秆览牲而1C2Operatingsystgmindicator(hex1C3Endhead1C4Endsector1C4Endcylinder1C6Secto"precedingpartition11CALengthofpartition1insecto”80坯床诗虧.OXx非I1607井电冬童杨赢2
11、54面89163未分息之祸鬲电旣14329917水分电的床电络眾PartitionTableEntry#2ICE80=activepartition1CFStartheadIDOStartsectorIDOStartcylinder1D2OperatingsystemindicatorQiex1D3Endhead1D4Endsector1D4Endcylinder1D6S
此文档下载收益归作者所有