【Linux操作系统分析】设备驱动处理流程

1 驱动程序,操作系统,文件系统和应用程序之间的关系

字符设备和块设备映射到操作系统中的文件系统,由文件系统向上提供给应用程序统一的接口用以访问设备。

Linux把设备视为文件,称为设备文件,通过对设备文件的读写操作实现对真实外设的操作。


从驱动程序的角度来从下到上看层次结构,包含了硬件设备,设备驱动程序(中断处理程序,设备服务程序),文件系统和用户进程四个层次:


需要知道的两个概念:

设备号:

  • 主设备号:标识同一类设备,对应一个驱动程序
  • 从设备号:标识一个设备实例,从设备号使得不同的物理设备使用同一个驱动程序。

设备文件:存在硬盘上的实际存在的文件,包括设备的名字,类型,设备号


需要知道的三个关于驱动操作的数据结构:

  • file_operations:文件操作,每个进程对设备的访问都会转换为对file_operations的访问,调用里面的操作函数指针;
  • file:打开的文件
  • inode:由内核在文件系统中表示文件

2 字符设备的注册


至此,设备驱动注册完成,有相应的设备驱动程序和设备号与之对应。


3 设备的打开

设备注册完成后,可以打开一个设备,这时候调用系统调用open()函数,经过一系列的调用,最后会调用chrdev_open()函数进行实际的打开操作,其主要流程为:



设备注册打开完成后,需要对其进行各种操作,外部设备的操作有一个特点就是操作时间较长,且操作时间不确定。

处理外部设备运作时,主要有两种方式:轮询和中断。

下面主要用介绍用中断的模式等待外设完成操作,其主要流程为:



4 小结

这里简单总结了一下Linux处理外部设备的主要流程,主要包括了外部设备的注册,打开和通常的操作。

需要注意的知识点就是驱动设备模型的概念,在字符设备中位cdev。所有对设备的操作,都是在cdev的ops字段寻找处理程序,之前将cdev映射道inode的i_cedv中,cdev的ops字段映射到设备文件file的f_op字段,这样对设备文件的操作就等同于对设备的操作,这正是本文开头所说明的设备文件映射到文件系统的实质。

在外部设备的操作流程中,涉及到中断处理流程,主要指的是软中断,会在中断一章详细讨论。


参考:

Linux操作系统分析PPT:驱动程序编写基础

转载于:https://www.cnblogs.com/suzhou/p/3638984.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言基础之数据结构

1.32 换成数字23 # include<stdio.h> //编译预处理指令 # include <math.h> # define pi 3.1415926 //定义不变常量 int convert(int num); char ABC(char a); double sum(double a,double b, double c); double area(double a,double b, double c); double num(…

硬件描述语言复习笔记

第一章 1、控制复杂性的艺术&#xff1a; A、抽象&#xff1a;管理复杂性的关键技术在于抽象即隐蔽不重要的细节 B、约束&#xff1a;对设计选择的一种内在限制&#xff0c;目的是为了可以更有效的在更高的抽象层 次上工作 C、三条原则&#xff1a; 层次化&#xff1a;一个系统…

C语言输出格式

