这是查尔斯的第 1 篇文章
极简版本的Linux
Linus 一开始是开发Sinclair QL 的各种程序,直到发现有一个程序居然无法使用,于是他的操作系统的代码进行了反向的汇编,发现了操作系统的BUG,但是操作系统不可以修改。
后来,他遇到了一个书《操作系统:设计和实现》
在书里,Tanenbaum 实现了一个Unix的小型翻版,Minix.
丹尼斯·里奇和肯·汤普森真是天才,他们俩设计的Unix非常精妙,它仅仅用几个简单的系统调用(open, close, read, write, fork...)就可以完成非常复杂的任务。
在MINIX上我玩得很高兴,但是却没法通过电话线连到大学的电脑,因为它没有一个好用的终端仿真程序。
不过,我决定玩一把大的:我的终端仿真程序应该是个独立王国,不依赖于Minix, 一开机就可以运行!
从这里开始,Linux 开始走向了操作系统
BIOS:写好引导分区,写好实模式,保护模式,让程序在一些内存地址中跳来跳去。
键盘输入: 读取键盘的输入,显示到屏幕上;
调制解调器:读写调制解调器;
多任务处理机制:实现多任务,一个任务从“猫”里面读取数据,显示到屏幕上,另一个任务从键盘读取任务,然后写入猫/
下载任务:磁盘驱动程序和文件系统;
操作系统 = 开机能运行 + 管理键盘 + 猫 + 显示器 + 磁盘 + 支持多任务;
这个样子的系统离操作系统就很近了;
用户界面接口: shell:bash
Shell:bash 是一个业界通用的用户操作接口,bash 需要open, close, read,write 等基本的操作;
需要实现POSIX 系统调用
1991年8月,我决定公开我的操作系统 Linux 0.01版;
各种修修补补工作
Tanenbaum 教授是微内核的支持者,而Linux 采用的是宏内核;
Minix 限制了人们对他的修改和功能增强,Tanenbaum 说这是为了教学,防止过度复杂化;
而Linux 则完全开放;
《大教堂与集市》
-
好软件都源自解决开发者的切身之痛。
-
把用户当作开发伙伴,是快速改进代码和有效调试的不二法门。
-
早发布,常发布。并听取用户意见。
-
有这么多双眼睛看着,Bug无处可藏。
-
精巧的数据结构即使搭配笨拙的程序代码,也比精巧代码加笨拙结构的组合要强得多。
-
保持项目的简单性。设计达到完美的时候,不是无法再增加东西了,而是无法再减少东西了。