访问硬盘(二)

本文介绍了一个名为RMOSLDR的操作系统中硬盘驱动的设计原理。主要涉及块设备接口IBlockDevice及支持分区功能的IPartitionable接口,包括主分区类MainPartition和硬盘设备类IDEHardDrive的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这一节我们来看下RMOSLDR中硬盘驱动的各个接口

 

首先我们需要一个C++块设备接口。这个接口将实现设备的分块读取。硬盘驱动器,光盘驱动器,USB驱动器都要实现这个接口。换句话说,只要某个设备实现了这个接口,就可以在其上建立文件系统。

 

 

这个接口个各个方法都很容易理解。打开设备、关闭设备,得到设备的块大小,得到设备的总块数,以及读和写。

 

除此之外,某些存储设备(如硬盘,U盘)还提供了分区功能。所以我们还必须有一个接口来支持存储设备分区。可想而知,这个接口应该可以创建分区,删除分区,修改分区,枚举分区。由于我暂时只关心硬盘,所以这个接口基本上是为硬盘设计的。

 

上面用到分区表结构:

 

对于硬盘来说,分区可以分为主分区,扩展分区,和逻辑分区。我们暂时不打算管逻辑分区,因此我们定义了主分区一个个类。主分区上可以建立文件系统,因此,主分区类应该实现IBlockDevice接口。

 

 

最后就是我们的硬盘设备类了。硬盘自然是一个块设备,同时也可以在其上分区。所以硬盘应该实现IBlockDevice接口和IPartitionable接口。

 

为了更方便大家理解这些接口和类的对象关系,我们可以画出下面的UML图

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值