电子科技大学:《Linux操作系统内核技术 The Linux Kernel Technology》课程教学资源(课件讲稿)第二讲 程序员技术手段

第二讲程序员技术手段 李 林 电子科技大学计算机学院
第二讲 程序员技术手段 李 林 电子科技大学 计算机学院

第二讲程序员技术手段 内核学习方法 。内核模块模型 修改内核源码 kgdb 阅读内核源码
第二讲 程序员技术手段 ◼ 内核学习方法 ◼ 内核模块模型 ◼ 修改内核源码 ◼ kgdb ◼ 阅读内核源码

第二讲程序员技术手段 内核学习方法 。内核模块模型 修改内核源码 kgdb 阅读内核源码
第二讲 程序员技术手段 ◼ 内核学习方法 ◼ 内核模块模型 ◼ 修改内核源码 ◼ kgdb ◼ 阅读内核源码

内核学习方法 本课程的目的不仅仅是了解Linux内核的基 本原理和结构特征 更重要的是掌握如何探索这些原理和特征的 方法 内核不断在进步,当前内核版本已经是5.6 而大部分内核书籍还是2.6.*,非常落后 开发环境是4.*.*,又当如何?
内核学习方法 ◼ 本课程的目的不仅仅是了解Linux内核的基 本原理和结构特征 ◼ 更重要的是掌握如何探索这些原理和特征的 方法 ◼ 内核不断在进步,当前内核版本已经是5.6 ◼ 而大部分内核书籍还是2.6.*,非常落后 ◼ 开发环境是4.*.*,又当如何?

内核学习方法 达到上述日的的方法:程序员手段 动手:利用程序员的手段,来了解、理解、掌 握Linux内核基本原理和关键技术 千万不能只看书 程序员手段 编写内核模块 驱动程序,站在内核使用者的角度,感性认识内核 了解内核的编程接口、关键数据结构 比如kmalloc、四级页表结构
内核学习方法 ◼ 达到上述目的的方法:程序员手段 ◼ 动手:利用程序员的手段,来了解、理解、掌 握Linux内核基本原理和关键技术 ◼ 千万不能只看书 ◼ 程序员手段 ◼ 编写内核模块 ◼ 驱动程序,站在内核使用者的角度,感性认识内核 ◼ 了解内核的编程接口、关键数据结构 ◼ 比如kmalloc、四级页表结构

内核学习方法 程序员手段 ·编写内核模块 ·调试内核及内核模块 帮助理解内核的内部处理流程、关键数据结构 比如sys clone的处理流程 阅读内核源码 修改内核源码 为内核增加新功能,验证新方法 比如增加新的系统调用,测试新的调度算法 汇编与反汇编 内核与体系结构关系密切,比如GDTR、CR3、int3
内核学习方法 ◼ 程序员手段 ◼ 编写内核模块 ◼ 调试内核及内核模块 ◼ 帮助理解内核的内部处理流程、关键数据结构 ◼ 比如sys_clone的处理流程 ◼ 阅读内核源码 ◼ 修改内核源码 ◼ 为内核增加新功能,验证新方法 ◼ 比如增加新的系统调用,测试新的调度算法 ◼ 汇编与反汇编 ◼ 内核与体系结构关系密切,比如GDTR、CR3、int 3

内核实证的好处 敢动手 对内核有感性认识,而不仅仅是背诵原理,今 后相关项目中上手快 破除误解 学了等于没学,内核知识感觉没什么用处 刺激学习 内核知识 体系结构 编译、链接、调试 黄
内核实证的好处 ◼ 敢动手 ◼ 对内核有感性认识,而不仅仅是背诵原理,今 后相关项目中上手快 ◼ 破除误解 ◼ 学了等于没学,内核知识感觉没什么用处 ◼ 刺激学习 ◼ 内核知识 ◼ 体系结构 ◼ 编译、链接、调试

第二讲程序员技术手段 内核学习方法 。内核模块模型 修改内核源码 kgdb 阅读内核源码
第二讲 程序员技术手段 ◼ 内核学习方法 ◼ 内核模块模型 ◼ 修改内核源码 ◼ kgdb ◼ 阅读内核源码

