zoukankan      html  css  js  c++  java
  • 深入理解Linux内核-块设备驱动程序

    扇区:

    1、硬盘控制器将磁盘看成一大组扇区
    2、扇区就是一组相邻字节
    3、扇区按照惯例大小设置位512字节
    4、存放在块设备中的数据是通过它们在磁盘上的位置来标识,即首个扇区的下标和扇区的数目。
    5、扇区是硬件设备传送数据到基本单位。

    块:
    1、块是VFS和文件系统传送数据到基本单位。它对应磁盘上一个或者多个相邻扇区。
    2、内核访问一个文件内容时,它先从磁盘上读文件的磁盘索引节点所在的块
    3、Linux中,块必须是2的幂,且不能超过一个页框(一般4kB),还必须是扇区大小的整数倍。
    4、对块设备文件的读写操作时一种原始的访问,它绕过了磁盘文件系统
    5、每个块都有自己的缓冲区

    段:
    1、一个内存页或者内存页的一部分,它们包含一些相邻磁盘扇区中的数据。
    2、不同的段在RAM中相应的页框正好是连续的并且在磁盘上相应的数据块也是相邻的,那么通用块层可以合并它们,这种方式产生的更大的内存区就是物理段。


    通用块层:
    1、通用块层是一个内核组件,处理来自系统中的所有块设备发出的请求

    IO调度程序:
    1、块设备驱动程序一次可以传送一个扇区,但是块IO层不会这么做,因为确定磁盘表面上扇区的物理位置很费时间。所以只要有可能,内核就试图将几个扇区合并作为一个整体处理。
    2、内核组件读写磁盘数据的时候,实际上是创建了一个块设备请求。本质是描述所请求的扇区以及对他执行的操作类型。
    3、发出请求,IO操作仅仅被调度,执行会向后推迟,目的是提高块设备性能。


    IO调度算法:
    1、预期算法
    2、最后期限算法
    3、CFQ(Complete Fairness Queueing)完全公平算法:
    4、Noop(No Operation)算法:
    5、电梯算法:

    块设备驱动程序:
    1、Linux块子系统最底层的组件
    2、块设备驱动程序是设备驱动程序的组成部分。
    3、可能处理几个块设备

    块设备:
    1、







  • 相关阅读:
    【SQL查询】查询列中使用条件逻辑_case when then end
    【SQL查询】查询的列起别名_AS
    【SQL查询】查询的值为空时,给出默认值_NVL函数
    工薪阶层理财建议
    软件文档编写_软件开发过程中的文档
    等价边界值测试_日期
    【登录】测试用例
    来纪中的第一天
    普及C组第二题(8.1)
    普及C组第一题(8.1)
  • 原文地址:https://www.cnblogs.com/lipeil/p/4744646.html
Copyright © 2011-2022 走看看