一起读源码

来源:互联网 发布:淘宝网哪些宝贝好发布 编辑:程序博客网 时间:2024/05/01 09:10

需求:对现有的虚拟文件系统sysfsproc进行分析,搭建自己的文件系统用于安全审计。另外,借助于proc文件系统,对给定的进程进行保护。

参与人员:研究生以及对内核感兴趣的教师.

-----------------------------------------------------------------------------

“源码在前,了无秘密”,面对海量的源代码,从何着手?你的需求是什么,需求所涉及的知识体系有哪些?

  Unix/Linux操作系统设计中,最经典之处莫过于文件系统。从70年代设计之初,到如今30多年过去了,其可扩充性、健壮性、适应性依然优雅地泛着其光彩。其核心设计思想-“提供机制而不是策略”更是淋漓尽致得以体现。随便拿出一个文件系统(比如proc)的代码阅读,可以从代码级感受这种思想的灵活应用。

  阅读源代码,入口的路径在哪里?为什么面对代码时,你有一种茫然或者不知所措?

  回想一下knuth的经典公式:程序=算法+数据结构。

  在文件系统中,应当有哪些数据结构?或者说,按照面向对象的设计思想,一个文件系统中,其主要对象是什么?超级块(Superblock),索引节点(Inode),目录项(Dentry)和文件(file)是四个主要的对象,对其数据结构的细致理解和分析是驾驭文件系统代码的必要条件。其具体含义以及数据结构之间的关系详见《Linux操作系统原理与应用》一书第八章“VFS中的数据结构”一节的内容。

   初次接触这些数据结构,也有混沌的感觉。可是大家一起阅读代码,各人可以发挥自己的优势。在各种疑惑和对代码的一次次深入中,不同人所知道的知识点不断的拼凑起来,一个个的知识孤岛在讨论中衔接在一起,逐步形成一个可触及的解惑片段。因为疑惑的逐步解开,就有一种探究后的满足和继续追究下去的愿望,在此过程中,一边欣赏着编码者灵感的再现,一边感叹着设计者的匠心独运,有时候,更大的困惑又在心头升起

 

 

 

 

 

 

原创粉丝点击