Linux内核开发与性能调试
Jack Zhang 查看讲师
百林哲咨询(北京)有限公司专家团队成员
业内资深工程师、内核调试专家,调试网站(ADVDBG.ORG)创始人。从事软件开发和研究工作,对IA-32 架构、操作系统内核、驱动程序、尤其是软件调试有较深入研究。
浏览:7995次
详情 DETAILS

课程简介

调试是软件开发过程中一个重要环节,在 Linux 内核开发的过程中也不可避免地会面对如何调试内核的问题。但,Linux 系统的开发者出于保证内核代码正确性的考虑,不愿意在 Linux 内核源代码树中加入一个调试器。 一些监视内核代码和错误跟踪的技术,补丁程序应运而生,让系统功能完善强大。调试内核问题时,利用工具与方法跟踪内核执行情况。本次分享将从内核开发环境开发工具调试手段等多维度来让LINUX系统性能更加健硕

课程收益

1. 深入理解 Linux 操作系统的内核基础设施和核心机制;

2. 提升 Linux 平台的软件开发技能,包括开发内核模块和应用程序

3. 学习 Linux 平台上的调试工具和调试典型问题的方法

4. 学习开发驱动程序必须的硬件基础,熟悉常用的总线和设备。

受众人群

开发工程师、技术开发者

课程时长

2天(12H)

培训形式

讲解+真实案例演示+动手实验

分享提纲

课程主题

课程内容

第一部分:LINUX内核精要 (1.5小时)

1.Linux内核演进过程;

2.解析内核源代码树;

3.内核文档;

4.内核中的汇编代码;

5.重要的内核模块;

6.Linux各个发行版本及其特点的简要介绍;

7.Linux的特点及相对于Windows的优势与劣势;

8.学习Linux内核的方法

第二部分:LINUX进程管理 (1小时)

1.进程和地址空间;

2.虚拟内存原理;

3.Page Fault;

4.系统调用(vdso);

5.内核态的关键组件;

6.用户态的关键组件(libc);

7.关键的系统进程

第三部分:内核开发环境和工具(1.5小时)

1.Linux下的常用开发工具(gnu c/c++, make);

2.编辑及代码工具(vim,emacs,Eclipse);

3.调试工具(gdb, kgdb); 

4.高效率开发环境(putty + Source Insight);

5.makefile深度解析

第四部分:内核模块(1小时)

1.内核模块的结构;

2.module_init();

3.module_exit();

4.模块参数;

5.模块的描述信息(License,版本);

6.编写Makefile;

7.构建模块;

8.加载模块;

9.卸载;

10.检查模块所依赖的内核函数;

11.参见问题调试

试验一:修改和构建内核模块 0.5小时)

       自己动手用C语言编写一个内核模块,加载和测试

第五部分:LINUX文件系统(1小时)

1.“一切皆文件”;

2.文件系统架构,组成;

3.文件操作;

4.设备文件系统;

5.调试文件系统;

6.Linux文件系统下重要目录及文件(etc,proc,sys,dev,lib,include)

第六部分:LINUX设备模型(1小时)

1.字符设备,文件操作,read和write,ioctl,与应用程序通信;

2.设备文件系统;

3.poll和select;

4.阻塞型I/O;

5.块设备;

6.blk.h;

7.可移动设备;

8.可分区设备

第七部分:GDB和KDB/KGDB(1.5小时)

1.GDB简介,GDB版本,GDB的架构和工作原理

2.ptrace,命令类型,命令语法,常用命令,调试符号,DWARF,符号文件,ELF结构,readelf,寻找符号的方法,栈回溯(bt),软件断点、硬件断点,复杂的断点命令,控制线程;

3.KDB;

4.加载内核符号,/proc/kcore

第八部分:信号和异常处理(1小时)

1.UNIX中的信号;

2.信号处理;

3.信号一览,信号处理器,信号的分发和处理;

4.案例解析:segmentation fault

第九部分:LINUX调优基础与vTune工具(1.5小时)

1.困难性,性能目标示例,衡量性能的技术指标,测试性能的两种基本方法,Sampling,Instrumentation,典型的分析方法;

2.vTune:背景,版本历史,工作原理,主要功能,Hotspot分析,符号文件和符号文件设置,与Eclipse的集成,演示,指标解释

第十部分:调试内核PANIC(1 .5小时)

1.系统崩溃概览,系统PANIC的过程,包括产生call stack和寻找函数符号的方法,导致PANIC的常见原因,Panic输出信息逐项解析,真实案例演示; 

2.Core Dump简介,工作原理,产生过程,失败的原因,使用GDB分析Core dump,真实案例演示


企业服务热线:400-106-2080
电话:18519192882
投诉建议邮箱:venus@bailinzhe.com
合作邮箱:service@bailinzhe.com
总部地址:
北京市-丰台区-汽车博物馆东路6号3号楼1单元902-B73(园区)
全国客户服务中心:
天津市-南开区-桂苑路15号鑫茂集团鑫茂军民园1号楼A座802-803
公众号
百林哲咨询(北京)有限公司 京ICP备2022035414号-1