首页 百科知识 块设备管理

块设备管理

时间:2023-10-09 百科知识 版权反馈
【摘要】:块设备在使用前也要向系统注册。块设备注册在系统的块设备注册表中,块设备注册表是结构数组blkdevs[]。在块设备注册表中,每个表项对应一种块设备,注册表blkdevs[]数组的的下标是主设备号,其注册表参见图5-3。块设备是以块为单位传送数据的,设备与内存之间的数据传送必须经过缓冲。当对设备读写时,首先把数据置于缓冲区内,应用程序需要的数据由系统在缓冲区内读写。

5.3.2 块设备管理

块设备在使用前也要向系统注册。块设备注册在系统的块设备注册表中,块设备注册表是结构数组blkdevs[]。它的元素也是device_struct结构。

static struct device_struct blkdevs[MAX_BLKDEV]

在块设备注册表中,每个表项对应一种块设备,注册表blkdevs[]数组的的下标是主设备号,其注册表参见图5-3。

img28

图5-3 块设备注册表

块设备是以块为单位传送数据的,设备与内存之间的数据传送必须经过缓冲。当对设备读写时,首先把数据置于缓冲区内,应用程序需要的数据由系统在缓冲区内读写。只有在缓冲区内已没有要读的数据,或缓冲区已满而无写入的空间时,才启动设备控制器进行设备与缓冲区之间的数据交换。设备与缓冲区的数据交换是通过blk_dev[]数组实现的:

struct blk_dev_struct blk_dev[MAX_BLKDEV];

每个块设备对应数组中的一项,数组的下标值与主设备号对应。

数组元素是blk_dev_struct结构:

struct blk_dev_struct {

 void (*request_fn)(void);

 struct request * current_request;

 struct request  plug;

 struct tq_struct plug_tq;

};

blk_dev[]数组结构参见图5-4。

img29

图5-4 设备缓冲区请求

request_fn:指向设备读写请求函数的指针;

current_request:指向request结构的指针。

当缓冲区需要与设备进行数据交换时,缓冲机制就在blk_dev_struct中加入一个request结构。每个request结构对应一个缓冲区对设备的读写请求。在request结构中有一个指向缓冲区信息的指针,由它决定缓冲区的位置和大小等。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