深入理解Linux内核-块设备驱动程序
扇区: 1、硬盘控制器将磁盘看成一大组扇区
2、扇区就是一组相邻字节
3、扇区按照惯例大小设置位512字节
4、存放在块设备中的数据是通过它们在磁盘上的位置来标识,即首个扇区的下标和扇区的数目。
5、扇区是硬件设备传送数据到基本单位。 块:
1、块是VFS和文件系统传送数据到基本单位。它对应磁盘上一个或者多个相邻扇区。
2、内核访问一个文件内容时,它先从磁盘上读文件的磁盘索引节点所在的块
3、Linux中,块必须是2的幂,且不能超过一个页框(一般4kB),还必须是扇区大小的整数倍。
4、对块设备文件的读写操作时一种原始的访问,它绕过了磁盘文件系统
5、每个块都有自己的缓冲区 段:
1、一个内存页或者内存页的一部分,它们包含一些相邻磁盘扇区中的数据。
2、不同的段在RAM中相应的页框正好是连续的并且在磁盘上相应的数据块也是相邻的,那么通用块层可以合并它们,这种方式产生的更大的内存区就是物理段。 通用块层:
1、通用块层是一个内核组件,处理来自系统中的所有块设备发出的请求 I\O调度程序:
1、块设备驱动程序一次可以传送一个扇区,但是块I\O层不会这么做,因为确定磁盘表面上扇区的物理位置很费时间。所以只要有可能,内核就试图将几个扇区合并作为一个整体处理。
2、内核组件读写磁盘数据的时候,实际上是创建了一个块设备请求。本质是描述所请求的扇区以及对他执行的操作类型。
3、发出请求,I\O操作仅仅被调度,执行会向后推迟,目的是提高块设备性能。 I\O调度算法:
1、预期算法
2、最后期限算法
3、CFQ(Complete Fairness Queueing)完全公平算法:
4、Noop(No Operation)算法:
5、电梯算法: 块设备驱动程序:
1、Linux块子系统最底层的组件
2、块设备驱动程序是设备驱动程序的组成部分。
3、可能处理几个块设备 块设备:
1、
深入理解Linux内核-块设备驱动程序的更多相关文章
- Linux中块设备驱动程序分析
基于<Linux设备驱动程序>书中的sbull程序以对Linux块设备驱动总结分析. 開始之前先来了解这个块设备中的核心数据结构: struct sbull_dev { i ...
- 简单linux块设备驱动程序
本文代码参考<LINUX设备驱动程序>第十六章 块设备驱动程序 本文中的“块设备”是一段大小为PAGE_SIZE的内存空间(两个扇区,每个扇区512字节) 功能:向块设备中输入内容,从块设 ...
- 《Linux Device Drivers》第十六章 块设备驱动程序——note
基本介绍 块设备驱动程序通过主传动固定大小数据的随机访问设备 Linux核心Visual块设备作为基本设备和不同的字符设备类型 Linux块设备驱动程序接口,使块设备最大限度地发挥其效用.一个问题 一 ...
- (linux)块设备驱动程序
1.4.1 Linux块设备驱动程序原理(1) 顾名思义,块设备驱动程序就是支持以块的方式进行读写的设备.块设备和字符设备最大的区别在于读写数据的基本单元不同.块设备读写数据的基本单元为块,例如 ...
- linux系统下块设备驱动程序
顾名思义,块设备驱动程序就是支持以块的方式进行读写的设备.块设备和字符设备最大的区别在于读写数据的基本单元不同.块设备读写数据的基本单元为块,例 如磁盘通常为一个sector,而字符设备的基本单元为字 ...
- Linux 0.11源码阅读笔记-块设备驱动程序
块设备驱动程序 块设备驱动程序负责实现对块设备数据的读写功能.内核代码统一使用缓冲块间接和块设备(如磁盘)交换数据,缓冲区数据通过块设备驱动程序和块设备交换数据. 块设备的管理 块设备表 内核通过一张 ...
- 嵌入式Linux驱动学习之路(二十一)字符设备驱动程序总结和块设备驱动程序的引入
字符设备驱动程序 应用程序是调用C库中的open read write等函数.而为了操作硬件,所以引入了驱动模块. 构建一个简单的驱动,有一下步骤. 1. 创建file_operations 2. 申 ...
- 读书笔记之Linux系统编程与深入理解Linux内核
前言 本人再看深入理解Linux内核的时候发现比较难懂,看了Linux系统编程一说后,觉得Linux系统编程还是简单易懂些,并且两本书都是讲Linux比较底层的东西,只不过侧重点不同,本文就以Linu ...
- [中英对照]User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序
如对Linux用户态驱动程序开发有兴趣,请阅读本文,否则请飘过. User-Space Device Drivers in Linux: A First Look | 初识Linux用户态设备驱动程序 ...
随机推荐
- python之函数用法isupper()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法isupper() #http://www.runoob.com/python/att ...
- java常见数据结构整理
java中容器类数据结构主要在java.util包中. java.util包中三个重要的接口及特点:List(列表).Set(保证集合中元素唯一).Map(维护多个key-value键值对,保证key ...
- NPOI 中的公式列的值的获取
方法1 NPOI 中,对 sheet 对象设置 ForceFormulaRecalculation = true,即可实现自动将 Excel 的公式计算出来. 方法2 循环 Excel 的行.列,取出 ...
- webview中事件的用法
封装 MBProgressHud ==================================== #import "MBProgressHUD.h" @interface ...
- linux 常见音乐、视频播放器简介
2007-1-15 10:00:22 常见音乐播放器 xmms一族 xmms全称是X Multimedia System,这个经典的播放器可能是每个linux的使用者或多或少都 ...
- Comparable 与 Comparator
Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序 ...
- PHP 5.3版本上MS SQL Server的连接配置
折腾了好久,最后终于连接成功了! 注:我使用的的phpStudy. php.ini中配置: ;这是php中带的驱动 extension=php_sqlsrv.dll extension=php_pdo ...
- JQuery UI - draggable(转)
·概述 在任何DOM元素启用拖动功能.通过单击鼠标并拖动对象在窗口内的任何地方移动. 官方示例地址:http://jqueryui.com/demos/draggable/ 所有的事件回调函数都有两个 ...
- 【Spring】Spring之向 IOC 容器注入对象的三种方式
关于Spring的搭建可参见:浅析Spring框架的搭建.在测试之前还是应该先将环境配置好,将相关Jar包导进来.Spring创建的对象,默认情况下都是单例模式,除非通过scope指定. 向IOC容器 ...
- [转]在Linux CentOS 6.6上安装Python 2.7.9
在Linux CentOS 6.6上安装Python 2.7.9 查看python安装版本 python -V yum中最新的也是Python 2.6.6,所以只能下载Python 2.7.9的源代码 ...