- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux IO Block--块设备的表示
?
Linux I/O Block--块设备的表示
分类:?Linux驱动程序2012-12-07 16:05?1959人阅读?评论(1)?收藏?举报
?????? 块设备的特点是其平均访问时间较长,因此为了提高块设备的访问效率,Linux内核用了很多的笔墨来设计和块设备相关的部分,这样一来,从代码的角度来看,访问一个文件的过程变得尤其的漫长……整个路径包含的过程基本可以概括为虚拟文件系统--块设备实际文件系统--通用块层--I/O scheduler--块设备驱动程序。为了提高块设备的访问效率,内核主要是在两个方面下功夫:
1.引入缓存,当用户空间要访问文件时,内核不可能每次都去访问块设备,内核会将块设备的内容读取到内存中,以便下次访问时可以直接在内存中找到相应的内容,这其中又涉及到了预读等相关的问题,当然这不是现在关注的重点……
2.对于I/O请求的重排列,I/O请求并不会立即被响应,而是会放在一个队列里进行一段延迟,以期能够和后来的I/O请求进行合并或者进行排序。因为像磁盘这样的块设备,其耗时主要是因为磁头的定位,因此内核会尽量保证磁头只往一个方向移动,而不是来回移动(可以和电梯的运作进行对比),简而言之,就是将存储介质上相邻的数据请求安排在一起,对于I/O请求的处理主要包括合并和排序,具体如何处理,由I/O scheduler决定。
?
首先,我们先来了解一个块设备是如何表示的。描述块设备的数据结构有两个,一个是struct block_device,用来描述一个块设备或者块设备的一个分区;另一个是struct gendisk,用来描述整个块设备的特性。对于一个包含多个分区的块设备,struct block_device结构有多个,而struct gendisk结构永远只有一个。
[cpp]?view plaincopy
struct?block_device?{??
????dev_t???????????bd_dev;??/*?not?a?kdev_t?-?its?a?search?key?*/??
????struct?inode?*??????bd_inode;???/*?will?die?*/??
????struct?super_block?*????bd_super;??
????int?????????bd_openers;??
????struct?mutex????????bd_mutex;???/*?open/close?mutex?*/??
????struct?list_head????bd_inodes;??
????void?*??????????bd_holder;??
????int?????????bd_holders;??
#ifdef?CONFIG_SYSFS??
????struct?list_head????bd_holder_list;??
#endif??
????struct?block_device?*???bd_contains;??
????unsigned????????bd_block_size;??
????struct?hd_struct?*??bd_part;??
????/*?number?of?times?partitions?within?this?device?have?been?opened.?*/??
????unsigned????????bd_part_count;??
????int?????????bd_invalidated;??
????struct?gendisk?*????bd_disk;??
????struct?list_head????bd_list;??
????/*?
?????*?Private?data.??You?must?have?bd_claimed?the?block_device?
?????*?to?use?this.??NOTE:??bd_claim?allows?an?owner?to?claim?
?????*?the?same?device?multiple?times,?the?owner?must?take?special?
?????*?care?to?not?mess?up?bd_private?for?that?case.?
?????*/??
????unsigned?long???????bd_private;??
??
????/*?The?counter?of?freeze?processes?*/??
????int?????????bd_fsfreeze_count;??
????/*?Mutex?for?freeze?*/??
????struct?mutex?????
您可能关注的文档
- JS验证方法大全.doc
- JY083中英文说明书.doc
- K00-过程流程图().doc
- k60时钟模式.doc
- KAIJO wire bonder pressure calibration method.ppt
- kc_rename.寄存器英文名称.docx
- Keep on top of your diet保持合理饮食.doc
- KeilC51使用详解V1.0.doc
- Keil_uv2软件应用.ppt
- Keil纯软件延时程序.doc
- 2025年心理咨询师危机干预能力考核试题及答案解析.docx
- 难点解析-苏科版八年级物理上册《光现象》专项攻克试题(详解版).docx
- 难点解析-苏科版八年级物理上册《光现象》专项攻克试题(解析版).docx
- 2025年护理主管临床护理质量评估模拟考试试题及答案解析.docx
- 难点解析-苏科版八年级物理上册《光现象》专项攻克试题(含详解).docx
- 2025年检查科医技人员影像学检查操作考核答案及解析.docx
- 2025年临床护理技能操作考核试题及答案解析.docx
- 难点解析-苏科版八年级物理上册《光现象》专项攻克试题(含详细解析).docx
- 安徽新质生产力实践案例.pptx
- 2025年康复科康复师理疗技术操作规范考核模拟题答案及解析.docx
文档评论(0)