Linux Kernel学习笔记

Linux Kernel学习笔记

ID:37201076

大小:186.50 KB

页数:24页

时间:2019-05-19

Linux Kernel学习笔记_第1页
Linux Kernel学习笔记_第2页
Linux Kernel学习笔记_第3页
Linux Kernel学习笔记_第4页
Linux Kernel学习笔记_第5页
资源描述:

《Linux Kernel学习笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、LinuxKernel学习笔记TableofContents1.存储器寻址2.设备驱动程序开发3.字符设备驱动程序3.1.设备号3.2.设备号的分配和释放3.3.重要的数据结构3.4.读和写4.PCI设备5.内核初始化优化宏6.访问内核参数的接口7.内核初始化选项8.内核模块编程8.1.入门8.2.为模块添加描述信息8.3.内核模块处理命令介绍9.网络子系统9.1.sk_buff结构9.2.sk_buff结构操作函数9.3.net_device结构9.4.网络设备初始化9.5.网络设备与内核的沟通方式9.6.网络设备操作层的初始化9.7.内核

2、模块加载器9.8.虚拟设备9.9.8139too.c源码分析9.10.内核网络数据流10.备忘录Chapter 1. 存储器寻址在80x86微处理器中,有三种存储器地址:·逻辑地址(logicaladdress),包含在机器语言指令中用来指定一个操作数或一条指令的地址。每个逻辑地址都由一个段(segment)和一个偏移量(offset)组成。偏移量指明了从段的开始到实际地址之间的距离。·线性地址(linearaddress)(也称为虚拟地址,virtualaddress),它是一个32位无符号整数,可用以表达高达4G的地址(2的32次方)。通

3、常以十六进制数表示,值的范围从0X00000000到0Xffffffff。·物理地址(physicaladdress),用于存储器芯片级存储单元寻址,它们与从微处理器的地址引脚发送到存储器总线上的电信号相对应。物理地址由32位无符号整数表示。CPU控制单元通过一种称为分段单元(segmentationunit)的硬件电路把一个逻辑地址转换成线性地址;线性地址又通过一个分页单元(pagingunit)的硬件电路把一个线性地址转换成物理地址。逻辑地址由两部份组成,一个段标识符和一个指定段由相对地址的偏移量。段标识符是一个16位长的字段,称为段选择

4、符(segmentselector),偏移量是一个32位长的字段。处理器提供专门的段寄存器以快速处理段选择符,段寄存器的唯一目的就是存放段选择符。共有6个段寄存器,分别是cs、ss、ds、es、fs和gs。其中cs、ss、ds寄存器有专门的用途。·cs是代码段寄存器,指向包含程序指令的段。·ss是栈寄存器,指向包含当前程序栈的段。·ds是数据段寄存器,指向包含静态数据或者外部数据的段。cs寄存器有一个重要功能,它包含有一个两位的字段,用以指明CPU当前特权级别(CurrentPrivilegeLevel,CPL)。值0表示最高优先级,值3表示

5、最低优先级。Linux只用到0级和3级,分别表示内核态和用户态。每个段由一个8字节的段描述符表示,它描述了段的特征。段描述符放在全局描述符表(GlobalDescriptorTable,GDT)中或局部描述符表(LocalDescriptorTable,LDT)中。段描述符的组成:·32位的Base字段,含有段的第一个字节的线性地址。·粒度标记G。如果该位清0,则段大小以字节为单位,否则以4096字节的倍数计。·20位的Limit字段指定段的长度(以字节为单位,Limit字段为0的段被认为是空段)。当G为0时,段的大小在1字节到1MB之间;否

6、则段的大小在4KB到4GB之间。·系统标记S。如果它被清0,则这是一个系统段,用于存储内核数据结构,否则,它是一个普通的代码段或数据段。·4位Type字段,描述段的类型和它的访问权限。常用的Type有以下几种:o代码段描述符o数据段描述符o任务状态段描述符o局部描述符表描述符···Chapter 2. 设备驱动程序开发在编程思路上,机制表示需要提供什么功能,策略表示如何使用这些功能。区分机制和策略是UNIX设计最重要和最好的思想之一。如X系统就由X服务器和X客户端组成。X服务器实现机制,负责操作硬件,给用户程序提供一个统一的接口。而X客户端实

7、现策略,负责如何使用X服务器提供的功能。设备驱动程序也是机制与策略分离的典型应用。在编写硬件驱动程序时,不要强加任何特定的策略。Linux系统将设备分成三种类型,分别是字符设备、块设备和网络接口设备。在linux中通过设备文件访问硬件,设备文件位于/dev目录下。设备文件是一种信息文件,普通文件的目的在于存储数据,设备文件的目的在于向内核提供控制硬件的设备驱动程序的信息。设备文件保存了多种信息,其中重要的有设备类型信息,主设备号(major),次设备号(minor)。主设备号与次设备号起到连接应用程序和设备驱动程序的作用。当应用程序利用ope

8、n()函数打开设备文件时,内核从相应的设备文件中得到主设备号,从而查找到相应的设备驱动程序,由次设备号查找实际设备。所以主设备号对应设备驱动程序,次设备号对应由该驱

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。