微软交流社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 86|回复: 0

Linux设备驱动程序模型

[复制链接]

1

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2023-1-13 14:25:08 | 显示全部楼层 |阅读模式
【推荐阅读】
Linux文件系统详解
linux进程管理---实时调度
linux内核内存管理-缺页异常
linux内核内存管理-brk系统调用
代码大佬的【Linux内核开发笔记】分享,前人栽树后人乘凉!
1、Linux设备驱动程序模型
Linux系统中包含字符设备、块设备、网路设备三类基本的设备驱动程序。随着技术的不断进步,Linux驱动程序体系的拓扑结构越来越复杂,Linux 2.4内核已经不能适应这种形势的需求。为此2.6内核开发了全新的设备模型,它采用Sysfs文件系统,该文件系统是一个类似于proc文件系统的特殊文件系统,用于将系统中的设备组织成层次结构,并向用户态程序提供详细的内核数据结构信息。该模型在智能电源管理、热插拔以及与用户空间交互等方面具有明显的优势。本章主要介绍Linux内核中的驱动程序模型,包括三类设备的驱动程序、proc文件系统、Sysfs文件系统、Kobject等内容。
1.1 设备驱动程序基础
1.1.1 驱动程序的概念
所谓设备驱动程序就是控制与管理硬件设备数据收发的软件,它是应用程序与硬件设备沟通的桥梁。从本质上讲设备驱动程序主要负责硬件设备的数据读写、参数配置与中断处理。设备驱动程序是操作系统的一部分,通常运行在内核层。应用层通过系统调用进入内核层,内核层根据系统调用号来调用驱动程序对应的接口函数。图1-1说明了Linux驱动程序的运行原理。


a
图1-1 设备驱动程序的原理
Linux中的大部分驱动程序,是以内核模块的形式编写的。内核模块是Linux内核向外部提供的一个接口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM)。Linux内核本身是一个单内核(monolithic kernel),具有效率高的优点,也具有可扩展性和可维护性差的缺陷。模块机制就是为了弥补这一缺陷而设计的。内核模块可以被单独编译,它在运行时被链接到内核,作为内核的一部分在内核空间运行。要让内核支持可加载模块,需要配置内核的【Enable loadable module support】选项,如图1-2所示。


原文作者:首页 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛
原文地址:Linux设备驱动程序模型 - 圈点 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛(版权归原文作者所有,侵权联系删除)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|微软交流社区

GMT+8, 2025-1-7 04:39 , Processed in 0.065772 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表