应用程序与库函数、内核、驱动之间的关系
来源:互联网 发布:xampp使用教程 php版本 编辑:程序博客网 时间:2024/05/16 15:41
应用程序与库函数、内核、驱动之间的关系
应用程序、库、内核、驱动程序的关系:应用程序调用应用程序函数库完成功能、应用程序以文件形式访问各种资源、应用程序函数库、部分函数直接完成功能、部分函数通过系统调用。
由内核完成内核处理系统调用。
调用设备驱动程序,设备驱动直接与硬件通信。
它们之间的关系如下图所示
设备类型:
常见的设备有三类:字符设备、块设备、网络设备。
字符设备:对字符设备发出读/写请求时,实际的硬件I/O操作一般紧接着发生。
块设备:块设备与之相反,它利用系统内存作为缓冲区。
网络设备:网络设备是一类特殊的设备,它不像字符设备或块设备那样通过对应的设备文件节点访问,也不能直接通过read 或write进行数据访问请求。
设备号
硬件设备以主设备号和从设备号区分。在设备管理中,除了设备类型外,内核还需要对被称为主从设备号的参数,才能唯一 标识一个设备。主设备号相同的设备使用相同的驱动程序,从设备号用于区分具体设备的实例。在/dev目录下使用ll命令(ls -l) 可以查看各个设备的设备类型、主从设备号等。cat /proc/devices可以查看系统中所有设备对应的主设备号。
设备文件
设备类型、主从设备号是内核与设备驱动程序通信时使用的,应用程序使用设备文件节点访问对应设备。Linux 2.4引入了设 备文件系统(devfs)所有的设备文件作为一个可以挂载的文件系统,每个主从设备号确定的设备都对应一个文件节点。每个设 备文件都有其文件属性(c代表字符设备或者b代表块设备),都有2个设备号:1、主设备号,用于标识驱动程序;2、从设备 号:用于标识同一驱动程序的不同硬件。设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致。需要注意的 是,系统调用是内核与应用程序之间的接口,设备驱动程序是内核与硬件之间的接口。
驱动程序与应用程序的区别
1、应用程序以main开始,驱动程序没有main,它以一个模块初始化函数作为入口。
2、应用程序从头到尾执行一个任务,驱动程序完成初始化之后不再运行,等待系统调用。
3、应用程序可以使用GLIBC等标准C函数库,驱动程序不能使用标准C库。
用户态与内核态
系统运行时一般情况下,分用户态和内核态,这两种运行态下的数据互不可见的。驱动程序是内核的一部分,工作在内核 态,应用程序工作在用户态。这样就存在数据空间访问的问题:无法通过指针直接将二者的数据地址进行传递。问题的解决办法 是:系统提供一系列函数帮助完成数据空间转换:例如,get_user 、put_user 、copy_from_user 、copy_to_user
等函数。
Linux驱动程序功能
驱动程序的一般功能是:对设备初始化和释放、把数据从内核传送到硬件和从硬件读取数据、读取应用程序传送给设备文件 的数据和回送应用程序请求的数据、检测和处理设备出现的错误等。
以LED为代表:
- 应用程序与库函数、内核、驱动之间的关系
- 应用程序与库函数、内核、驱动之间的关系
- 应用程序、内核、驱动的关系
- 应用程序、内核、驱动的关系
- 应用程序、内核、驱动的关系
- 应用程序,内核,驱动的关系
- 应用程序、内核、驱动的关系
- 应用程序、内核、驱动的关系
- 设备,驱动,内核,应用程序之间的…
- 内核系统与应用程序的关系
- 应用程序与内核之间数据与套接字的传输
- andorid 第五天 了解xml与应用程序之间的关系
- 读书笔记之应用程序与操作系统之间的关系
- uboot与系统内核mtd分区之间的关系
- 使用usbfs与内核驱动之间的冲突
- linux系统调用、库函数和内核函数关系与区别
- linux系统调用、库函数和内核函数关系与区别
- [150312]linux内核,驱动,应用程三者的概念和之间的关系
- 借助Sigar API获取CPU相关信息
- jquery中wrap,wrapAll,wrapInner的区别
- Android Studio 快捷键介绍
- linux硬链接与软链接
- 坐等花开花败
- 应用程序与库函数、内核、驱动之间的关系
- Spring @Transactional(rollbackFor,notRollbackFor)
- BZOJ 3875 Ahoi2014 骑士游戏 SPFA
- Linux RCU机制详解 (透彻)
- CSS浏览器兼容问题集合
- Maven坐标和依赖
- 《老罗的Android之旅》导读PPT(转载)
- Autolayout经验分享
- 转动的div层