See Also: Linux
Linux History
技术上说Linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。
但我们常说的Linux,一般就是说Linux操作系统,内核反而叫做Linux_Kernel。
1. Linux的诞生
Refer to Unix#Unix-like_System_History类Unix系统的演化
See also: http://en.wikipedia.org/wiki/History_of_Linux
1.1. UNIX
UNIX操作系统(英语:UNIX),是美国AT&T公司贝尔实验室于1969年实现的操作系统。最早由肯·汤普逊(Ken Thompson),丹尼斯·里奇(Dennis Ritchie),道格拉斯·麦克罗伊(Douglas McIlroy),和乔伊·欧桑纳于1969年在AT&T贝尔实验室开发。于1971年首次发布,最初是完全用汇编语言编写,这是当时的一种普遍的做法。后来,在1973年用一个重要的开拓性的方法,Unix被丹尼斯·里奇用编程语言C(内核和I/O例外)重新编写。高级语言编写的操作系统具有的可用性,允许移植到不同的计算机平台更容易。
1.2. GNU
理查德·马修·斯托曼(Richard M. Stallman),GNU计划的创立者。
1983年,理查德·马修·斯托曼创立了GNU计划。这个计划有一个目标,是为了发展一个完全自由的类Unix操作系统。自1984年发起这个计划以来,在1985年,理查德·马修·斯托曼发起自由软件基金会并且在1989年撰写了GPL协议。1990年代早期,GNU开始大量的产生或收集各种系统所必备的组件,像是——库、编译器、调试工具、文本编辑器、网页服务器,以及一个Unix的用户界面(Unix shell)——但是像一些底层环境,如硬件驱动、守护进程运行内核(kernel)仍然不完整和陷于停顿,GNU计划中是在马赫微核(Mach microkernel)的架构之上开发系统内核,也就是所谓的GNU Hurd,但是这个基于Mach的设计异常复杂,发展进度则相对缓慢。林纳斯·托瓦兹曾说过如果GNU内核在1991年时可以用,他不会自己去写一个。
1.3. BSD
386BSD因为法律问题直到1992年还没有发布,NetBSD和FreeBSD是386BSD的后裔,早于Linux。林纳斯·托瓦兹曾说,当时如果有可用的386BSD,他就可能不会编写Linux。
1.4. MINIX
MINIX是一个轻量的小型类Unix操作系统,是为在计算机科学用作教学而设计的,作者是安德鲁·斯图尔特·塔能鲍姆。从第三版开始,MINIX是自由软件,而且被“严重的”重新设计。
1991年,芬兰人林纳斯·托瓦兹在赫尔辛基大学上学,对操作系统很好奇,并且对MINIX只允许在教育上使用很不满(其不允许任何商业使用),于是开始写他自己的操作系统,这就是后来的Linux内核。
由此可见,尽管 Linux 绝对是最流行的开源操作系统,但是相对于其他操作系统的漫长历史来说,Linux 的历史非常短暂。
2. Linux内核发展史
发行版本代码行数的变化:
3. 系统架构
基于Linux的系统是一个模块化的类Unix操作系统。Linux操作系统的大部分设计思想来源于20世纪70年代到80年代的Unix操作系统所创建的基本设计思想。Linux系统使用单内核,由Linux内核负责处理进程控制、网络,以及外围设备和文件系统的访问。在系统运行的时候,设备驱动程序要么与内核直接集成,要么以加载模块形式添加。
Linux具有设备独立性,它内核具有高度适应能力,从而给系统提供了更高级的功能。GNU用户界面组件是大多数Linux操作系统的重要组成部分,提供常用的C函数库,shell,还有许多常见的Unix实用工具,可以完成许多基本的操作系统任务。
已安装Linux操作系统包含的一些组件:
- 启动程序——例如GRUB或LILO。该程序在计算机开机启动的时候运行,并将Linux内核加载到内存中;
- init程序。init是由Linux内核创建的第一个进程,称为根进程,所有的系统进程都是它的子进程,即所有的进程都是通过init启动。init启动的进程如系统服务和登录提示(图形或终端模式的选择);
- 包含源代码的软件库,可以通过运行的进程。在Linux系统上使用ELF格式来执行文件,负责管理库使用的动态链接器是“ld-linux.so”。Linux系统上最常用的软件库是GNU C库
- 用户界面程序,如命令行shell或窗口环境