Lunix历史及如何学习

2022-11-14 11:35:29 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

1. Lunix是什么

1.1 Lunix是操作系统还是应用程序

Lunix是一套操作系统,它提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, 这个架构是沿袭Unix 良好的传统来的,所以相当的稳定而功能强大!Lunix具有核心和系统呼叫两层。Torvalds 先生在 1991 年写出 Linux 核心的时候,其实该核心仅能『驱动 386 所有的硬件』而已, 所谓的『让 386 计算机开始运作,并且等待用户指令输入』。

1.2 Lunix之前,Unix历史

1969 年以前:一个伟大的梦想–Bell,MIT 与 GE 的『Multics』系统

早期的计算机架构很难使用,除了指令周期并不快之外,操作接口也很麻烦! 因为那个时候的输入设备只有卡片 阅读机、输出设备只有打印机, 用户也无法与操作系统互动(批次型操作系统)。

后来可以使用键盘来进行信息的输入。不过,在一间学校里面,主机毕竟可能只有一部,如果多人等待使用,那怎么办?于是1960年代初期麻省理工学院(MIT)发展了所谓的: 『兼容分时系统(Compatible Time-Sharing System, CTSS)』, 它可以让大型主机透过提供数个终端机(terminal)以联机方式进入主机,同时利用主机的资源进行运算工作。兼容分时系统可以说是近代操作系统的始祖!它可以让多个使用者在某一段时间内分别使用 CPU 的资源, 感觉上你会觉得大家是同时使用该主机的资源!

为了更加强化大型主机的功能,以让主机的资源可以提供更多使用者来利用,在 1965 年前后,由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE, 或称为通用电器)共同发起了 Multics 的计划,Multics 计划的目的是想要让大型主机可达成提供 300 个以上的终端机联机使用的目标。不过,到了 1969 年前后,计划进度落后,资金也短缺,所以该计划虽然继续在研究,但贝尔实验室还是退出了该计划的研究工作。

1969 年:Ken Thompson 的小型 file server system

但是,贝尔研究室原本参与 Multics 计划的人员Ken Thompson (肯·汤普森),由于个人需要(想要移植一套名为『太空旅游』的游戏),希望开发一个小小的操作系统以提供自己的需求。在开发时,有一部DEC (Digital Equipment Corporation)公司推出的 PDP-7 刚好没人使用,于是他就准备针对这部主机进行操作系统核心程序的撰写。经过四个星期的奋斗,他终于以汇编语言(Assembler)写出了一组核心程序,同时包括一些核心工具程序, 以及一个小小的文件系统。那个系统就是 Unix 的原型! 当时 Thompson 将 Multics 庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为:Unics。

Thompson 的这个文件系统有两个重要的概念,些概念在后来对于 Linux 的发展有相当重要的影响。分别是:

  • 所有的程序或系统装置都是文件
  • 不管建构编辑器还是附属文件,所写的程序只有一个目的,且要有效的完成目标。

1973 年:Unix 的正式诞生,Ritchie 等人以 C 语言写出第一个正式 Unix 核心

Unics 本来是以汇编语言写成的,汇编语言具有专一性,加上当时的计算机机器架构都不太相同,因此每次要安装到不同的机器都得要重新编写汇编语言。后来 Thompson 与 Ritchie 合作想将 Unics 改以高阶程序语言来撰写。当时现成的高阶程序语言有 B语言。 但是由 B 语言所编译出来的核心效能不是很好。后来 Dennis Ritchie 将 B 语言重新改写成 C 语言,再以 C 语言重新改写与编译 Unics 的核心, 最后正名与发行出 Unix 的正式版本!

贝尔实验室是隶属于美国电信大厂 AT&T 公司的, AT&T 当时忙于其他商业活动,对于Unix 并不支持也不排斥。

1977 年:重要的 Unix 分支–BSD 的诞生

1977 年,Berkeley 大学的 Bill Joy 针对他的机器修改了 UNIX 源码,称为BSD(Berkeley Software Distribution)。这个BSD 是 Unix 很重要的一个分支,Bill Joy 也是 Sun这家公司的创办者! Sun 公司即是以 BSD 发展的核心进行自己的商业 Unix 版本的发展的。

