有一问题向您请教:一直不是很明白block_device结构在块设备中的作用。
每个分区有一个block_device和一个hd_struct来描述。
每块磁盘有一个gendisk描述。gendisk下挂着hd_struct的指针。
这三个结构体是怎样相互作用和影响的?
衷心感谢
庆幸此论坛有你· 原帖由 Godbach 于 2008-12-12 21:23 发表 http://linux.chinaunix.net/bbs/images/common/back.gifLZ辛苦。
所以也希望你能同样辛苦地看完哦: ) 原帖由 myem007 于 2008-12-12 22:20 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
虽然没看懂,但是还是有支持下楼主!
谢谢支持! 原帖由 scofield1025 于 2008-12-14 18:59 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
非常感谢楼主的辛勤工作! 强烈支持!
谢谢支持,因为我刚学时也非常希望能够得到一部引领我入门的文档,
这也算是了却自己当时的一个心愿。 原帖由 fishswimming 于 2008-12-14 23:28 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
"我们的块设备驱动程序需要从伙伴系统中获得所需的内存。
目前的做法是每次获得1个页面,也就是分配页面时,把2的n次幂中的n指定为0。
这样做的好处是只要系统中存在空闲的页面,不管空闲的页面是否连续 ...
详细的阅读这部教程,是对作者最大的支持。
我指的是,比如,我们的程序拆开了一些连续的页面,但没有完全用掉,剩下的页面被另一些功能申请掉了。
这时我们的程序即使退出并归还了所有页面,原先的连续页面也无法还原了。
因此在申请时尽量申请大一些,可以避免产生比申请大小更小的碎片。
曾经有一种说法是统计上,一次申请4个页面对系统比较有利,
不过在本教程中引入这种做法的本意是让读者接触一下伙伴系统的概念。
个人认为,最佳的解决方法可能还在64位机器的应用上,
64位机器中庞大的非线性映射区域可以有效地弱化这一问题。
[ 本帖最后由 OstrichFly 于 2008-12-16 20:40 编辑 ] 原帖由 hb12112 于 2008-12-15 13:54 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
楼主好厉害呵,是感觉没之前那么大难度,不过数据安全确实是很容易忽略的问题。
谢谢支持! 原帖由 lonelyair 于 2008-12-16 10:15 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
:lol: :lol: 受教,期待中
谢谢支持!
我会继续的,可能有15章以上哦。 原帖由 hb12112 于 2008-12-16 10:51 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
看了这些教程,让我受益非浅!再次感谢!
有一问题向您请教:一直不是很明白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。 原帖由 nikovh 于 2008-12-16 12:49 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
庆幸此论坛有你·
谢谢支持!