没有合适的资源?快使用搜索试试~ 我知道了~
一般的主板上有两个硬盘通道,叫做 ata 通道 或 ide 通道。 第一个 ide 通道的中断信号挂在 8259A 的 IRQ14 上, 第二个挂在 IRQ15 上。 一个通道可以挂两块硬盘,对,两块硬盘共用一个中断接口。 每块硬盘又可以分区。分为主分区和逻辑分区。 硬盘驱动程序包括,硬盘的初始化,硬盘的读操作、写操作。 先定义数据结构 /* 分区结构 */ struct partition { uint32_t start_lba; // 起始扇区 uint32_t sec_cnt; // 扇区数 struct disk* my_disk; // 分区所属的硬盘 struc
资源详情
资源评论
资源推荐
30. 硬盘驱动硬盘驱动
一般的主板上有两个硬盘通道,叫做 ata 通道 或 ide 通道。
第一个 ide 通道的中断信号挂在 8259A 的 IRQ14 上, 第二个挂在 IRQ15 上。
一个通道可以挂两块硬盘,对,两块硬盘共用一个中断接口。
每块硬盘又可以分区。分为主分区和逻辑分区。
硬盘驱动程序包括,硬盘的初始化,硬盘的读操作、写操作硬盘的初始化,硬盘的读操作、写操作。
先定义数据结构
/* 分区结构 */
struct partition {
uint32_t start_lba; // 起始扇区
uint32_t sec_cnt; // 扇区数
struct disk* my_disk; // 分区所属的硬盘
struct list_elem part_tag; // 用于队列中的标记
char name[8]; // 分区名称
struct super_block* sb; // 本分区的超级块
struct bitmap block_bitmap; // 块位图
struct bitmap inode_bitmap; // i结点位图
struct list open_inodes; // 本分区打开的i结点队列
};
/* 硬盘结构 */
struct disk {
char name[8]; // 本硬盘的名称,如sda等
struct ide_channel* my_channel; // 此块硬盘归属于哪个ide通道
uint8_t dev_no; // 本硬盘是主0还是从1
struct partition prim_parts[4]; // 主分区顶多是4个
struct partition logic_parts[8]; // 逻辑分区数量无限,但总得有个支持的上限,那就支持8个
};
/* ata通道结构 */
struct ide_channel {
char name[8]; // 本ata通道名称
uint16_t port_base; // 本通道的起始端口号
uint8_t irq_no; // 本通道所用的中断号
struct lock lock; // 通道锁
bool expecting_intr; // 表示等待硬盘的中断
struct semaphore disk_done; // 用于阻塞、唤醒驱动程序
struct disk devices[2]; // 一个通道上连接两个硬盘,一主一从
};
ata 通道里有硬盘,硬盘里有分区。
接下来就是硬盘的初始化、读、写函数。
不展开了。。
在Linux中, 硬盘命名规则是[x]d[y][n],其中只有字母 d 是固定的,其他带中括号的字
符都是多选值,下面从左到右介绍各个字符。
x 表示硬盘分类,硬盘有两大类, IDE 磁盘和 SCSI 磁盘。 h 代表 IDE 磁盘, s 代表 SCSI 磁盘,故 x
取值为 h 和 s。
d 表示 disk,即磁盘 。
y 表示设备号,以区分第几个设备,取值范围是小写字符,其中 a 是第 1 个硬盘, b 是第 2 个硬盘,
依次类推。
n 表示分区号,也就是一个硬盘上的第几个分区。分区以数字 l 开始,依次类推。
sda1 表示SCSI硬盘的第一个硬盘的第一个分区。
hdc3 表示第 3 个 IDE 硬盘的第 3 个分区.
作者:jiaruitao777
weixin_38529251
- 粉丝: 6
- 资源: 883
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- index.jsp
- Screenshot_20240521_090410_com.huawei.android.launcher.jpg
- 单文件制作工具 7.0.2.3851-x86-x64
- Linux命令.xmind
- 基于Transformer实现的跨域Cross-view实时Map-view语义分割算法-附项目源码-优质项目实战.zip
- linux常用命令大全-.zip
- 2024彩虹聚合DNS管理系统源码 管理系统快速开发平台 聚合平台管理.zip
- elasticsearch介绍-.zip
- nodejs安装及环境配置-.zip
- 谷歌浏览器自动化测试版113.0.5672.0(包含linux,windows32/64,mac三个版本,不会自动更新)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0