|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
研究 linux 内核 - 块设备I/O层0 S4 E( ~- u& ^: U- `; E% i7 h
5 ?+ y3 j' v# X
: d, s- K0 D" b* I9 { X) a1,说在前面: C) E4 x3 v* N' F! V
/ Y2 d M' y/ x) s, G5 M1 a j. t
" z2 V+ C2 @* u! C! W/ l5 [+ w1 b! p* S, v
1》块I/O层介于文件系统层和块设备驱动之间& i6 |" T- Y* z( f8 Y; b4 [
2》此层的核心是I/O“请求列表”2 {' ~ g' \/ z: m% s8 O
3》请求链表的节点是bio和HB(header of buffer),描述了扇区和块以及页的关系3 L, x5 X s- y/ c" j5 |' ?
4》块,是文件系统的最小操作单元。页,内存管理中的页。扇区,硬件最小操作单元。
% z, o+ W! @' b( Z; C; S5 |$ Z5》扇区大小<=块大小<=页大小
& E Z% n$ M, K) A* r/ M/ E& ]' ^, B# K. N
& Q! @- u4 I' l2,块设备I/O层的原理和工作过程5 R- B2 C! F% N- Y- U- k* C6 j
. U, [& M" n+ ]* I
1》文件系统向请求列表里加入请求6 u6 ~1 n# a+ d. l5 K* C$ Q7 g
2》块I/O调度程序运用一定算法(类似电梯调度算法)给请求列表排序
7 E3 _) Z- L& a3 y* Z3》块设备的驱动程序从请求队列里取请求,然后完成这个请求。实现块设备的操作。
! I, S9 V/ n* e; ~! Y/ z+ n! Y7 Y4》上图是从应用层调用文件I/O到底层驱动的整个流程。
( k) w/ X- m. t5 [' `6 c# d7 ?& k* f' b# q n7 y$ r; B/ Y" ~
& j5 _, S8 _+ ^# t
0 @5 P2 h0 `( J P* d8 L
1 i* m" o& g2 l) I) A; O1 l
% H& J* y' {% Q& h. s# C% I
7 p! C/ P" W( U h+ F3 L9 [# v5 P
, g9 i* z0 w3 T0 E |
|