内核模块模型 驱动和一般应用程序的执行方式很大不同 一般应用由main函数开始执行,流程基本由程 序自身控制 驱动程序没有main函数,由回调方式驱动运行 回调方式: 先向内核注册函数,然后应用程序触发这些函 数的执行 例如:驱动程序在初始化时,向内核注册处理 某个设备写操作的函数 当应用程序使用write系统调用写该设备时,内 核就会调用注册的上述函数
内核模块模型 ◼ 驱动和一般应用程序的执行方式很大不同 ◼ 一般应用由main函数开始执行,流程基本由程 序自身控制 ◼ 驱动程序没有main函数,由回调方式驱动运行 ◼ 回调方式: ◼ 先向内核注册函数,然后应用程序触发这些函 数的执行 ◼ 例如:驱动程序在初始化时,向内核注册处理 某个设备写操作的函数 ◼ 当应用程序使用write系统调用写该设备时,内 核就会调用注册的上述函数

内核模块常见的回调函数(代码2.1) DriverInitialize 驱动初始化函数,通过宏静态注册 #insmod PrintModule.ko,安装驱动并触发该 函数,通常会创建设备对象 DriverUninitialize 驱动销毁函数,通过宏静态注册 #rmmod PrintModule,卸载驱动并触发该函数 DriverOpen 打开设备函数,动态注册 应用调用open函数打开设备对象时,会触发该 函数
内核模块常见的回调函数(代码2.1) ◼ DriverInitialize ◼ 驱动初始化函数,通过宏静态注册 ◼ #insmod PrintModule.ko,安装驱动并触发该 函数,通常会创建设备对象 ◼ DriverUninitialize ◼ 驱动销毁函数,通过宏静态注册 ◼ #rmmod PrintModule,卸载驱动并触发该函数 ◼ DriverOpen ◼ 打开设备函数,动态注册 ◼ 应用调用open函数打开设备对象时,会触发该 函数
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 电子科技大学:《Linux操作系统内核技术 The Linux Kernel Technology》课程教学资源(课件讲稿)第一讲 课程概述(李林).pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第9章 Markov马尔科夫分类.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第8章 特征提取与降维.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第7章 非监督分类.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第6章 深度神经网络.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第5章 支持向量机.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第4章 回归分类.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第3章 统计分类.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第2章 数值最优化介绍.pdf
- 电子科技大学:《机器学习 Machine Learning》课程教学资源(课件讲稿)第1章 机器学习介绍(师君).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)09 CDN内容分发网络.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)11 社会计算(二).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)11 社会计算(一).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)10 物联网.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)08 域名系统.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)07 P2P网络(二)Distributed Hash Table.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)06 P2P网络(一).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)05 云计算(三)数据一致性理论.pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)04 云计算(二).pdf
- 电子科技大学:《网络计算模式 Network Computing Paradigm》课程教学资源(课件讲稿)03 云计算(一).pdf
- 电子科技大学:《Linux操作系统内核技术 The Linux Kernel Technology》课程教学资源(课件讲稿)第三讲 指针存储之谜.pdf
- 电子科技大学:《Linux操作系统内核技术 The Linux Kernel Technology》课程教学资源(课件讲稿)第四讲 内核模块不可调试之谜.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 01 面向对象软件开发概述.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 10 Java 高级编程.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 02 Java 概述.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 03 Java 编程入门.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 03 Java 编程入门.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 04 Java 语言基础.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 05 Java 类.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 05 Java 类.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 06 继承与多态.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 07 Java 工具类.pdf
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 08 数据结构与算法.ppt
- 南京大学:《Java语言程序设计 Programming in Java》课程教学资源(教案讲义)Lecture 09 图形用户界面的设计与实现.ppt
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)01 Introduction(戴海鹏).pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)02 Security Principles.pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)03 Symmetric Key Cryptography.pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)04 Advanced Encryption Standard(AES).pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)05 Asymmetric Key Cryptography.pdf
- 南京大学:《网络安全与入侵检测 Network Security and Intrusion Detection》课程教学资源(课件讲稿)06 Number Theory.pdf