1 一般格式printf(格式控制&#xff0c;输出表列&#xff09;例如&#xff1a;printf("i%d,ch%c\n",i,ch);说明:(1)“格式控制”是用双撇号括起来的字符串&#xff0c;也称“转换控制字符串”&#xff0c;它包括两种信息&#xff1a;①格式说明&#xff1a;由“%”和…

(Java)反射与文档注释

package com.reflect.test;/*** author Alina* date 2022年02月01日 6:09 下午*/ public class Demo1 {public void method(){System.out.println("Demo1...method");} } package com.reflect.test;import java.lang.annotation.ElementType; import java.lang.anno…

JQ基础练习---图片划过变暗

简单分享下&#xff0c;划过一张图片其余图片变暗&#xff0c;图片划过变暗的简单效果&#xff0c;JQ实现主要是css写法跟思路变化。 <script src"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type"text/javascript"></sc…

postman启动没反应_Linux 0.12上古源码学习(二)-Bochs模拟Linux 0.12内核的启动与运行...

上篇已经初步实现用Bochs仿真了一个X86程序。今天尝试启动早期的Linux 0.12内核。官网上已经有编译好的Linux 0.12启动镜像及根文件系统镜像。我们可以直接下载下来先使用&#xff0c;后面的文章会详细介始如何编译生成这些镜像文件。Index of /Linux.old/bochs-images/​www.o…

vscode 搭建web工程_Dubbo 分布式架构搭建教育 PC 站

架构设计与环境搭建项目架构项目介绍教育 PC 站是提供给学员观看技术视频的网站。学员使用手机号注册登录后&#xff0c;可以选择适合自己的课程&#xff0c;并观看课程视频&#xff0c;当然&#xff0c;有免费的课程&#xff0c;也有 VIP 专属课程。技术选型前端技术选型Vue.j…

jdk 环境变量_Windows下jdk下载安装与环境变量配置

下载安装jdk百度搜索jdk版本&#xff0c;以1.8版本为例&#xff0c;百度搜索“jdk1.8”&#xff0c;一般是第一个。百度搜索jdk1.8打开jdk下载页面&#xff0c;这里我们下载jdk1.8 x64版本下载地址&#xff1a;jdk1.8下载地址jdk1.8下载页面下载历史版本的jdk自动跳转登录&…

js true false 转0 1_「0-1岁」早产儿何时一段转二段奶粉

早产儿指的是37周之前出生的宝宝&#xff0c;想必足月宝宝来说&#xff0c;早产宝宝各方面发育都不完善&#xff0c;所以家长在照顾的时候要格外细心。当早产儿出生后&#xff0c;应当先喝早产儿奶粉&#xff0c;等身体发育发育到一定程度时&#xff0c;才更换奶粉。那么早产儿…

邮件服务器方案参考

国内私募机构九鼎控股打造APP&#xff0c;来就送 20元现金领取地址&#xff1a;http://jdb.jiudingcapital.com/phone.html内部邀请码&#xff1a;C8E245J &#xff08;不写邀请码&#xff0c;没有现金送&#xff09;国内私募机构九鼎控股打造&#xff0c;九鼎投资是在全国股份…

记录一下,踩得奇奇怪怪的坑

1servlet虚拟路径访问不到(默认的可以访问) url后的路径设置时与项目的名称一致 url必须与这个一致 2.jdbc连接数据库&#xff0c;本地测试无问题&#xff0c;一用tomcat发包就出错&#xff0c;导致连接不上时&#xff0c;看看你得配置文件的位置是否有误 放到resources目录下…

归并排序算法(C#实现)

归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。归并排序有两种方式&#xff1a;1): 自底向上的方法 2):自顶向下的方法 1、 自底向上的方法&#xff08;1&#xff09; 自底向上的基本思想 自底向上的基…

m5310采用芯片 中移物联_芯链HPB引领硬件区块链加密芯片技术,有望在谷歌光芯之前突破...

伴随人工智能时代的开启&#xff0c;世界对于高性能计算机器的需求磅礴发展&#xff1b;以往的高性能计算芯片是基于CMOS数字电路的处理器&#xff0c;而伴随着电子元件的摩尔定律接近技术瓶颈&#xff0c;数字电路芯片的发展速度和发展基础都在缓慢进行&#xff1b;区块链技术…

计算机的硬件工作原理(图片部分资源摘自王道考研资料)

一、现代计算机的组成 此处主存和辅存可以理解为&#xff0c;内存和外存&#xff0c;内存的特点是读取速度快但是不利于保存大量数据&#xff0c;外存的特点 是读取速度慢&#xff0c;但是可以存储大量数据 计算机在开机时不会读取硬盘上的所有数据&#xff0c;开机时先读取的…

rstp协议和stp协议对比_3.TCP和UDP协议对比

TCP、UDP协议对比任务&#xff1a;掌握TCP协议、UDP协议的作用&#xff1b;TCP的三次握手和四次挥手&#xff1b;RST断开连接过程和作用。1.TCPTCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;由IETF的RFC …