块设备分析Word文件下载.docx

上传人:b****3 文档编号:17311932 上传时间:2022-12-01 格式:DOCX 页数:14 大小:300.21KB
下载 相关 举报
块设备分析Word文件下载.docx_第1页
第1页 / 共14页
块设备分析Word文件下载.docx_第2页
第2页 / 共14页
块设备分析Word文件下载.docx_第3页
第3页 / 共14页
块设备分析Word文件下载.docx_第4页
第4页 / 共14页
块设备分析Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

块设备分析Word文件下载.docx

《块设备分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《块设备分析Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

块设备分析Word文件下载.docx

:

:

淫引导记录!

区!

!

基本分区1

•基本分区2

枝;

盘!

基本分区3

辑駆动器

I

i、i扩

嚴引

i逻i导

记采图5Y-4

器!

主引

第1分区表顶

第2分区表项

第3分区表项

第4分区表项1

0x55AA

引导扁区•

引导扁区・

引导扁区

k

0x55AA

引导扇区

引导定区

分区的基本磯

 

i扌广i扩好区袁顶1

XXBBBBfjr・・t・・■■

j展険徐区惡硕2甩逼分

区表顶3

■记捶一空区養理L

厂j・

扩軀刖导记录j

扩汾区袁顶1獎

符区袁硕2

•・■■■■『j■■F

■■■■-

1陆區翹

•1br就

