陈莉君 2010年01月05日 星期二 09:18 | 2950次浏览 | 28条评论
需求:对现有的虚拟文件系统 sysfs , proc 进行分析,搭建自己的文件系统用于安全审计。另外,借助于 proc 文件系统,对给定的进程进行保护。
参与人员:研究生以及对内核感兴趣的教师
----------------------------------------------------------------
“源码在前,了无秘密”,面对海量的源代码,从何着手?你的需求是什么,需求所涉及的知识体系有哪些?
在 Unix/Linux 操作系统设计中,最经典之处莫过于文件系统。从 70 年代设计之初,到如今 30 多年过去了,其可扩充性、健壮性、适应性依然优雅地泛着其光彩。其核心设计思想 - “提供机制而不是策略”更是淋漓尽致得以体现。随便拿出一个文件系统(比如 proc )的代码阅读,可以从代码级感受这种思想的灵活应用。
阅读源代码,入口的路径在哪里?为什么面对代码时,你有一种茫然或者不知所措?
回想一下 knuth的经典 公式:程序 = 算法 + 数据结构。
在文件系统中,应当有哪些数据结构?或者说,按照面向对象的设计思想,一个文件系统中,其主要对象是什么?超级块( Superblock ),索引节点( Inode ),目录项( Dentry )和文件(file)是四个主要的对象,对其数据结构的细致理解和分析是驾驭文件系统代码的必要条件。其具体含义以及数据结构之间的关系详见《 Linux 操作系统原理与应用》一书第八章“ VFS 中的数据结构”一节的内容。
初次接触这些数据结构,也有混沌的感觉。可是大家一起阅读代码,各人可以发挥自己的优势。在各种疑惑和对代码的一次次深入中,不同人所知道的知识点不断的拼凑起来,一个个的知识孤岛在讨论中衔接在一起,逐步形成一个可触及的解惑片段。因为疑惑的逐步解开,就有一种探究后的满足和继续追究下去的愿望,在此过程中,一边欣赏着编码者灵感的再现,一边感叹着设计者的匠心独运,有时候,更大的困惑又在心头升起 …
Zeuux © 2024
京ICP备05028076号
回复 孔建军 2010年01月20日 星期三 00:28
欢迎大家到时候参加!
可以现在这里讨论一下怎么举办这次活动!
回复 陈莉君 2010年01月20日 星期三 09:34
回复 谢伟 2010年01月21日 星期四 12:44