您的位置:首页 > 其它

浅谈切入内核学习的方法 - 从块设备驱动入手

2014-01-03 22:45 239 查看
接着“内核修炼一”我们开始真正的内核技术实战学习,个人觉得内核学习从实战入手,直接参与内核代码开发,实战是最好的,否则会长期停留在理论学习的抽象边界上,最近也持续思考,并与北邮的部分学生进行交流,根据这么多年积累的项目经验总结了一下,我们从块设备驱动入手进行内核学习,这里我们从此会反复强调IO的概念,这也是存储技术的核心概念。

我们再看一下操作系统应用层/内核层的架构图,看一下块设备驱动在内核栈中的位置。



如上图架构所示,此次开设的系列课程我们将专注于内核通用块设备层的实战开发,这是必备的内核核心技能,在后续开设的系列二课程中会在系列一内核实战的基础上,深度进行内核修炼实战,加深理解并实战内核机制。

IO是内核或者操作系统重要的功能之一,在应用层运行的软件程序最终的操作都要归类于文件的数据读写,那么IO是如何处理的,这一块是学习操作系统最核心的知识。我们在第一章正式介绍块设备学习时还会提,这也是我们本次系列课程写代码的内核位置,通过写过滤块设备驱动,大家首先从系统IO路径上就可以看到过滤块设备驱动所处的位置,对上它要承载文件系统,对下它要面对具体底层设备驱动,由此我们开启了学习内核各个模块的关键之路,学好块设备驱动,对上可以继续切入文件系统,对下可以是网络或者SCSI。通过从块设备入手,我们将更快的接触到锁,并发控制,信号量,进程等很多内核编程基础知识,这样才能逐步提高内核的理解,因为内核代码毕竟不像应用程序,它的函数啥时候被调用到,依赖于整个内核的运行机理,通过块设备,我们就会很形象的知道读写请求是如何处理的,至于内存管理,进程调度,中断都是内核的一些基础设施,我们需要的是充分理解工作原理,能够熟练的实战运用,鼓励大家逐渐往深里面跟进具体的实现原理,这样更能把握操作系统设计的精髓。

从第一章开始我们通过向大家展示如何用170行内核代码构建一个真实的过滤块设备驱动,并通过实际的trace跟踪设备驱动与操作系统的交互细节,生动形象的将大家快速带入内核开发的世界。从第二章开始进行内核机制API的实战,把进程,并发,锁机制迅速实践起来,充分的在实际代码中进行内核技术的理解和使用,为后续大家能够逐渐具备阅读内核代码能力打下实战基础。最后我们会进行内核调试技术的实战学习,介绍列举内核调试技术,并让大家实际动手并实战调试技巧。

在项目开发环节中我们会拿出TaLK工作室实际开发的一款代码架构较好的fbdkmod过滤驱动,进行架构分析,然后布置项目内容,进行实战开发训练。

进入实战吧,真正的挑战要开始了。

P.S.: 附一下内核修炼一、二的技术内容列表,以及修炼二的详细分享计划,供广大同仁查阅。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: