|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
研究 linux 内核 - 块设备I/O层
% u2 \3 g( [/ e! O% u' h6 P5 S# A, D' W# h7 _
; k e$ L8 R, }
1,说在前面) [( U9 ]3 b( F
, l" j" U' t( g+ d* c" b
% y0 |% o: r+ S! H2 d1 V
7 l, V Y" c4 {0 M3 d& s" k7 Z1》块I/O层介于文件系统层和块设备驱动之间
% u1 y5 Y; J- m) m/ T2》此层的核心是I/O“请求列表”
1 k: B& F' }3 H6 j8 @* E3》请求链表的节点是bio和HB(header of buffer),描述了扇区和块以及页的关系$ w1 M7 B E, c! x
4》块,是文件系统的最小操作单元。页,内存管理中的页。扇区,硬件最小操作单元。: s3 x0 [8 k" S7 m1 ?( R
5》扇区大小<=块大小<=页大小
; |6 x, c- m" ^$ r. J _! I
/ N8 E$ D& I! n7 o
1 P) D- i! B. y2,块设备I/O层的原理和工作过程9 S: v/ q7 `; Z! _: ?( R" v- j
5 ]; [- P% h% ]+ R3 d4 B- h1》文件系统向请求列表里加入请求
7 H6 O5 ^& D, A7 U: V9 D9 o2》块I/O调度程序运用一定算法(类似电梯调度算法)给请求列表排序2 M$ [) N: g! v+ s/ m
3》块设备的驱动程序从请求队列里取请求,然后完成这个请求。实现块设备的操作。
* B+ T1 e P4 b4》上图是从应用层调用文件I/O到底层驱动的整个流程。
1 x ?: U5 |. q4 x6 {5 q5 J2 I5 g3 I5 N* R' h
% d. X% ^; ]$ B9 J" L
( F. s+ S* ^( z2 X% ` g0 d6 n* w* y& l
, ~3 c5 r# M4 u: ?# b2 z
9 X$ i6 H5 y8 v
1 u# V$ y5 s& [/ t, [, e2 v8 l |
|