linux内核之块设备
文章平均质量分 78
revoer001
这个作者很懒,什么都没留下…
展开
-
linux内核之块设备一---通用块层bio处理
通用块层bio处理的接口generic_make_requestvoid generic_make_request(struct bio *bio){ if (current->bio_tail) { /* make_request is active */ *(current->bio_tail) = bio; bio->bi原创 2016-07-23 13:08:28 · 4107 阅读 · 0 评论 -
linux内核之块设备三---块设备排入bio请求
该接口作为通用的块设备处理bio请求的方式,主要思路是尽可能的合并bio到请求request中,如果可能进一步将连续的request合并;如果不能合并bio,则新建请求,初始化后,plug互斥方式:加锁,请求队列的锁涉及到不同的调度算法:将新建的请求添加到调度器的调度队列,由unplug触发调度器,进而将请求按照特定的调度算法将请求派发到请求队列的派发队列。/*块设备排入bio请求*/原创 2016-07-23 13:10:32 · 4848 阅读 · 0 评论 -
linux内核之块设备四---deadline调度算法
总体来讲,deadline算法对request进行了优先权控制调度,主要表现在如下几个方面:1)读写请求分离,读请求具有高优先调度权,除非写请求即将被饿死的时候,才会去调度处理写请求。这种处理可以保证读请求的延迟时间最小化。2)对请求的顺序批量处理。对那些地址临近的顺序化请求,deadline给予了高优先级处理权。例如一个写请求得到调度后,其临近的request会在紧接着的调度过程原创 2016-07-23 13:11:58 · 3632 阅读 · 0 评论 -
linux内核之块设备二---真正派发请求request
触发请求request派发的时机:重新申请一个请求失败时将一个带有unplug标记的bio添加到请求队列时将请求添加调度器的调度队列,达到了unplug阈值时unplug定时时间到,周期性前三个调用__generic_unplug_device,最后一个调用generic_unplug_device互斥机制:加锁,请求队列的锁在初原创 2016-07-23 13:09:38 · 3961 阅读 · 0 评论