linux device drivers 读书笔记(第一章)

前言

自己记录的读书笔记,按章节和小标题提取需要记忆的内容

设备驱动的角色

作为一个在软件和硬件之间的连接,将具体一个设备怎样提供功能所抽象,而使外部应用可以专注于一个设备提供了哪些功能.

将内核分类

进程管理

内核需要负责创建和销毁进程和处理它们和外部世界的连接.内核的进程管理实现了多进程的抽象.

内存管理

计算机内存是主要的资源,对于系统性能来说,其管理方法是至关重要的.内核在有限的内存资源中为所有进程都提供了虚拟地址空间.内核不同的部分和内存管理子系统通过一系列函数调用交互,从malloc/free到很多复杂的函数功能.

文件系统

内核在非结构化的硬件上采用了一种结构化的文件系统,使得在整个系统中,这种文件抽象被充分的使用.另外,linux还支持多种文件系统,也就是在物理介质上不同的数据组织方式.

设备控制

几乎任何系统操作最终都会映射到物理设备,除了处理器,内存和很少的其他一些,几乎所有设备控制操作都将由被指定的特定设备的代码所处理.这些代码就叫做设备驱动.内核必须嵌入进去,使得从键盘到磁盘的驱动都可以正常使用.

网络

网络必须被操作系统所管理,因为大多网络操作都不是进程指定的,输入的包是异步的事件.这些包必须被收集,确认,以及在进程关注它们之前被分配.系统需要负责在程序和网络接口之间传输数据包,而且必须根据网络活动控制程序的执行.另外,所有的路由和地址解析工作都在内核内部被实现

可载入模块

linux支持在运行时扩展内核的功能.这意味着可以在系统在运行的时候加入额外的功能.

每一个可以在运行时加入内核的代码称为模块,linux对于不同种类的模块提供了支持.通过使用insmod和rmmod可以动态的链接和取消一个模块.

设备和模块的种类

模块被分为一些种类,如字符模块(char module),块模块(block module)和网络模块(nework module) 将模块划分成多种种类不是严密的,程序员可以选择自己实现一个超大的模块,实现不同的多种驱动.然而号的选择是创建为每一个新的功能创建一个新的模块

字符设备

字符设备是可以作为一串字符来进入的设备,字符驱动负责实现这种行为.这样的驱动至少需要实现open,close,read和write系统调用.典型的有console和serial port(串口)如ttySO.字符设备通过文件系统的节点来进入,如/dev/tty1和/dev/lp0.

块设备

也是由文件节点来进入,是一个可以host一个文件系统的设备,其实在linux中,块设备和字符设备主要是在内核内部管理数据的方式不一样.块设备对于内核来说与字符设备有完全不同的一套接口.

网络接口

接口是一个硬件设备,但是也可以完全是一个软件设备,比如loopback接口.网络接口负责发送和接收网络包,由内核网络子系统驱动.网络接口不是一个面向流的设备,不能轻易被映射到文件系统,所以有独特的一套名字来进入它们,比如eth0.关于传输包的内核调用函数使用的并不是read和write.

以及一些其他设备

安全问题

(写了一些相关内容,似乎没有什么太多需要注意的)

版本编号

linux的内核编号,偶数代表稳定版比如2.6.x,奇数代表开发版,如2.7.x

协议术语

(介绍了一些协议,似乎没有什么太多需要注意的)

加入内核开发者社区

(似乎没有什么太多需要注意的)

全书概览

(略)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值