1979 年:重要的 System V 架构与版权宣告

1979 年,AT&T推出 System V 第七版 Unix 。 这一版最重要的特色是可以支持 x86 架构的个人计算机系统。但是,在该版本中特别提到了 『不可对学生提供原始码』的严格限制!不再开源。

1984 年之一:x86 架构的 Minix 操作系统开始撰写并于两年后诞生

没有核心原始码,老师如何教导学生认识 Unix 呢?Andrew Tanenbaum (谭宁邦)教授于是自己动手写了 Minix 这个 Unix Like的核心程序!Minix 并不是完全免费的,但是购买的磁盘还会附上 Minix 的原始码,这意味着使用者可以学习 Minix 的核心程序设计概念!

1984 年之二:GNU 计划与 FSF 基金会的成立

1984 年,史托曼开始 GNU 计划,这个计划的目的是:建立一个自由、开放的 Unix 操作系统(Free Unix)。为提高GNU计划知名度,史托曼开始撰写 C 语言的编译程序,那就是现在相当有名的GNU C Compiler(gcc)。

但这并不顺利,他先转而将他原先就已经写过的 Emacs 编辑器写成可以在Unix 上面跑的软件,并公布原始码。 Emacs 是一种程序编辑器,他可以在用户撰写程序的过程中就进行程序语法的检验,此一功能可以减少程序设计师除错的时间!因为 Emacs 太优秀了,因此,很多人便直接向他购买。他也因此赚了写钱,并且成立自由软件基金会(FSF, Free Software Foundation),请更多工程师与志工撰写软件。终于还是完成了 GCC,这比 Emacs 还更有帮助! 此外,他还撰写了更多可以被呼叫的 C函式库(GNU C library),以及可以被使用来操作操作系统的基本接口 BASH shell!

1985 年,为了避免 GNU 所开发的自由软件被其他人所利用而成为专利软件, 史托曼与律师草拟了有名的通用公共许可证(General Public License, GPL)。这造成后来很多的软件开发者可以藉由这些基础的工具来进行程序开发! 进一步壮大了自由软件团体,但是对于 GNU 的最初构想 『建立一个自由的 Unix 操作系统』来说,有这些优秀的程序是仍无法满足, 因为,当下并没有『自由的 Unix 核心』存在!

1988 年:图形接口 XFree86 计划

有鉴于图形用户接口(Graphical User Interface, GUI) 的需求日益加重,在 1984 年由 MIT 与其他第三方首次发表了 X Window System ,并且更在 1988 年成立了非营利性质的 XFree86 这个组织。

1991 年:芬兰大学生 Linus Torvalds 的一则简讯

1991 年,芬兰的赫尔辛基大学的 Linus Torvalds 在 BBS 上面贴了一则消息, 宣称他以 bash, gcc等 GNU 的工具写了一个小小的核心程序,该核心程序单纯是个玩具,不像 GNU 那么专业。 不过该核心程序可以在 Intel 的 386 机器上面运作就是了。这让很多人很感兴趣!从此开始了 Linux 不平凡的路程!

以下为截自网络上UNIX历史图谱。『UNIX进化史(UNIX大家族族谱1969-2013)』

1.3 Torvalds 的 Linux 发展

Lunix kernel 的出现

1988 年间,托瓦兹顺利的进入了赫尔辛基大学,并选读了计算机科学系。当时整个赫尔辛基只有一部最新的 Unix系统,同时仅提供 16 个终端机(terminal)。光是等待使用 Unix 的时间,就很耗时~为此,他不禁想到:『我何不自己搞一部 Unix 来玩?』

