查看: 1625|回复: 0
打印 上一主题 下一主题

一起读源码

[复制链接]
跳转到指定楼层
沙发
发表于 2015-3-22 20:03:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

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

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表