linux设备驱动程序简介

又要被学一个技能,编写一个内核模块;

刚开始看,感觉挺好看的一本书。做个笔记~

1.1 驱动程序的角色

 (1)机制和策略是Unix所设计背后最好的观念之一。

        机制:提供什么样的能力。 策略:如何使用这些能力。

(2)驱动是不含策略的。

         比如软驱驱动是把磁盘表现为一个数据块的连续阵列(机制),系统的规定谁可以存取软驱驱动,直接何存取还是通过文件系统(策略)。因此,编写内核代码来存取硬件,但是不能强加特别的策略给用户。驱动应该做到使硬件有用,将所有关于如何使用的事情留给应用程序。

(3)可以理解成这是一个应用于程序和实际设备之间的软件层

          因此驱动这种特权角色允许驱动程序员严密的选择设备应该如何表现:不同的驱动可以提供不同的能力,或者统一设备上对于多种情况考虑下的平衡。比如一个设备由不同的程序使用,驱动程序员可以决定如何处理这种并发;可以在设备上实现内存映射而不依赖它的硬件能力,或者你能提供一个用户库帮助应用层实现新的策略。

(4)对策略透明的驱动有一些典型的特征

           1,支持同步和异步操作  ; 多次打开的能力 ;利用硬件的全部能力 ;

           2,成为策略透明是软件设计者的共同目标

(5)很多驱动是与程序用户程序一起发行,为了帮助配置和存储设备

1.2划分内核

内核任务之间的区别常常不能清楚划分,但是角色可以划分为几个部分

(1)进程管理

           内核负责创建和销毁进程;进程间的通信(信号、管道、捉着进程间通信原语)等基本系统功能也是内核处理;调度器,控制进程如何共享cpu;内核的进程管理实现了多个进程在一个或者多个cpu内核上的抽象。

(2)内存管理

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

  (3) 文件系统

内核在非结构化的硬件上建立结构化的文件系统。linux支持多个文件系统,也就是说,物理介质可以由不同的数据组织方式去访问。

(4)设备控制

几乎每个操作系统最终都要映射一个物理设备,除了处理器、内存以及个别实体,多数对于设备的控制操作要通过特定于要寻址的设备相关代码来进行,也就是设备驱动。内核中必须要嵌入系统中出现的每个外设的驱动,从硬盘驱动到键盘驱动。

(5)网络

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

1.2.1可加载模块

 linux可以在运行时扩展由内核提供的特性的能力,也就是说,你可以在系统运行的时候增加或者删除内核的功能。每块可以在运行时田添加的代码,被称为模块。包括但不限于设备驱动,每个模块由目标代码组成没有连接成一个完整的可执行文件,可以动态连接到运行的内核中,通过insmod、和rmmod来实现连接和去除连接。

1.3 设备和模块的分类

以linux看待设备的方式可以区分为三种基本设备类型,字符设备,块设备,网络接口。通常每个模块实现三种类型中的一种,对应的可以分成,字符模块,块模块,网络模块。

字符设备:一个字符设备可以当作一个字节流来存取的设备;一个字符驱动,通常要对该设备实现open,close,read和write系统调用。例如文本控制台(/dev/console)和串口(/dev/ttyS0)

块设备:如同字符设备,块设备通过位于/dev目录的文件系统节点来存取,在大部分Unix系统,一个块设备会传送一个或者多可例如512字节的整块,如同字符设备一样,允许传送任意数目,他们之间的区别仅仅在内核内部的管理数据的方式上,其区别对于用户是透明的,他们之间的内核的接口是不同的。

网络接口:任何网络事务都通过一个接口来进行,一个能与其他主机交换数据的接口通常是一个硬件设备,但也有可能是个纯粹的软件设备,比如回环接口。一个网络接口只负责发送和接收数据报文。

1.4. 安全问题   

略。

 

          

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值