设备驱动简介

article/2025/11/8 2:11:35

设备驱动

  • 一、设备驱动程序简介
  • 二、设备的分类和特点
    • 1.字符设备
    • 2.块设备
    • 3.网络设备


一、设备驱动程序简介

系统调用是操作系统内核应用程序之间的接口
设备驱动程序是操作系统内核机器硬件之间的接口

设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件只是个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。


设备驱动与用户程序的区别
1、应用程序以main 开始;驱动程序没有main,它以一个模块初始化函数作为入口。
2、应用程序从头到尾执行一个任务;驱动程序完成初始化之后不再运行,等待系统调用。
3、应用程序可以使用GLIBC 等标准C 函数库;驱动程序不能使用标准C库。
4、设备驱动提供什么能力,应用程序提供策略即如何使用这些能力。


设备驱动程序是内核的一部分,它主要完成4个功能:
1、对设备初始化和释放;
2、把数据从内核传送到硬件,从硬件读取数据;
3、读取应用程序传送给设备文件的数据和回送应用程序请求的数据;
4、检测和处理设备出现的错误。


用户态和内核态
1、系统运行时一般情况下,分用户态和内核态,这两种运行态下的数据互不可见的。
2、驱动程序是内核的一部分,工作在内核态;应用程序工作在用户态。
3、这样就存在数据空间访问的问题: 无法通过指针直接将二者的数据地址进行传递。
系统提供一系列函数帮助完成数据空间转移如:

get_user 、put_user 、copy_from_user 、copy_to_user等函数


关系图:
(1)、硬件、驱动、操作系统和应用程序的关系:
在这里插入图片描述
(2)、设备驱动与软硬件系统
在这里插入图片描述
(3)、应用程序与库函数、内核、驱动
在这里插入图片描述

二、设备的分类和特点

1.字符设备

(1)、字符设备是面向数据流的设备,请求缓冲区,对设备的存取只能按顺序按字节的存取而不能随机访问。
(2)、Linux下的大多设备都是字符设备。应用程序是通过字符设备节点来访问字符设备的。通常至少需要实现 open, close, read, 和 write 等系统调用。
(3)、设备节点一般都由mknod命令都创建在/dev目录下,包含了设备的类型、主/次设备号以及设备的访问权限控制等,如:

   crw-rw----  1 root  root 4, 64 Feb 18 23:34 /dev/ttyS0

(4)\常见的字符设备有鼠标、键盘、串口、控制台等。

当然,也有可以随机访问的字符设备,比如磁带驱动器,但访问随机数据所需要的时间很大程度上依赖于数据在设备内的位置。


2.块设备

(1)、存储设备一般属于块设备,块设备有****请求缓冲区,并且支持随机访问而不必按照顺序去存取数据,比如你可以先存取后面的数据,然后在存取前面的数据,这对字符设备来说是不可能的。
(2)、尽管在Linux下有块设备节点,但应用程序一般是通过文件系统及其高速缓存来访问块设备的,而不是直接通过设备节点来读写块设备上的数据。
(3)、每个块设备在/dev/目录下都有一个对应的设备文件,即设备节点,它们包含了设备的类型、主/次设备号以及设备的访问权限控制等 ,如

brw-rw----  1 root  root  3, 1 Jul  5  2000 /dev/hda1

(4)\块设备既可以作为普通的裸设备用来存放任意数据,也可以将块设备按某种文件系统类型的格式进行格式化,然后按照该文件系统类型的格式来读取块设备上的数据。

常见的块设备有各种硬盘、flash磁盘、RAM磁盘等。

在这里插入图片描述


3.网络设备

(1)、不同于字符设备和块设备,它是面向报文的而不是面向流的,它不支持随机访问,也没有请求缓冲区。
(2)、在Linux里一个网络设备也可以叫做一个网络接口,它没有像字符设备和块设备一样的设备号,只有一个唯一的名字如eth0、 eth1等,这个名字也不需要与设备文件节点对应,应用程序是通过Socket而不是设备节点来访问网络设备,在系统里根本就不存在网络设备节点。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/YK5V6Nxg.shtml

相关文章

Windows设备与驱动器管理

在安装一些软件的时候经常会在“我的电脑-设备与驱动器”下面多几个图标,那么这些图标是怎么添加上去?要怎么删除掉呢? 只需要知道关联的注册表项,就可以轻松的添加、删除、修改了: 1、设备与驱动器标记注册表项 HKE…

linux 没有可用软件包 pstree

yum provides反查询文件在什么包中 通过 yum provides pstree yum install psmisc

top,ps,pstree工具介绍及举例

top 工具是我们常用的一个查看工具,能实时的查看我们系统的一些关键信息的变化: toptop 是一个在前台执行的程序,所以执行后便进入到这样的一个交互界面,正是因为交互界面我们才可以实时的获取到系统与进程的信息。在交互界面中我们可以通过…

模仿pstree 打印进程树

一个查看进程树的小栗子 可以打印进程数,并且可以加参数 -n 显示pid,加参数-p 显示线程信息 ( 和pstree 的参数并不一样) 准备工作 step 1 处理进程信息 想办法找到所有当前进程 在Linux下 proc 文件系统 (procfs) 是类 Unix 操作系统中的一种特殊文件系…