早期 Intel x86 架构计算机不是很受重视的原因,就是因为 x86 的芯片对于多任务的处理不佳, CPU在不同的工作之间切换不是很顺畅。但是这个情况在 386 计算机推出后,有很大的改善。托瓦兹对于个人计算机的 CPU 其实并不满意,因为他之前碰的计算机都是工作站型的计算机, 这类计算机的 CPU 特色就是可以进行『多任务处理』的能力。 托瓦兹在得知新的 386 芯片的相关信息后,他认为,以性能价格比的观点来看, Intel 的 386 相当的便宜,所以在性能上也就稍微可以将就将就 ^_^。最终他就贷款去买了一部 Intel 的 386 来玩。

购买了最新的 Intel 386 的个人计算机后,托瓦兹就立即安装了 Minix这个操作系统。 另外,上个小节当中也谈到,Minix 这个操作系统是有附上原始码的, 所以托瓦兹也经由这个原始码学习到了很多的核心程序设计的设计概念。Minix 虽然真的很棒,但是谭宁邦教授就是不愿意进行功能的加强,导致一堆工程师在操作系统功能上面的欲求不满!这个时候年轻的托瓦兹就想:『既然如此,那我何不自己来改写一个我想要的操作系统?』

GNU 计划提供的 bash 工作环境软件以及 gcc 编译程序等自由软件, 让托瓦兹得以顺利的撰写核心程序。他参考 Minix 的设计理念与书上的程序代码,然后仔细研究出 386 个人计算机的效能优化, 然后使用 GNU 的自由软件将核心程序代码与 386 紧紧的结合在一起,最终写出他所需要的核心程序。他希望这个程序可以获得大家的一些修改建议, 于是他便将这个核心放置在网络上提供大家下载,托瓦兹放置核心的那个 FTP 网站的目录为:Linux,从此,大家便称这个核心为 Linux 了。

Linux 的发展:虚拟团队的产生

Linux 虽然是托瓦兹发明的,而且内容还绝不会涉及专利软件的版权问题。不过,如果单靠托瓦兹自己一个人的话,那么 Linux 要茁壮实在很困难~ 因为一个人的力量是很有限的。这期间经历了几个阶段:

单一个人维护阶段 广大黑客志工加入阶段 核心功能细部分工发展阶段

1994 年Linux 的核心正式版version 1.0终于完成!这一版同时还加入了 X Window System 的支持呢!且于 1996 年完成了 2.0 版、2011 年释出 3.0 版,更于 2015 年 4 月释出了 4.0 版! 此外,托瓦兹指明了企鹅为 Linux 的吉祥物。 (托瓦兹是因为小时候去动物园被企鹅咬了一口念念不忘, 而正式的 2.0 推出时,大家要他想一个吉祥物。他在想也想不到什么动物的情况下, 就将这个念念不忘的企鹅当成了 Linux 的吉祥物了)

Linux 的核心版本和Linux distributions

Lunix核心版本编号命令如下:

linux distribution是Linux发行版。其实Linux是指的系统的内核,不能认为是一个系统。有人在内核的基础上增加一些软件,就成了一个操作系统了。这个系统因为以Linux为内核,所有就叫Linux发行版。大部分人为了简单,所以把发行版省掉了,实际上世上没有Linux 这个操作系统,因为他只是个内核。现在出现Linux这一称呼,实际上是Linux发行版。这是正规的说法,比如,我用的 Linux 是 CentOS 这个 distribution,版本为 7.x 版。

各大 Linux Distributions 的主要异同:支持标准

上鸟哥认为 distributions 主要分为两大系统,一种是使用 RPM 方式安装软件的系统,包括 Red Hat, Fedora, SuSE 等都是这类; 一种则是使用 Debian 的 dpkg 方式安装软件的系统,包括 Debian, Ubuntu, B2D 等等。若是加上商业公司或社群单位的分类,可以简单的用下表来做个解释!

1.4 Linux 该如何学习

  1. 计算器概论与硬件相关知识
  2. 先从 Linux 的安装与指令学起
  3. Linux 操作系统的基础技能
  4. 务必学会 vi 文书编辑器
  5. Shell 与 Shell Script 的学习
  6. 一定要会软件管理员
  7. 网络基础的建立

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/186447.html原文链接:https://javaforall.cn

0 人点赞