《Linux Device Drivers》第一章 设备驱动程序简介——note

1 引言

Linux内核黑客习惯深入Linux内核代码,找到精神食粮,并有能力增加某个新功能或者优化某个子系统的性能。


2 设备驱动程序的定义

驱动程序就是使硬件工作的一种特殊软件,它运行在操作系统的内核空间(虚拟地址0xC0000000到0xFFFFFFFF),封装硬件细节,服务于系统调用。


 3 机制和策略

    3.1需要提供什么功能(机制)如何使用这些功能(策略)。

机制和策略的区分是其中一个在Unix 设计背后的最好观念. 大部分的编程问题 其实可以划分为两部分:"提供什么能力"(机制) 和 "如何使用这些能力"(策略). 如果这两方面由程序的不同部分来表达, 或者甚至由不同的程序共同表达, 软件包是非常容易开发和适应特殊的需求.

    3.2不带策略的驱动程序包括一些典型的特征

   (1)同时支持同步和异步操作

   (2)驱动程序能够被多次打开

   (3)充分利用硬件特性


 4 内核功能划分

4.1进程管理

内核负责创建和销毁进程,并处理它们与外部世界的联系(输入和输出). 不同进程间通讯(通过信号, 管道,或者进程间通讯原语)对整个系统功能 来说是基本的, 也由内核处理. 另外, 调度器,控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活动实现了多个进程在 一个单个或者几个 CPU 之上的抽象.

 4.2内存管理

计算机的内存是主要的资源,处理它所用的策略对系统性能是至关重要的. 内核为所有进程的每一个都在有限的可用资源上建立了一个虚拟地址空间.内核的不同部分与内存管理子系统通过一套函数调用交互, 从简单的malloc/free 对到更多更复杂的功能.

 4.3文件系统

Unix 在很大程度上基于文件系统的概念; 几乎 Unix 中的任何东西都可 看作一个文件. 内核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整个系统中应用.另外, Linux 支持多个文 件系统类型, 就是说, 物理介质上不同的数据组织方式. 例如, 磁盘可被 格式化成标准 Linux 的 ext3 文件系统, 普遍使用的FAT 文件系统, 或 者其他几个文件系统.

  4.4设备控制

几乎每个系统操作最终都映射到一个物理设备上.除了处理器, 内存和非 常少的别的实体之外, 全部中的任何设备控制操作都由特定于要寻址的设 备相关的代码来进行. 这些代码称为设备驱动.内核中必须嵌入系统中出 现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动器.内核功能的这个 方面是本书中的我们主要感兴趣的地方.

  4.5网络功能

网络必须由操作系统来管理,因为大部分网络操作不是特定于某一个进程: 进入系统的报文是异步事件.报文在某一个进程接手之前必须被收集, 识 别, 分发. 系统负责在程序和网络接口之间递送数据报文, 它必须根据程 序的网络活动来控制程序的执行. 另外, 所有的路由和地址解析问题都在 内核中实现.

   

5可装载模块

(1)内核提供的特性可在运行时进行扩展

(2)运行时添加到内核中的代码被称为“模块”

(3)每个模块由目标代码组成

(4)insmod, rmmod

 

  6 设备和模块的分类

    6.1 字符设备

(1)字符设备是个能够像字节流一样被访问的设备

(2)至少实现open、close、read和write系统调用

(3)字符终端(/dev/console)和串口(/dev/ttys0)

   6.2块设备

(1)通过/dev目录下的文件系统节点来访问

(2)传输一个或多个完整的块,每块通常是512字节

  6.3 网络接口

(1)任何网络事务都经过一个网络接口形成,即一个能够和其他主机交换数据的设备

(2)接口是个硬件设备,但也可能是个纯软件设备,比如回环(loopback)接口

  6.4文件系统类型是个软件驱动程序,文件系统模块必须实现访问目录和文件的最底层系统 调用


7安全问题

(1)留心影响全局资 源的设备操作( 例如设置一条中断线 )

(2)缓冲区溢出

(3)小心对待来自用户空间的内存

(4)小心使用第三方获得的软件(已编译)


  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux Device Driver (3edtion)原版 1. An Introduction to Device Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 The Role of the Device Driver 2 Splitting the Kernel 4 Classes of Devices and Modules 5 Security Issues 8 Version Numbering 10 License Terms 11 Joining the Kernel Development Community 12 Overview of the Book 12 2. Building and Running Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Setting Up Your Test System 15 The Hello World Module 16 Kernel Modules Versus Applications 18 Compiling and Loading 22 The Kernel Symbol Table 28 Preliminaries 30 Initialization and Shutdown 31 Module Parameters 35 Doing It in User Space 37 Quick Reference 39 3. Char Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 The Design of scull 42 Major and Minor Numbers 43 Some Important Data Structures 49 ,ldr3TOC.fm.4587 Page v Thursday, January 20, 2005 9:30 AMvi | Table of Contents Char Device Registration 55 open and release 58 scull’s Memory Usage 60 read and write 63 Playing with the New Devices 70 Quick Reference 70 4. Debugging Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Debugging Support in the Kernel 73 Debugging by Printing 75 Debugging by Querying 82 Debugging by Watching 91 Debugging System Faults 93 Debuggers and Related Tools 99 5. Concurrency and Race Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Pitfalls in scull 107 Concurrency and Its Management 107 Semaphores and Mutexes 109 Completions 114 Spinlocks 116 Locking Traps 121 Alternatives to Locking 123 Quick Reference 130 6. Advanced Char Driver Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 ioctl 135 Blocking I/O 147 poll and select 163 Asynchronous Notification 169 Seeking a Device 171 Access Control on a Device File 173 Quick Reference 179

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值