Linux文件系统与设备驱动

2023-11-09

以下内容取自《Linux设备驱动开发详解:基于最新的Linux4.0内核》一书中,觉得讲的比较好,就在这里记录下。

5.2.2 Linux文件系统与设备驱动
图5.1所示为Linux中虚拟文件系统、 磁盘/Flash文件系统及一般的设备文件与设备驱动程序之间的关
系。
应用程序和VFS之间的接口是系统调用, 而VFS与文件系统以及设备文件之间的接口是file_operations
结构体成员函数, 这个结构体包含对文件进行打开、 关闭、 读写、 控制的一系列成员函数, 关系如图5.2
所示。
由于字符设备的上层没有类似于磁盘的ext2等文件系统, 所以字符设备的file_operations成员函数就直
接由设备驱动提供了, 在稍后的第6章, 将会看到file_operations正是字符设备驱动的核心。 块设备有两种
访问方法, 一种方法是不通过文件系统直接访问裸设备, 在Linux内核实现了统一的def_blk_fops这一
file_operations, 它的源代码位于fs/block_dev.c, 所以当我们运行类似于“dd if=/dev/sdb1of=sdb1.img”的命令
把整个/dev/sdb1裸分区复制到sdb1.img的时候, 内核走的是def_blk_fops这个file_operations; 另外一种方法
是通过文件系统来访问块设备, file_operations的实现则位于文件系统内, 文件系统会把针对文件的读写转
换为针对块设备原始扇区的读写。 ext2、 fat、 Btrfs等文件系统中会实现针对VFS的file_operations成员函
数, 设备驱动层将看不到file_operations的存在。

                                        

                                                               图5.1 文件系统与设备驱动之间的关系

                                    

                                                               图5.2 应用程序、VFS与设备驱动

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux文件系统与设备驱动 的相关文章

  • 优美的讲解equals和==的区别

    初步了解在JVM中的内存分配知识 在JVM中 内存分为堆内存跟栈内存 他们二者的区别是 当我们创建一个对象 new Object 时 就会调用对象的构造函数来开辟空间 将对象数据存储到堆内存中 与此同时在栈内存中生成对应的引用 当我们在后续
  • 【Python】Stegano包:一个纯Python的隐写模块,提供不同的隐写和隐写分析方法

    文章目录 一 介绍 二 安装 三 使用 Stegano 作为 Python 模块 3 1 LSB method 3 2 LSB method with sets 3 3 图片的描述字段 一 介绍 隐写术是一门以这样的方式编写隐藏消息的艺术和
  • Type ‘string‘ is not assignable to type ‘“xx1“

    新手常遇typescript类型约束报错 是宽泛的字符串约束和具体值的类型约束的问题 使用as const 解决 原理详细如下 https blog csdn net weixin 43263355 article details 1209
  • java 对象多属性排序_java – 按多个属性对对象排序

    我一直在研究一些需要我按三个属性 软件 str 颜色 str 和体积 int 对物体 软饮料 进行分类的东西 我已经研究过 并找到了通过名称 颜色和体积分别订购它们的方法 但有没有办法按三种方式订购它们 我的意思是 例如 假设有四个Soft
  • 用OpenCV-Python制作灯光秀短视频

    老猿Python博文目录 https blog csdn net LaoYuanPython 用OpenCV Python读取摄像头写入视频文件 一 引言 在 https blog csdn net LaoYuanPython articl
  • cucu: a compiler u can understand (part 2)

    原文地址 http blog csdn net roger wong article details 8502477 原文地址 http zserge com blog cucu part2 html 到目前为止 我们已经定义了我们语言的语
  • OpenWrt之U盘SD卡挂载overlay

    官方参考 挂载扩展存储脚本 bin sh 一键脚本挂载rootfs到SD卡 u盘则改mmcblk0p1为sda1 umount dev mmcblk0p1 mkfs ext4 dev mmcblk0p1 F mount dev mmcblk
  • ffmpeg 接收网络流并解码_FFmpeg编程入门系列(1)

    FFmpeg播放器框架 一个完整的播放器框架如下 媒体文件可以是本地文件 也可以是网络流 解复用器主要是分离出音视频包 音视频packet队列 这个是分开设计 为了匹配解复用器之间的速度以及防止网络抖动 音视频解码 主要是把packet数据
  • 14-数据结构-二叉树的创建以及前中后遍历,以及结点和叶子节点的计算(C语言)

    概述 二叉树 这里采用孩子链表存储法 即一个数据域和两个左右孩子指针域 随后递归进行遍历即可 在创建二叉树的时候 先创建各个二叉树结点 这里的结点采用动态分配 因此结点为指针变量 随后 再根据逻辑结构图 手动通过左右指针域 链接到对应位置即
  • 第六篇:数据可视化数据可视化技巧

    作者 禅与计算机程序设计艺术 1 简介 数据可视化 Data Visualization 是指将数据以图表 图像 信息地展示出来 对数据的分析结果 决策过程进行直观呈现 数据可视化是一种快速有效地帮助用户理解和发现数据关系和规律的方法 是理
  • 树莓派 GPIO口控制双色LED灯

    目录 一 首先加载库 二 设置编码规范 三 去除GPIO口警告 四 进行详细编程 五 程序源码 GPIO General Purpose I O Ports 意思为通用输入 输出端口 通过它们可以输出高低电平或者通过它们读入引脚的状态 是高
  • 数据可视化工具的三大类报表制作流程分享

    电脑 pc 移动 大屏三大类型的BI数据可视化报表制作步骤基本相同 差别就在于尺寸调整和具体的报表布局 这对于采用点击 拖拉拽方式来制作报表的奥威BI数据可视化工具来说就显得特别简单 接下来 我们就一起看看不这三大类型的BI数据可视化报表制
  • Android Studio 快捷键使用总结

    http www codeceo com article android studio shortcut html 文介绍了一系列在AndroidStudio中常用的快捷键 希望可以帮助各位在AndroidStudio的使用中更加得心应手
  • 大数据之Shell编程

    1 shell的概述 大数据和全栈工程师为什么要学习shell呢 1 需要看懂运维人员编写的Shell程序 2 偶尔自己会编写一些shell程序来管理集群 提高开发效率 2 shell解析器 1 Linux 提供的 Shell 解析器有 2
  • java基础

    Java数组 数组的访问 数组注意事项 数组的动态初始化 动态初始化的默认值 需求 int sales new int 16 26 36 6 100 int result 0 for int i 0 i
  • [详细的微信授权登陆 demo]

    目录 前言 Java实现微信授权登录的步骤如下 生成授权链接 让用户点击该链接进行授权 可以使用WeixinService的getAuthorizeUrl方法来生成授权链接 其中 redirectUrl是用户授权后跳转的链接 snsapi
  • 基于Ubuntu20.04创建共享文件夹

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 什么是共享文件夹 一 怎么创建共享文件夹 1 window设置 2 虚拟机设置 总结 前言 什么是共享文件夹 Ubuntu系统是安装在 VMware 虚拟机中
  • Windows支持诊断工具(MSDT)远程代码执行漏洞(CVE-2022-30190)分析复现/修复

    前言 Microsoft Windows Support Diagnostic Tool MSDT Remote Code Execution Vulnerability对应的cve为CVE 2022 30190 其能够在非管理员权限 禁用
  • 每天几道Java面试题(第二天)

    目录 第二幕 第一场 公司前台 第二场 公司卫生间 友情提醒 背面试题很枯燥 加入一些戏剧场景故事人物来加深记忆 PS 点击文章目录可直接跳转到文章指定位置 第二幕 第一场 公司前台 接待人员埃斯卡莱罗 面试者老王 面试者奥斯卡 奥斯卡 老
  • RabbitMQ消费端限流和发送端TTL(消息存活/过期时间)

    RabbitMQ消费端限流 应用场景 在rabbit listener container 中配置 prefetch属性设置消费端一次拉取多少消息 消费端的确认模式一定为手动确认 acknowledge manual

随机推荐