- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux Kernel学习笔记
Linux Kernel学习笔记
Table of Contents
1. 存储器寻址
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. 内核模块加载器
9.8. 虚拟设备
9.9. 8139too.c源码分析
9.10. 内核网络数据流
10. 备忘录
Chapter?1.?存储器寻址
在80x86微处理器中,有三种存储器地址:
逻辑地址(logical address),包含在机器语言指令中用来指定一个操作数或一条指令的地址。每个逻辑地址都由一个段(segment)和一个偏移量(offset)组成。偏移量指明了从段的开始到实际地址之间的距离。
线性地址(linear address)(也称为虚拟地址,virtual address),它是一个32位无符号整数,可用以表达高达4G的地址(2的32次方)。通常以十六进制数表示,值的范围从00Xffffffff。
物理地址(physical address),用于存储器芯片级存储单元寻址,它们与从微处理器的地址引脚发送到存储器总线上的电信号相对应。物理地址由32位无符号整数表示。
CPU控制单元通过一种称为分段单元(segmentation unit)的硬件电路把一个逻辑地址转换成线性地址;线性地址又通过一个分页单元(paging unit)的硬件电路把一个线性地址转换成物理地址。
逻辑地址由两部份组成,一个段标识符和一个指定段由相对地址的偏移量。段标识符是一个16位长的字段,称为段选择符(segment selector),偏移量是一个32位长的字段。
处理器提供专门的段寄存器以快速处理段选择符,段寄存器的唯一目的就是存放段选择符。共有6个段寄存器,分别是cs、ss、ds、es、fs和gs。其中cs、ss、ds寄存器有专门的用途。
cs是代码段寄存器,指向包含程序指令的段。
ss是栈寄存器,指向包含当前程序栈的段。
ds是数据段寄存器,指向包含静态数据或者外部数据的段。
cs寄存器有一个重要功能,它包含有一个两位的字段,用以指明CPU当前特权级别(Current Privilege Level,CPL)。值0表示最高优先级,值3表示最低优先级。Linux只用到0级和3级,分别表示内核态和用户态。
每个段由一个8字节的段描述符表示,它描述了段的特征。段描述符放在全局描述符表(Global Descriptor Table,GDT)中或局部描述符表(Local Descriptor Table,LDT)中。
段描述符的组成:
32位的Base字段,含有段的第一个字节的线性地址。
粒度标记G。如果该位清0,则段大小以字节为单位,否则以4096字节的倍数计。
20位的Limit字段指定段的长度(以字节为单位,Limit字段为0的段被认为是空段)。当G为0时,段的大小在1字节到1MB之间;否则段的大小在4KB到4GB之间。
系统标记S。如果它被清0,则这是一个系统段,用于存储内核数据结构,否则,它是一个普通的代码段或数据段。
4位Type字段,描述段的类型和它的访问权限。常用的Type有以下几种:
代码段描述符
数据段描述符
任务状态段描述符
局部描述符表描述符
Chapter?2.?设备驱动程序开发
在编程思路上,机制表示需要提供什么功能,策略表示如何使用这些功能。区分机制和策略是UNIX设计最重要和最好的思想之一。如X系统就由X服务器和X客户端组成。X服务器实现机制,负责操作硬件,给用户程序提供一个统一的接口。而X客户端实现策略,负责如何使用X服务器提供的功能。设备驱动程序也是机制与策略分离的典型应用。在编写硬件驱动程序时,不要强加任何特定的策略。
Linux系统将设备分成三种类型,分别是字符设备、块设备和网络接口设备。
在linux中通过设备文件访问硬件,设备文件位于/dev目录下。设备文件是一种信息文件,普通文件的目的在于存储数据,设备文件的目的在于向内核提供控制硬件的设备驱动程序的信息。设备文件保存了多种信息,其中重要的有设备类型信息,主设备号(major),次设备号(minor)。主设备号与次设备号起到连接应用程序
您可能关注的文档
- C语言教学 第5章.ppt
- C语言教学 第4章.ppt
- C语言教程第2次实验内容(数据类型与表达式).ppt
- C语言教学 第11章.ppt
- C语言教程三种基本结构程序设计小结.ppt
- C语言教程第3次实验内容(顺序结构).ppt
- C语言教程第1次实验熟悉C语言开发环境.ppt
- C语言模拟题11-用户标识符的作用域和存储类.doc
- C语言教程第5周实验内容(顺序结构).ppt
- C语言模拟题15-文件.doc
- 2024_2025学年新教材高中化学第二章化学反应速率与化学平衡1.1化学反应速率作业含解析新人教版选择性必修1.doc
- 2024_2025学年新教材高中政治第一课社会主义从空想到科学从理论到实践的发展第二框科学社会主义的理论与实践练习含解析新人教版必修1.doc
- 2024_2025学年高中物理第7章机械能守恒定律6实验:探究功与速度变化的关系学案新人教版必修2.doc
- 2024_2025学年高中政治第二单元生产劳动与经营第六课投资理财的选择练习含解析新人教版必修1.doc
- 2024_2025学年高中生物专题2细胞工程2.1动物细胞培养和核移植技术精练含解析新人教版选修3.doc
- 2024_2025学年新教材高中语文第5单元抱负与使命群文阅读四抱负与使命教案新人教版必修下册.doc
- 2024_2025学年新教材高中政治第二单元经济发展与社会进步第四课我国的个人收入分配与社会保障第一框我国的个人收入分配练习含解析新人教版必修2.doc
- 江苏省2024高考历史一轮教师用书第一单元第2讲秦中央集权制度的形成含解析.docx
- 天津市南开区南大奥宇培训学校2025届高三语文每日小练8.doc
- 2024_2025学年高中生物第4章人与环境第2节生物多样性及其保护教案新人教版选择性必修第二册.doc
最近下载
- 在线网课学习课堂《学术英语(华理 )》单元测试考核答案.pdf
- GB∕T 9755-2014_合成树脂乳液外墙涂料.pdf
- AQ-T 3033-2022 化工建设项目安全设计管理导则.docx
- 世界洋流空白图.doc VIP
- 水利行业廉政风险防控手册(试行) 工程建设管理分册.pdf VIP
- 2023年江苏二建继续教育(机电工程)题库(含答案).pdf VIP
- 2024年上海银行股份有限公司校园招聘考试试题带答案.docx
- 山东师范大学《文学理论专题》期末考试复习题及参考答案.doc
- IEEE 1188-2005推荐用于站用阀控铅酸蓄电池的维护、测试和更换方法.pptx VIP
- 2024年时事政治点题库选择题300道精品(完整版).docx
文档评论(0)