--(衷电

J-眉一

&

紀脸

•・扩槪分区爲一左

•1

2一:

志一一硕一顶一衷衷衷一&

〈•懐

K上

■址

•A.一

、丫前

1卞V

耒用

[9x55AA]

当前

1下〃

L桶

.1*Bx5?

AA

引导底区

下f

枫1

图百仆恼表链接图小

与代码联系较紧密的是主引导记录的分区表,内核中partition结构元全对应了分区表的字段。

"

r'

iasterBootRecord#基fit假移星-

Offset

标题

数值

01611

Masterbootstraploadercode

33CO8EDOBC007CFB

Partition

TableEntry#1

1BE

80=activepartition席总粉Efi衣

80fit尽矣珈•ax床韭

1BF

Starthead秆

1

ICO

Startsector秆疑USE

Startcylinder妍tttl芒

1C2

0p«

xt«

niixidi^uturQi・

07

1C3

Endhead炖#04:

254

1C4

Endsector诊。

京电

63

Endcylinder

891

1C6

Sectorsprecedingpartition1

63床分电之荀钓扁

1CA

Lengthofpartition1insector

14329917床分电的貳E塔託

TableEntry#2

ICE

80=activepartition

00

1CF

Starthead

IDO

St<

rtsector

Startcylinder

892

1D2

Operatingsyst^fnindicator(hex

0F

1D3

Endhead

1D4

Endsector

1023

1D6

Sectorsprecedingpartition2

14329980

IDA

Lengthofpartition2insector

220106565

TableEntry#3

IDEJ〃

IDFm

IEO2M

Startsector

IEO2W

1E2QH

Operatingsystemindicator(hex

1E3百M

1E46M

1E6

Sectorsprecedingpartition3

1EACM

Lengthofpartition3insector

TableEntry#4

1EE

80=getivepartition

1EF

1F0

St〈rtcylinder

1F2

OperatingsystemindicatorQtex

1F3

Endh“d

1F4

1F6

Sectorsprecedingpartition4

硬盘参数及类型(LinuxO.l1只支持最多两个硬盘)hdinfo

hdistruct

{

磁头数

每磁道扇区数

柱面数

写前预补偿柱面号

磁头着陆柱面号控制字节

物理起始扇区号分区扇区数

sys.setup函数在系统初始化时被调用,以下为其步骤:

硬盘操作的核心函数是do_hd_request函数,hd・c中其余函数均为其服务。

以下为do_hd_reques流程

详见P137解释和pl38图6-3

卜面分析硬盘驱动程序linux/kernel/blk_drv/hd.c

该文件内容分两部分1.硬盘初始化2.硬盘驱动

以下关注硬盘驱动的实现。

其主流程是do_hd_request由于该流程也在中断中被

调用,所以该函数被反复调用,用来处理硬盘复位、重校、读、写的请求。

下面分三部分对该函数拆解:

1•复位、重校统称为错误处理(因为复位流程保含了重校流程)盘2•写盘3•读

I复位硬盘控制器

硬盘控制器

错误流程处理:

CPU

监测硬盘执行命令后的状态,1•若出错看是否超出最多允许出错数,则结束对该请求项的处理,若出错数人于故多允许错误数一半,则岂reset=1

2.不岀错则继续处理硬盘请求do_hd_request

对于结束对该请求项的处理见blk.hpl36end_reques函数,执行流程为:

错误处理流程属于辅助流程,每次处理读、写请求都可能会经历,是保证操作成功的必要步骤。

中断过程是由硬盘控制器触发的中断引起的,中断会传入8259中断控制器再

传给CPU,操作系统会调用do_hd指向的函数作为中断过程执行。

因此程序中把do_hd赋值给某函数指针,等到硬盘控制器中断被CPU接收后,中断过程就“自

动”执行。

至于如何“自动”,即中断实现原理,将在进程调度与系统调用一章讨论。

读写硬盘的流程大致如下:

执仃程序独盘拧制卷

读盘操fl

执彳J程

r

H]

写盘流程处理

处理请求歳

屮诵处FI!

耗别藩处理

一*写命令<

读状

态二传口婕据件读

数据

1.发送写命令及扇区等命令,中断指令do_hd同时指向写扇区中断函数

2.循环读取状态寄存器信息并判断请求服务标志DRQ_STAT是否置位

3.若循环结束仍未置位,执行错误处理流程。

否则进行硬盘第一次写数据

中断

硬盘控制器执行写一个扇区数据

中断过程

硬盘控制器执行写一个扇区数据

1.若硬盘控制器返回错误信息,执行错误处理流程并返回

2.否则置中断函数指针do_hd为9硬盘函数,并向数据寄存器端口写256字即512B,—个扇区

3.若全部扇区数据已写

读盘流程处理

完,处理请求结束事宜,执行下一硬盘请求

中析过程

可以看出,写盘、读盘流程差别不大,区别就在于写盘要先读状态寄存器信息并进行第一次写盘。

卜而分析软盘驱动程序linux/kei'

nel/blk_di'

v/floppy,c,英主流程同样是do_fd_request与硬盘驱动最大的不同是用到了一些定时操作,详见pl57描述,

dofdrequest同样分为1.复位、重校统称错误处理2.写盘3.读盘三部分

错误处理流程

硕盘控制器

1•关中断

2.置贯賈软盘操作后的中断调用函数,即

do_floppy指向

reset_interrupt

3.延忑等待后启动软盘控制器

4.开中断

1.检测中断状态,读取命令执行结果字节

2.发送设定软驱参数命令

启动软盘

t控制器

设定软盘控制器参数

读盘、写盘操作仅有细微差别,并在一起分析:

读写命令码

2.添加定时器,指定驱动器到能正常运行需要的时间(秒),X定时

do_fdrequ到时调用函数

floppy_on_interrupt

定时中断

1.置已选择当前驱动器标忐

2.设置数字输出寄存器DOR为当前驱动器

3.执行读写传输函数transfero

f1oppy_OR_iat-errupt

seek

1.检测中断状态命令,若出错执行错误处理流程否则设置X前磁道为寻道号

腥1■执U行

tsetup_rw_floppy

1.初始花软盘DMA通道

2.置软盘中断指针do_floppy为rw_interrupt

3.发送读写命令及扇区_r等参数ppy

setuip

根据读写命令在软盘与内

存缓冲区之间传数据

1.若软盘写保护,结束请求项

2.若为其他错误,执行错误处理流程

3.因DMA的寻址为

・1MB空间,对读操作作rw10

cr处理'

4.释放软盘,结束请求

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1