发展与复杂性
随着 linux 内核和 linux 应用程序茁壮发展, 系统规模变得越来越大, 复杂程度不断提高. 有经验的内核开发者对内核特性还能了如指掌, 但是这么庞大的系统让新人几乎无法理解, 难以跟上 linux 内核的发展步伐. 这种青黄不接的现象可能会造成内核质量上的极大隐患.
解决上述问题的一个方法就是保持代码简洁, 规范接口定义, 变量合理命名, 单一职责原则, 合适的方法行数等等. 最重要的还有注释, 良好的注释应该写方法功能, 明前置条件, 参数含义, 返回值条件以及异常信息.
注释又被成为意图, 识别意图和实现之间的差异的工作称为调试. 如果一个方法意图不明确, 不但调试工作难以进行, 读者更无法理解.
不过即便有良好的注释, 也没有办法说清楚内核的各个子系统的细全景, 说明他们到底做什么. 这个时候最佳的选择就是编写一份说明文档, 最好配上一些易于理解的图片.
设计
linux 在设计上遵守简单至上的原则, 将所有的东西都当做文件来对待. 这种数据结构得以简化系统复杂性, 对数据的才做和对设备的操作都使用同一套接口: open(),read(),write(),lseek() 和 close().
linux 内核和相关系统工具都采用 c 语言编写, linux 可以方便的创建新进程, 且有一个非常独特的 fork() 系统调用.
linux 提供了一套非常简单, 稳定的操作系统通信原语, 快速简洁的进程创建过程使 linux 程序把目标放在 保证质量的完成任务 上. 而简单稳定的进程间通信机制又可以保证这些单一目的的简单程序可以方便地组合在一起, 去解决现实中复杂的问题.
正是归功于这种策略和机制分离的概念, linux 系统才具有清晰的层次化结构.
基于 UNIX, 今天 linux 已经发展成为一个支持抢占式多任务, 多线程, 虚拟内存, 换页, 动态链接和 TCP/IP 网络的现代化操作系统.
版权
Linux Torvalds 在大学期间本来是热衷于 Minux(用于教学的廉价 UNIX), 不过由于版权限制他不能轻易修改或发布该系统的源代码, 也不能对 Minix 开发者所做出的设计轻举妄动, 这些事让 Torvalds 觉得心里很是不舒服.
生机勃勃的大学生 Torvalds 决心开发自己的操作系统来改变这种让人不舒服的版权, 经过一年的研发和不断改善, Torvalds 就有了虽不成熟稳定但功能俱全的 "UNIX", 并且将这个系统源码发布于社区中.
linux 成功的最重要的因素是开源系统吸引了很多开发者, 黑客对其源码进行修改和完善. 正是因为开源的版权许可, linux 迅速成为了多人合作的项目. linux 虽然借鉴了 UNIX, 但它并不是 UNIX.linux 虽然借鉴了 UNIX 的许多设计, 并实现了 UNIX 的 Oosix 标准和 Single UNIX Specification 定义的 API, 但 linux 并没有直接使用 UNIX 源码.
linux 是一个非商业化的自由软件产品, 开源和自由助力 linux 迅速发展, 茁壮成长. 不过 linux 也不是完全自由的, 它使用的协议规定: 任何人都可以自由的获取并修改内核代码, 但如果你想发布修改后的内核, 同时需要向其它人公开你修改后的内核源代码.
引用
本文的写作和学习中参考了以下资料
1.Linux Kenel Development ~ Thrid Edition
来源: http://www.jianshu.com/p/d4db9249052d