zoukankan      html  css  js  c++  java
  • 自底向上的I/O扯淡

    网上流传的Linux kernel Map大图扔在下面。现层次化概览一下:

    1)硬盘驱动器(不是硬盘驱动程序):硬盘驱动器就是通常所说的硬盘。 “硬盘|驱动器”,“硬盘”- 盘,“驱动器”-旋转轴,磁头,读写臂等。

      参见维基百科:http://zh.wikipedia.org/wiki/硬盘驱动器 百度百科:http://baike.baidu.com/view/7706.htm 。 

    2)硬盘控制器:也是个硬部件,管理硬盘的。下面大图中的electronics层中的disk controllers。

      参加百度百科:http://baike.baidu.com/view/2346261.htm

    3)硬盘驱动程序:软部件驱动程序。disk controllers drivers。内核从这里来与硬盘硬部件I/O。

      3.0)hd.c: 硬盘驱动程序,利用硬盘控制器提供的可编程寄存器来对实际的盘进行读写,向上提供可用的接口。

      3.1) ll_rw_blk.c:向下执行底层设备块读写(调用硬盘控制器驱动程序提供的接口),向上提供可用的接口。

    4)buffer.c:使用ll_rw_blk.c提供的接口来读硬盘上的数据,当作高速缓冲,向上提供可用的接口。

    5)文件系统:

      管理函数:操作超级块、节点、位图等。

      读写中间件:使用buffer.c提供的接口读写数据,向上提供可用的接口。

      数据访问接口:使用读写中间件提供的接口读写,向上提供read write接口。

    6)于是上面都可以来用了。如图是MySql利用OS的文件系统I/O来实现各种存储引擎。

    大体上应该是这样的。参考资料:《linux内核完全注释》 《linux内核源代码情景分析》

  • 相关阅读:
    my eye
    html与HTML5的区别
    h5css样式
    h5css3弹性盒子
    简单js的介绍
    2020.8.16(周报6)
    2020.8.18
    2020.8.20
    2020.8.17
    2020.8.15
  • 原文地址:https://www.cnblogs.com/jiejue/p/2743717.html
Copyright © 2011-2022 走看看