pstree 详解

pstree命令是用于查看进程树之间的关系,即哪个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁 #pstree 几个重要的参数: -A: 各进程树之间的连接以ASCII码字符来连接 -U:各进程树之间的连接以utf8字符来连接&#xff0c…

Centos安装pstree

说明 以树状图的方式展现进程之间的派生关系 补充说明 pstree命令 以树状图的方式展现进程之间的派生关系,显示效果比较直观。 语法 pstree(选项) 选项 -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示&#x…

Linux命令之树状图显示所有进程pstree

概述 pstree 命令会将所有进程以树状图形式显示,方便查看进程之间的父子关系。pstree 是 display a tree of process 的缩写。 树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root),如果有指定使用者 id,则树状图会只显示该…

Linux基础命令-pstree树状显示进程信息

Linux基础命令-uname显示系统内核信息 Linux基础命令-lsof查看进程打开的文件 Linux基础命令-uptime查看系统负载 文章目录 前言 一 命令介绍 二 语法及参数 2.1 使用man查看命令语法 2.2 常用参数 三 参考实例 3.1 以树状图的形式显示所有进程 3.2 以树状图显示进程号…

学习一个 Linux 命令:pstree

linux在工作中用的越来越多,接下来为大家介绍一下比较常用的命令pstree的使用方法 命令简介 pstree 命令以树状图的方式展现进程之间的派生关系。 [rootcentos7 ~]# pstree -bash: pstree: command not found [rootcentos7 ~]# yum install psmisc -y 语法格式 …

android系统apk文件,如何安装apk文件 安卓手机apk文件安装方法

我们知道安卓手机软件程序均为APK格式文件,很多小白朋友对于安卓手机如何安装apk文件不是很了解,下面本文于大家简单介绍下。由于很多朋友使用一些手机应用软件里面下载安装程序,但那仅仅是针对Wifi用户很方便,而没有Wifi用户因流…

Android下载安装Apk

1.自定义监听类,用来返回下载结果 interface DownLoadListener {/*** 下载成功之后的文件*/fun onDownloadSuccess(file: File)/*** 下载进度*/fun onDownloading(progress: Int)/*** 下载异常信息*/fun onDownloadFailed(e:Exception) }进行文件下载 /*** param …

在Win 11上安装APK

听说在Win11上支持直接安装apk了,所以先把系统升级到了Win11。 1、 安装WSA 因为安装的不是开发版,所以需要下载完整的WSA(安卓子系统),下载操作如下: 首先进入网站 https://store.rg-adguard.net,分别选…

google Play安装APK软件

一、参考资料 此 Google 帐号尚未与设备关联。要安装应用,请先访问设备上的 Play 商店应用 二、相关介绍 利用现有网站平台生成新的Google Play下载APK链接,APK下载器允许APK文件从Google Play直接下载到电脑或移动设备。 三、准备工作 在 Google P…

android怎么安装apk文件,apk文件怎么安装?如何安装apk文件

可能很多已经入手或者将要入手的机友,对Android系统软件如何安装和卸载比较模糊,我们有必要对之有一个系统的了解和认知,这样我们才能更容易上手,熟悉了解这个系统的使用。 一、从手机直接安装 1、将APK 文件拷贝入手机的存储卡,在手机上运行安装好的APK 程序安装器,找到…

cmd 安装 apk

➥ 检查 adb, 如果不是下面 的页面说明;要么配置下 环境变量;要么在 adb.exe 文件夹中执行 adb ;如果你没有 去你 Android SDK 地址拿一个也行 ➥ 直接跑命令 adb install D:\MineGit\flutter_spawn\sdk\demo_2201.apk 如果你电脑 有…

androidP: apk安装流程

一、Android应用安装有如下四种方式 1 系统应用安装――开机时完成,没有安装界面 2.网络下载应用安装――通过market应用完成,没有安装界面 3.ADB工具安装――没有安装界面。 4. 第三方应用安装――通过SD卡里的APK文件安装,有安装界面&#…

APK安装流程及详细步骤

往期推荐 APK打包流程 APK文件结构 Android开发之数据储存 1.1 安装方式 1.安装APK文件共有4种方式: (1)系统程序安装 (2)通过Android市场安装 (3)手机自带安装 (4&#xff09…

2021年宏观经济十大趋势展望

新冠肺炎疫情无疑是一只黑天鹅,对2020年世界经济带来了巨大的冲击。临近年末,可以从很多角度回顾2020年中国宏观经济。如果从内外循环的角度概括一下,我们认为今年中国经济有两个“超预期”:外贸超预期,外资超预期。 …

2010-2020年农业农村重要经济指标

数据集名称:农业农村重要经济指标 时间范围:2010-2020年 数据来源:农业农村部 相关说明: 农业农村重要经济指标,覆盖6大类别,170多张统计表 全球及主要国家大豆产量(万吨)(2015-2019&#…

金融数据分析(十)人均国内生产总值的增长率

案例(四)宏观金融数据分析 项目一:利用世界银行公开数据平台提供的宏观经济数据比较最近40年间A国与B国的人均国内生产总值的增长率(图表输出) 数据可通过此网页中的下载链接获取:https://data.worldbank…