Loading...
墨滴

CG

2021/07/23  阅读:35  主题:默认主题

设备号在操作系统中的作用

设备号的种类

设备号分为主设备号和次设备号。

举一个例子。

十进制数字800是一个设备号。它的高8位是3,低8位是32。

3是主设备号,32是次设备号。

设备号的作用

根据主设备号,操作系统能选择正确的驱动程序。

根据次设备号,驱动程序能知道要操作的设备。

仍然用上面的例子来叙述。

设备号800描述计算机的某种硬件。在操作系统中,建立了一个主设备号和驱动程序的映射表。例如,主设备号3对应硬盘驱动HD_DRV

从设备号800分离出主设备号3和次设备号32,操作系统根据映射表,会选择硬盘驱动。也就是说,用户进程要求操作系统实验硬盘驱动对32号设备进行操作。

32号设备是什么?

在我的设计中,它是硬盘的第2个主分区的第1个逻辑分区。

32号设备为什么指向硬盘的第2个主分区的第1个逻辑分区?

这是由我设计的硬盘分区机制决定的。当然,我设计的这种机制是借鉴而来,是和大家都在使用的硬盘分区机制吻合的。

这种机制是:

  1. 硬盘被分为两个主分区。
  2. 第2个主分区被设定为主扩展分区。
  3. 把这个主扩展分区划分为16个逻辑分区。
  4. 重点来了。
  5. 硬盘的次设备号机制是这样的:
    1. 第一块硬盘的次设备号是0。
    2. 第一块硬盘的第1个主分区、第2个主分区、第3个主分区、第4个主分区的次设备号分别是1、2、3、4。
    3. 每个主分区都能作为主扩展分区。
    4. 第1个主分区作为主扩展分区,它的16个逻辑分区的次设备号范围是:16~~~31
    5. 第2个主分区作为主扩展分区,它的16个逻辑分区的次设备号范围是:32~~~47
    6. 第3个主分区作为主扩展分区,它的16个逻辑分区的次设备号范围是:48~~~63
    7. 第4个主分区作为主扩展分区,它的16个逻辑分区的次设备号范围是:64~~~79

在硬盘读写中的作用

根据主设备号,操作系统才知道选择硬盘驱动处理硬盘读写。

硬盘读写,需要知道从哪个位置开始读写。

位置信息,用两个要素确定。它们是次设备号和字节偏移量。字节偏移量是相对于数据区域的偏移量。

向操作系统提供设备号800和字节偏移量512,操作系统会这样做:

  1. 根据设备号800选择硬盘驱动程序。
  2. 硬盘驱动程序的读写区域是硬盘的第2个主分区的第1个逻辑分区。
  3. 在遍历硬盘分区时,会把每个分区的初始LBA保存起来。
  4. 假设硬盘的第2个主分区的第1个逻辑分区的初始LBA是M,那么,本次硬盘操作的目标位置是 (M + 512/512)。

CG

2021/07/23  阅读:35  主题:默认主题

作者介绍

CG