1.1 Linux 是什么
Linux 可以在 计算机上运行,所以 Linux 是软件,但问题是:
关键词:『硬件资源』 『操作系统』 『硬件架构』 『软件移植』 『可移植性』
操作系统除了有效 控制硬件资源的分配,并 提供计算机运行所需要的功能(如网络功能)之外,为了给程序员提供更容易开发软件的环境,所以也会 提供一整组系统调用接口 来给程序员开发用
Linux 是一个操作系统,对应下图内核和系统调用的两层;Linux 不是应用程序
早期的 Linux 是针对 386 的计算机来开发的(驱动 386 所有的硬件),由于只是一个操作系统,不含有其他应用程序,因此下载安装了 Linux 内核后只能运行计算机而不能实现其他功能。想要实现自己的需求就要安装软件,但那时 Linux 支持的软件还很少
由于不同硬件的功能函数不同,所以同一个操作系统无法在不同硬件平台上运行。参考硬件工函数并以此修改 OS 程序代码,经过改版后的操作系统就能在另一个硬件平台上运行,这个过程被称为『软件移植』
2006 年以前苹果使用 IBM 的 PowerPC CPU 硬件架构,并在此硬件架构基础上发展出了自家的操作系统(Mac OS),Windows 基于 x86 硬件架构,因此 Windows 无法安装到 Mac 计算机;但在 2006 年以后,苹果计算机开始使用 Inter 硬件架构,转为 x86 系统,可以安装 Windows 操作系统
Linux 的可移植性:
每种操作系统都是在它专门的硬件架构上运行的,这点需要先了解。比如 Windows 本来就是针对 x86 设计的,当然只能运行在 x86 架构的计算机上,但 Linux 由于是开源的,其程序代码可以被修改成适合在各种硬件架构上运行,也就是说,Linux 具有『可移植性』
Linux 提供了一个操作系统中最底层的硬件控制与资源管理的完整架构,这个架构继承了 UNIX 的良好传统,所以相当的稳定且功能强大,并且该架构可以在个人 PC(x86 系统)上运行,因此吸引了很多软件开发者,使得 Linux 操作系统有了很多应用软件。虽然 Linux 只是其内核与内核提供的工具,但正是整合了这些软件,才让 Linux 成为了一个完整强大的 OS
1.1.2 Linux 之前,UNIX 的历史
关键词:『Unics』 『UNIX』 『Minix』 『GNU』
Linux 的内核是由 Linus·Torvalds(林纳斯·托瓦兹) 在 1991 年编写的,其前身是 UNIX
历史脉络:
- 1969 年以前
- 批处理操作系统
- 输入设备只有读卡机
- 输出设备只有打印机,用户也无法与 OS 互动
- 兼容分时系统
- 主机与终端
- 主机具有计算功能,可将结果输出到终端
- 终端不具备计算功能,只有输入/输出功能
- Bell、MIT 与 GE(通用电气公司)的 Multics 系统
- 让大型主机可以实现 300 个以上的终端用于联机
- 1969 年左右进度赶不上计划、资金短缺,Bell 退出该计划
- 最后被成功开发出,但没有受到很大重视,不过 培养出来的人才都很牛
- 批处理操作系统
- 1969年:
- Ken·Thompson(肯·汤普森) 的小型 file server system
- 贝尔实验室的 Ken·Thompson 用 Assembly language(汇编语言)写出了一组内核程序,同时包括一些内核工具程序,以及一个小型文件系统,这就是 UNIX 的原型
- 这个系统有两个重要概念:
- 所有的程序或系统设备都是文件
- 不管程序本身还是附属文件,所写的程序有且只有一个目的,且要有效地完成目标
- 这个内核被 Ken·Thompson 的同事戏称为 Unics(Multics 的简化版)
- Ken·Thompson 会写这个 Unics 内核程序,是为了移植『太空旅游』的游戏
- Ken·Thompson(肯·汤普森) 的小型 file server system
- 1973 年:
- Dennis·Ritchie(丹尼斯·里奇) 等人用 C 写出第一个正式 UNIX 内核
- Unics 非常好用广为流传,但由于汇编语言具有专一性,加之当时计算机架构差别很大,导致每次安装到不同机器都要重写汇编程序
- 后来 Dennis·Ritchie 将性能较差的 B 改写为 C,用 C 改写了 Unics ,最后命名并发行了 UNIX 的正式版本
- C 较之汇编语言与硬件的相关性较低,这也使得 UNIX 很容易被移植到不同机器上
- Dennis·Ritchie(丹尼斯·里奇) 等人用 C 写出第一个正式 UNIX 内核
- 1977 年
- 重要的 UNIX 分支 —— BSD
- 伯克利大学的 Bill·Joy(比尔·乔伊) 在取得 UNIX 内核源代码后,修改成适合自己机器的版本并添加了很多工具软件和编译器,最终将其命名为 Berkeley Software Distribution(BSD)
- BSD 是 UNIX 的一个重要分支,Bill·Joy 也是 UNIX 行业 Sun Microsystem(太阳微系统)的创始人
- Sun 公司即是以 BSD 版本内核进行自己的商业 UNIX 版本的开发,后来可以安装在 x86 上的 FreeBSD 即是 BSD 改版的
- 重要的 UNIX 分支 —— BSD
- 1979 年
- 重要的 System V 架构与版权声明
- 由于 UNIX 的高可移植性以及当时没有版权纠纷,很多商业公司都开始结合自家主机改写 UNIX,如 AT&T 自家的 System V、IBM 的 AIX 以及 HP 与 DEC 等
- 和兼容分时系统一样,UNIX 强调多用户多任务的环境,但早期 286 个人计算机架构下的 CPU 没有能力处理多任务,因此没有人对移植 UNIX 到 x86 感兴趣,于是早先的 UNIX 只能与服务器或大型工作站挂钩
- 但之后 AT&T 推出了 System V 第七版 UNIX,这一班重要的特色是支持 x86 架构的个人计算机,即 System V 可以在个人计算机上安装与运行
- 出于商业考量,以及当时的现实环境,AT&T 将 UNIX 的版权收了回去,特别提到了『不可对学生提供源代码』的严格限制
- 重要的 System V 架构与版权声明
- 1984 年之一:
- x86 架构的 Minix 操作系统开始编写并于两年后诞生
- 版权声明,受影响最大的就是讲内核的教师
- Andrew·S·Tanenbaum(安德鲁·S·塔南鲍姆) 教授联想到 System V 第七版 UNIX,自己动手写了 Minix 这个 UNIX-like 的内核程序,并且能与 UNIX 兼容
- 为避免版权纠纷,Andrew·S·Tanenbaum 编写 Minix 时完全不参照 UNIX 的源代码
- Minix 不完全免费且无法在网上下载,必须购买磁盘/磁带,但会有附带的 Minix 源代码
- Andrew·S·Tanenbaum 始终认为 Minix 主要用于教学,对 Minix 点到为止,因此无法满足用户更多的需求
- x86 架构的 Minix 操作系统开始编写并于两年后诞生
- 1984 年之二:GNU 计划与 FSF 基金会的成立
Richard·Mathew·Stallman(理查德·马修·斯托曼) 于 1984 年发起,目前大多数自由软件或开源软件都直接或间接受益于该计划
