[读书笔记]设备驱动程序简介(第一章)
一、综述
迷茫的时候该怎么办呢?
看书啊,使劲看,拼命看。
之前读过《Linux设备驱动程序》(LINUX DEVICE DRIVER)这本书,
读第一遍的时候,只是泛读,看一些自己看得懂的,不懂的都跳过了,结果发现跳过了很多(捂脸)
读第二把的时候,之前很多看不懂的地方,随着工作经验的累积,慢慢看得懂一些东西,还是会跳过一些章节。
现在是第三遍了,我想我该仔细去阅读,做好一些笔记,以免过后忘记了还能来温习一下,毕竟 “温故而知新,可以为师矣”。
谁让脑子不好使呢,就做点笔记吧!
1.设备驱动程序的作用
驱动程序的作用->提供机制,而不是提供策略。
大多数编程问题实际上可以分为2部分:
1.需要提供什么功能(机制)
2.如何使用这个功能(策略)
在我们实际开发的时候,我们编写的驱动程序应该尽量只提供硬件访问的功能,而怎样使用硬件的问题留给上层应用程序。
2.内核功能的划分
Linux系统支持 多进程并发运行,每个进程都可以请求系统资源,如申请内存,运算等,而内核负责处理这些请求。根据内核完成任务的不同,内核功能可以分为:
1.进程管理:负责创建和销毁进程,并处理它们和外界的连接。
2.内存管理 :负责创建、分配、销毁内存
3.文件系统
4.设备控制
5.网络功能
3.设备和模块分类
模块:字符模块,块模块,网络模块
设备:字符设备,块设备,网络设备
字符设备:是个能够像字节流一样被访问的设备,通常至少要实现open、close、read、write方法,字符设备可以通过文件系统节点来访问。
块设备:和字符设备类似,通过/dev/目录下的文件系统节点来访问,块设备(如磁盘)能够容纳文件系统,块设备和字符设备的区别仅仅在于内核内部管理数据方式的不同
网络设备:任何网络事物都经过一个网络接口形成,即一个能够和其他主机交互数据的设备,通常接口可以是硬件设备,也可以是纯软件设备。由于网络设备不是面向流的,无法映射到文件系统的节点,因此无法像字符设备一样通过read,write方式来和系统通信,内核中有一套也数据包传输相关的函数来通信
Stay hungry,Stay foolish!
荆轲刺秦王