- 1、本文档共57页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
集成盘 通常我们使用软盘启动Linux 0.11系统时需要两张盘:一张是内核引导启动盘,一张是基本的根文件系统盘。这样必须使用两张盘才能引导启动系统来正常运行一个基本的Linux系统,并且在运行过程中根文件系统盘必须一直保持在软盘驱动器中。 集成盘是指把内核引导启动盘和一个基本的根文件系统盘的内容合成制作在一张盘上。这样我们使用一张集成盘就能引导启动Linux 0.11系统到命令提示符状态。 集成盘结构 内核(120K) 256 257 根文件系统 引导块 超级块 256K 虚拟盘 Linux中被访问的每个盘(硬盘或软盘)的第一个磁盘快必须为引导块,其后为超级块。在使用集成盘时,由于根文件系统放从第256磁盘块开始,它并不符合这个条件。 在根文件系统加载的时候通过虚拟盘将其位置转换为统一访问标准。文件系统的超级块放在了虚拟盘的第一磁盘块(引导块)之后。 集成盘结构 内核(120K) 256 257 根文件系统 引导块 超级块 256K 虚拟盘 256 257 根文件系统 引导块 超级块 虚拟盘逻辑设备号 逻辑设备号 主设备号 次设备号 说明 0x101 1 1 第一个虚拟盘 0x102 2 第二个虚拟盘 0x103 3 第三个虚拟盘 0x104 4 第四个虚拟盘 0x105 5 第五个虚拟盘 0x106 6 第六个虚拟盘 0x107 7 第七个虚拟盘 虚拟盘初始化 long rd_init(long mem_start, int length) //定义在ramdisk.c(P155第52行) 作用:设置虚拟盘的开始地址、长度和请求 处理函数 返回:虚拟盘的长度 请求处理 void do_rd_request(void) //定义在ramdisk.c(P154第23行) 作用:处理虚拟盘读写请求 THANK YOU SUCCESS * * 可编辑 电梯算法改进 5 7 5 7 2 5 6 7 2 5 6 7 1 2 5 6 7 1 2 8 对于请求Q,如果队列中存在A1和A2, 1、满足A1QA2,则把Q插入到A1和A2中 2、满足QA2A1,则把Q插入到A1和A2中 3、否则插入到队列最后 IN_ORDER #define IN_ORDER(s1,s2) ((s1)-cmd(s2)-cmd || ((s1)-cmd==(s2)-cmd ((s1)-dev (s2)-dev || ((s1)-dev == (s2)-dev (s1)-sector (s2)-sector)))) P134第40行 read、write、reada、writea 宏可以简单理解为s1s2是否为真 add_request (IN_ORDER(tmp,req) || !IN_ORDER(tmp,tmp-next) IN_ORDER(req,tmp-next) IN_ORDER(tmp,req)IN_ORDER(req,tmp-next) || !IN_ORDER(tmp,tmp-next) IN_ORDER(req,tmp-next) tmpreqreq-next req tmp-next tmp ll_rw_block 根据缓冲区头 创建一个请求 队列中没有请求 把请求插入到设 备的请求队列中 向设备发送命令 是 否 说明设备空闲 make_request P150图6-4 讲课内容 设备管理简介 硬盘驱动 虚拟盘驱动 硬盘分类 按照接口分,硬盘可以分为 IDE(ATA)硬盘 SCSI硬盘 FC硬盘 SATA硬盘 硬盘内部结构 硬盘参数表 在setup.s中,Linux通过BIOS调用读取了硬盘的参数,并保存在物理地址0x90080处(第1块硬盘)和物理地址0x90090处(第2块硬盘)。(参见P44表3-3) 硬盘参数表 位移 大小 说明 0x00 2B 柱面数 0x02 1B 磁头数 0x03 2B AT硬盘为0 0x05 2B 写前预补偿柱面号*4 0x07 1B AT硬盘为0 0x08 1B 控制字节 位0 未用 位4 未用 位1 保留(0) 位5 有坏区图则置1 位2 允许复位 位6 禁止ECC重试 位3 若磁头数大于8则为1,否则为0 位7 禁止访问重试 0x09 1B AT硬盘为0 0x0A 1B AT硬盘为0 0x0B 1B AT硬盘为0 0x0C 2B 磁头
文档评论(0)