`
longxj
  • 浏览: 101780 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

linux对块设备的请求处理

阅读更多

linux对块设备请求的处理是一种层次体系结构,可以分为5层:

1.vfs:这层对所有文件系统的一种封装

2.mapping layer:这层用来定位数据的物理位置

这个操作分为2步:

a.首先确定包含文件的文件系统的block size,然后计算请求的数据包含多少file block。

b.调用跟文件系统有关的函数来访问文件的inode,确定请求的数据在磁盘上的逻辑块地址,事实上

磁盘被看成由一个一个的block组成,所以kernel需要确定请求数据的起始块号

这层跟下层的区别在于这层看不到sector结构,只看到block结构

3.generic block layer:

这层有个核心的数据结构bio,它代表一次i/o操作,读取连续的磁盘扇区,如果请求的数据不是连续的,那么

需要发送多个bio结构,也就是多次i/o操作。这层将block转到对应的sector。

4.i/o scheduler layer:

这层负责将i/o操作进行排序,采用某种算法来高效地处理操作,下面的博客i/o scheduler将进行详细阐述

5.block device driver:

这层实现真正的数据传输,通过发送命令给磁盘控制器

分享到:
评论

相关推荐

    linux下块设备代码

    本教程主要讲解如何在Linux下编写块设备驱动代码,以便对这些设备进行自定义的IO操作。 一、块设备驱动的基本概念 1. 块设备驱动是Linux内核的一部分,用于与硬件进行通信,控制块设备的读写操作。 2. 块设备驱动...

    Linux块设备驱动程序讲解与实验

    Linux块设备驱动基本程序 自己实现bio操作 分区实验与改进测试

    Linux块设备驱动

    总的来说,Linux块设备驱动程序的开发涉及到对Linux内核的理解、对块设备I/O操作的深入分析以及对内核数据结构和API的熟练运用。这要求开发者不仅要具备编程能力,还要对Linux系统和内核工作机制有一定的了解。通过...

    linux块设备驱动

    Linux块设备驱动是操作系统中处理块设备请求的软件组件,它负责与硬件设备进行交互,以完成数据的读写操作。块设备如硬盘驱动器、SSD等,它们使用缓冲区来按块进行数据的读写操作,而字符设备(如终端、串口等)则是...

    linux块设备驱动代码例子

    通过对这些文件的学习,你可以更深入地了解如何编写和调试Linux块设备驱动。例如,可以查看`2.6.35_block`中的驱动初始化过程,如何注册设备,以及如何处理I/O请求。同时,`blkdev`中的文档可能提供了一些关于如何...

    linux块设备驱动源代码

    本主题将深入探讨Linux块设备驱动的源代码,以便于理解其工作原理和开发流程。 首先,块设备驱动的主体部分通常在`<kernel_source>/drivers/block/`目录下,这里的`<kernel_source>`代表Linux内核源码的根目录。在...

    写个块设备驱动程序

    3. **请求处理**:块设备驱动程序需要处理内核提交给它的块设备请求。这些请求由内核的I/O调度器维护在一个队列中。驱动程序需要实现自己的请求函数来处理这些请求。 4. **块设备的添加与移除**:使用`add_disk`...

    Linux块设备驱动.doc

    Linux块设备驱动是操作系统内核与硬件之间的重要接口,它负责管理和优化对硬件块设备(如硬盘、SSD、SD卡等)的I/O操作。块设备与字符设备的主要区别在于其I/O操作的方式和特性。 块设备I/O操作的特点: 1. **块...

    Linux_block_driver.rar_Linux block device_Linux 块设备_linux drive

    本文将深入探讨Linux块设备驱动程序及其工作原理。 首先,我们要理解Linux内核中的块设备模型。在Linux中,块设备驱动程序是内核的一部分,它们负责与硬件交互,执行读写操作,管理和调度I/O请求。块设备驱动通常会...

    写一个块linux设备驱动 - 幽幽灵猫 - 博客园_Linux块设备_air1vx_linux_

    本文将深入探讨如何编写一个块设备驱动,特别关注Linux块设备驱动的开发,结合“air1vx”这个特定的设备,并在Linux环境中实现。我们将详细讨论以下知识点: 1. **块设备概述**: 块设备(Block Device)是存储...

    浅谈Linux设备驱动.pdf

    字符设备和块设备的主要区别是:在对字符设备发出读、写请求时,实际的硬件 I/O 一般就紧接着发生了,块设备则不然,它利用一个块系统内存作为缓冲区,当用户进程对设备请求函数来进行实际的 I/O 操作。 Linux ...

    写一个linux块设备驱动

    ### Linux块设备驱动开发入门——基于内存的块设备驱动实现 #### 一、引言 在Linux内核中,块设备驱动是操作系统与硬件之间的重要桥梁之一,它负责管理硬盘、光驱等存储设备的数据传输过程。对于希望深入了解Linux...

    linux块设备分析与使用

    通过以上分析可以看出,Linux块设备的管理涉及到许多复杂的数据结构和处理逻辑,但总体来说,其设计思想是为了最大化系统的性能并提供可靠的I/O服务。了解这些核心机制对于深入理解Linux操作系统的行为至关重要。

    嵌入式linux块设备驱动源代码和Makefile编译驱动文件源代码

    嵌入式Linux块设备驱动是操作系统与硬件之间的重要桥梁,它负责管理硬件设备,使得操作系统能够高效、稳定地访问硬件存储资源。在这个主题中,我们将深入探讨嵌入式Linux块设备驱动的源代码结构、工作原理以及如何...

    《Linux设备驱动开发详解-基于最新的Linux4.0内核》源码

    该书涵盖了从基础概念到高级技术的全面知识,包括内核接口、I/O操作、中断处理、DMA、字符设备、块设备、网络设备等多种类型的驱动程序开发。 Linux内核是操作系统的核心,负责管理硬件资源和提供系统服务。设备...

    LINUX设备驱动程序(Linux.Device.Driver)

    Linux设备驱动分为字符设备驱动、块设备驱动和网络设备驱动等类型,每种都有其特定的API和工作方式。 二、设备模型 Linux设备模型提供了一套统一的方式来表示和管理系统的硬件设备。它包括设备节点、总线、设备和...

    如何编写Linux设备驱动程序

    字符设备和块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,块设备则不然,它利用一块系统内存作缓冲区,当用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,...

    i.MX6ULL实现内存模拟硬盘,实现块设备驱动(制造请求)【Linux驱动】.zip

    这为学习和理解Linux块设备驱动的开发提供了很好的实践平台。通过分析和调试这些代码,我们可以深入理解Linux内核的驱动模型,以及如何在内存中模拟块设备,这对于任何希望在嵌入式Linux系统上开发驱动程序的人来说...

    某牛人写的写一个块设备的教程

    在Linux内核中,块设备驱动还需要实现队列处理,如`request_queue_t`,它是处理I/O请求的核心数据结构。`make_request`函数将用户空间的请求转化为内核中的请求队列,然后由块层调度器处理这些请求。 此外,驱动还...

Global site tag (gtag.js) - Google Analytics