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、







  • 相关阅读:
    [每日短篇] 1C
    项目Alpha冲刺 Day12
    项目Alpha冲刺 Day12
    [转载]MVC中单用户登录
    GitLab
    Git 版本控制
    Jenkins持续集成
    Jenkins安装
    Docker 网络基础原理
    java中内存的使用
  • 原文地址:https://www.cnblogs.com/lipeil/p/4744646.html
Copyright © 2011-2022 走看看