块设备驱动程序解析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
块设备驱动程序 Linux0.11 内核包含3 个块设备的驱动:ramdisk ,硬盘,软盘。 首先需要注意的块设备的操作方式:在系统 (内核)与硬盘进行IO 操作时,需要 考虑三个对象之间的交互作用。它们是系统、控制器和驱动器 (例如硬盘或软盘驱 动器)。 系统可以直接向控制器发送命令或等待控制器发出中断请求:控制器在接受到 命令后就会控制驱动器的操作,读/写数据或者进行其他操作。因此我们可以把这 里控制器发出的中断信号看作是这三者之间的同步操作信号,所经历的操作步骤 为: 首先系统指明控制器在执行命令结束而引发的中断过程中应该调用的C 函 数,然后向块设备控制器发送读、写、复位或其他操作命令。当控制器完成了指定 的命令,会发出中断请求信号,引发系统执行块设备的中断处理过程,并在其中调 用指定的C 函数对读/写或其他命令进行命令结束后的处理工作。 块设备表项和请求项数组构成的数据结构是块设备部分的核心数据结构。 请求队列数组与块设备结构为如下关系 请求项数组存放所有系统中对块设备的请求,原因估计是块设备一般都是低速外 设,所以处理时间较长,来不及的请求先存储起来。每个块设备表项的 current_request 指向当前需要处理的请求项数组中的请求项,在请求项数组中的请 求项之间用指针相链接,这样就构成了对某一设备的请求队列。 下面分析ll_rw_blk.c 程序,它是块设备 (软硬盘,ramdisk )与缓冲管理之间的接 口程序,主要功能是为块设备创建块设备读写请求项,并插入到指定块设备请求队 列中。实际的读写操作由请求项处理函数request_fn 完成。request_fn 通过blk.h 的 宏定义映射到实际设备的操作 (do_hd_request ,do_fd_request,do_rd_request ) ll_rw_block 调用序列 如上图,ll_rw_block 程序为左半边图,作用是往请求项链表中插入请求项,插完 后调用request_fn()会引发中断逐个处理某设备的所有请求项。插入请求项是利用 电梯算法插入到对应某个设备的请求链表中。 对于硬盘,首先涉及的是硬盘的知识,0.11 内核支持的是AT 硬盘。硬盘的分 区结构如下: 与代码联系较紧密的是主引导记录的分区表,内核中partition 结构完全对应了 分区表的字段。 硬盘参数及类型 (Linux0.11 只支持最多两个硬盘) hd_info 0 1 hd_i_struct { 磁头数 每磁道扇区数 柱面数 写前预补偿柱面号 磁头着陆柱面号 控制字节 } 硬盘分区结构 (0,5 代表第 1,第2 个硬盘,1~4,6~9 为两硬盘的分区) 0 1 2 3 4 5 6 7 8 9 hd_struct { 物理起始扇区号 分区扇区数 } sys_setup 函数在系统初始化时被调用,以下为其步骤: 从0x90080 读入setup.s 创建的硬盘参数表 设置硬盘起始扇区号和扇区总数 通过读取CMOS 信息的方法重新确定系统中硬盘数和扇区信息 通过bread 读取硬盘主引导记录分区表读入每个硬盘分区信息 加载 (创建)RAMDISK rd_load() 安装根文件系统 mount_root() 硬盘操作的核心函数是do_hd_request 函数,hd.c 中其余函数均为其服务。以下为 do_hd_request 流程 检查请求合法性 换算硬盘的扇区号、柱面号和磁道号 若要执行复位硬盘,则复位硬盘 若重新校正

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档