免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: OstrichFly

[原创] 写一个块设备驱动 [复制链接]

论坛徽章:
0
发表于 2008-12-16 10:51 |显示全部楼层
看了这些教程,让我受益非浅!再次感谢!
有一问题向您请教:一直不是很明白block_device结构在块设备中的作用。
每个分区有一个block_device和一个hd_struct来描述。
每块磁盘有一个gendisk描述。gendisk下挂着hd_struct的指针。

这三个结构体是怎样相互作用和影响的?

论坛徽章:
0
发表于 2008-12-16 12:49 |显示全部楼层

衷心感谢

庆幸此论坛有你·

论坛徽章:
0
发表于 2008-12-16 20:21 |显示全部楼层
原帖由 Godbach 于 2008-12-12 21:23 发表
LZ辛苦。

所以也希望你能同样辛苦地看完哦: )

论坛徽章:
0
发表于 2008-12-16 20:24 |显示全部楼层
原帖由 myem007 于 2008-12-12 22:20 发表
虽然没看懂,但是还是有支持下楼主!

谢谢支持!

论坛徽章:
0
发表于 2008-12-16 20:27 |显示全部楼层
原帖由 scofield1025 于 2008-12-14 18:59 发表
非常感谢楼主的辛勤工作! 强烈支持!

谢谢支持,因为我刚学时也非常希望能够得到一部引领我入门的文档,
这也算是了却自己当时的一个心愿。

论坛徽章:
0
发表于 2008-12-16 20:39 |显示全部楼层
原帖由 fishswimming 于 2008-12-14 23:28 发表



"我们的块设备驱动程序需要从伙伴系统中获得所需的内存。
目前的做法是每次获得1个页面,也就是分配页面时,把2的n次幂中的n指定为0。
这样做的好处是只要系统中存在空闲的页面,不管空闲的页面是否连续 ...

详细的阅读这部教程,是对作者最大的支持。

我指的是,比如,我们的程序拆开了一些连续的页面,但没有完全用掉,剩下的页面被另一些功能申请掉了。
这时我们的程序即使退出并归还了所有页面,原先的连续页面也无法还原了。
因此在申请时尽量申请大一些,可以避免产生比申请大小更小的碎片。
曾经有一种说法是统计上,一次申请4个页面对系统比较有利,
不过在本教程中引入这种做法的本意是让读者接触一下伙伴系统的概念。
个人认为,最佳的解决方法可能还在64位机器的应用上,
64位机器中庞大的非线性映射区域可以有效地弱化这一问题。

[ 本帖最后由 OstrichFly 于 2008-12-16 20:40 编辑 ]

论坛徽章:
0
发表于 2008-12-16 20:39 |显示全部楼层
原帖由 hb12112 于 2008-12-15 13:54 发表

楼主好厉害呵,是感觉没之前那么大难度,不过数据安全确实是很容易忽略的问题。

谢谢支持!

论坛徽章:
0
发表于 2008-12-16 20:41 |显示全部楼层
原帖由 lonelyair 于 2008-12-16 10:15 发表
受教,期待中

谢谢支持!
我会继续的,可能有15章以上哦。

论坛徽章:
0
发表于 2008-12-16 20:54 |显示全部楼层
原帖由 hb12112 于 2008-12-16 10:51 发表
看了这些教程,让我受益非浅!再次感谢!
有一问题向您请教:一直不是很明白block_device结构在块设备中的作用。
每个分区有一个block_device和一个hd_struct来描述。
每块磁盘有一个gendisk描述。gendisk下 ...


谢谢支持!

你的问题让我发现了写这部教程的另一个意义,
就是:为自己记笔记。

因为程序是提前于文章的,所以现在已经有挺长时间没接触这些内容了。
猛地看到你的问题时,感觉好生疏,又回头去看自己的教程......

先撇开block_device不谈,在我的理解中,gendisk表示一块磁盘,而hd_struct表示磁盘中的一个分区结构。
这可以通过数据结构看出来。之间的关系也很清楚。

然后我们看block_device,它表示某一个块设备。
整块磁盘是一个快设备,一个分区也是一个块设备。
因此它们都存在对应的block_device结构。

通常来说,一块有4个分区的磁盘,应该对应1个gendisk、4个hd_struct和5个block_device。
使用bdget_disk可以通过gendisk得到block_device。

论坛徽章:
0
发表于 2008-12-16 20:55 |显示全部楼层
原帖由 nikovh 于 2008-12-16 12:49 发表
庆幸此论坛有你·

谢谢支持!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP