Linux-IO-Block--块设备的表示.doc

Linux-IO-Block--块设备的表示.doc

ID:57650238

大小:124.50 KB

页数:13页

时间:2020-08-30

Linux-IO-Block--块设备的表示.doc_第1页
Linux-IO-Block--块设备的表示.doc_第2页
Linux-IO-Block--块设备的表示.doc_第3页
Linux-IO-Block--块设备的表示.doc_第4页
Linux-IO-Block--块设备的表示.doc_第5页
资源描述:

《Linux-IO-Block--块设备的表示.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、LinuxI/OBlock--块设备的表示分类: Linux驱动程序2012-12-0716:05 1959人阅读 评论(1) 收藏 举报      块设备的特点是其平均访问时间较长,因此为了提高块设备的访问效率,Linux内核用了很多的笔墨来设计和块设备相关的部分,这样一来,从代码的角度来看,访问一个文件的过程变得尤其的漫长……整个路径包含的过程基本可以概括为虚拟文件系统-->块设备实际文件系统-->通用块层-->I/Oscheduler-->块设备驱动程序。为了提高块设备的访问效率,内核主要是在两个方面下功夫:1.引入缓存,当用户空间要访问文件时,内核不可能每次都去访问块设备,内核会将块设

2、备的内容读取到内存中,以便下次访问时可以直接在内存中找到相应的内容,这其中又涉及到了预读等相关的问题,当然这不是现在关注的重点……2.对于I/O请求的重排列,I/O请求并不会立即被响应,而是会放在一个队列里进行一段延迟,以期能够和后来的I/O请求进行合并或者进行排序。因为像磁盘这样的块设备,其耗时主要是因为磁头的定位,因此内核会尽量保证磁头只往一个方向移动,而不是来回移动(可以和电梯的运作进行对比),简而言之,就是将存储介质上相邻的数据请求安排在一起,对于I/O请求的处理主要包括合并和排序,具体如何处理,由I/Oscheduler决定。 首先,我们先来了解一个块设备是如何表示的。描述块设备的数

3、据结构有两个,一个是structblock_device,用来描述一个块设备或者块设备的一个分区;另一个是structgendisk,用来描述整个块设备的特性。对于一个包含多个分区的块设备,structblock_device结构有多个,而structgendisk结构永远只有一个。[cpp] viewplaincopy1.struct block_device {  2.    dev_t           bd_dev;  /* not a kdev_t - it's a search key */  3.    struct inode *      bd_inode;   /* wi

4、ll die */  4.    struct super_block *    bd_super;  5.    int         bd_openers;  6.    struct mutex        bd_mutex;   /* open/close mutex */  7.    struct list_head    bd_inodes;  8.    void *          bd_holder;  9.    int         bd_holders;  10.#ifdef CONFIG_SYSFS  11.    struct list_head    b

5、d_holder_list;  12.#endif  13.    struct block_device *   bd_contains;  14.    unsigned        bd_block_size;  15.    struct hd_struct *  bd_part;  16.    /* number of times partitions within this device have been opened. */  17.    unsigned        bd_part_count;  18.    int         bd_invalidated; 

6、 19.    struct gendisk *    bd_disk;  20.    struct list_head    bd_list;  21.    /* 22.     * Private data.  You must have bd_claim'ed the block_device 23.     * to use this.  NOTE:  bd_claim allows an owner to claim 24.     * the same device multiple times, the owner must take special 25.     * ca

7、re to not mess up bd_private for that case. 26.     */  27.    unsigned long       bd_private;  28.  29.    /* The counter of freeze processes */  30.    int         bd_fsfreeze_count;  31.    /* Mute

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。