操作系统真象还原 硬盘及分区表

首先区分MBR EBR OBR 

图中可以看出 硬盘开头有一个MBR称为主引导扇区 然后是几个主分区,最多是4个主分区。MBR中有个64字节大小的分区表,一共是4个表项

MBR的组成: 

446byte的引导程序 64byte的分区表 0x55aa魔数

 

对硬盘的操作主要是通过两种寄存器,一个通道上的Master和Slave盘都可以通过同一个寄存器进行操作 

Command Block Registers 和Control Block Registers

  

 

其中的device寄存器和status寄存器分别为:

所以在对硬盘进行操作时,可以通过对端口上寄存器的读写来进行 

第13章对硬盘进行分区表,在文件ide.h的开头就是定义了一批宏 分别为 

#define reg_data(channel) (channel->port_base + 0)
#define reg_error(channel) (channel->port_base + 1)
#define reg_sect_cnt(channel) (channel->port_base + 2)
#define reg_lba_l(channel) (channel->port_base + 3)
#define reg_lba_m(channel) (channel->port_base + 4)
#define reg_lba_h(channel) (channel->port_base + 5)
#define reg_dev(channel) (channel->port_base + 6)
#define reg_status(channel) (channel->port_base + 7)
#define reg_cmd(channel) (reg_status(channel))
#define reg_alt_status(channel) (channel->port_base + 0x206)
#define reg_ctl(channel) reg_alt_status(channel)

 

对应的就是Command Block Registers 这批寄存器 channel->port_base对应的分别是0x1f0和0x170

这样就可以直接通过inb outb 等函数对寄存器进行读写,从而控制硬盘

 

转载于:https://www.cnblogs.com/wangjingxuan1997/p/7911917.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值