栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux设备驱动的个人理解

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux设备驱动的个人理解

前言:本文算是本人对linux驱动开发的理解,与读者共享之,不足之处还请多多指出

我们先来看看An Introduction to Device Drivers章节是如何对设备驱动扮演的角色进行描述的:

对用户端来说,设备驱动是一个完完全全的“黑盒”,其命令的执行和下发,以及对硬件端的操作彻底“躲藏”在标准系统调用之下,用户要想操作这个设备,只需要调用厂商提供的命令即可,同时用户也确实不会去关心对设备实现的细节。linux下的设备驱动有一个非常便利的特点-“随插随卸”,即随时可以嵌套到内核中使用,也可随时卸载摒弃于内核之外(画外音:这个特性解放了像你我这样千千万万个程序猿的发量)。

 

当然,理解归理解。如果光有理解,没有实际的分析,那岂不是如空中阁楼,起底不稳,各位看官老爷能不着急?

言归正传,我们来看看内核的组成,上图:

跟老版内核的划分不一样,新的内核划分标准将内核划分成以下五个部分:

1.Process management

 Process management主要包括进程的创建与销毁,进程间的通信,以及调度器的使用。

2.Memory management

 计算机的内存首先是一种资源,在资源有限的前提下,一定会发生资源的分配和抢占,当然这种资源的利用和分配一定是需要一个强有力的“部门”来进行有序监管,linux内核采用了虚拟内存地址空间和一些简单的接口例如malloc和free作为策略之一来实施管理。

3.Filesystems

 总所周知,linux是继承Unix的衣钵而来:一切均可视为文件。文件系统是对底层硬件设备和设备驱动等的一种抽象集合。

4.Device control

不多说,设备驱动是一组负责驱动特定设备的代码,Device control是设备驱动总集合的一个别称。

5. Networking

linux内核五个部分之间并不是老死不相往来的状态,相反而是相互间协调,交互完成工作。就拿我们设备驱动举例,设备驱动的初始化过程一定要使用内存资源-涉及到内存的管理,要经由文件系统下发命令道设备驱动层,要利用进程实现驱动的功能等。

说完了linux内核组成的五个部分,再来说说硬件设备的分类:

1.Character devices

2.Block devices

3.Network interfaces

 最后总结一下,设备驱动是要挂载到内核当中才能使用,已经挂载的设备驱动提供了“双向通道”(或者叫做pipe,可能不止一个哦)的作用:来自上一层命令经过设备驱动打包和封装传递给硬件设备(对应上面划分的三类设备),再处理来自硬件设备的信息和请求,处理后返回给上一层。

题外话:linux设备驱动的学习更多的是来源于内核特性,然后才是各种通信协议和规范。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/860546.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号