共计 2227 个字符,预计需要花费 6 分钟才能阅读完成。
本文为《跟马哥学 Linux》系列文章的第十一篇,上一篇文章为《Linux 发展历史 -06》。
前面我们讲了 unix,Linux,macos 等操作系统,以及所谓的 Linux 之间的悲欢离合的故事。而且我们知道 System V Unix 与 BSD 二者之间发起了一场旷日持久是官司,把 BSD 告上法庭,开始 unix 内战的第一阶段,后面发展到第二阶段,第二阶段主要是 AT&T 持有了 sun 公司 20% 股份后,AT&T 与几家公司,如 IBM、DEC、HP 等公司,创立了开放软件基金会,他们彼此之间又对抗了第二阶段。不管怎样,他们之间的官司打了很久。这个官司进行中,微软的 windows 茁壮成长起来,让比尔盖茨赚到了几十亿美金。而在此期间,minix 诞生了,但他没能扛起去拯救 GNU 组织当中,希望有这么一个操作系统出现的大旗。再后来,1990 年前后,BSD 开始进行反击,因为 BSD 在于 System V Unix 大战当中,已经把 System V Unix 相关代码清除殆尽,从此,与 System V Unix 再无任何瓜葛。因此,他们认为他们当初创建的使命已经圆满完成,之后 Jolitz 移植到 x86 系统上,x86 平台就是因特尔公司所生产的 CPU,也包括后来 AMD 的兼容 PC 架构,成为 X86 系列。到那个时候,BSD 开始能够尝试运行在 X86 系列的非专用的小型机上,于是整个 unix 领域迎来了第一缕曙光,不过这个人的项目应该是在几个商业公司支持下研发的,这几家公司更希望以闭源的方式,以商业授权的方式将移植后的 BSD 向外发行,Jolitz 不满,于是他把自己一年多的成果完全删了,并退出项目,所以,BSD 项目在 1991 年夭折。不过,这个项目在后来的项目中再次出现,
不过在 1991 年 8 月,芬兰大学生 Linus Torvalds 宣布成立 Linux 项目,他最初研究 Linux 的主要原因是学校的 unix 太贵,并且他说早知道有 386-BSD 项目,他不会去研究 Linux 系统的不过 386-BSD 项目在 1992 年重新活过来的时候,Linux 已经诞生好几个月。386-BSD 项目在今天确实还在使用中,而且在某些领域,甚至在 Linux 成熟之前,像早期的网易的运维当中,他们的 WEB 服务器都是跑 free BSD 系统。在那个时候,确实看不出来谁优谁劣,现在具有压倒性的优势。更重要的是,1991 年前后,http 协议诞生。随着 tcp/ip 协议的成熟和 http 协议诞生,互联网呈现了大爆炸的发展。而 Linux 正好在那个时候宣布成立。随后的几年中,由于 Linux 遵循 GPL 协定,任何人可以任意获取和修改,互联网上就有上百名黑客级人员,在获取到 Linux 源码后,给他注入研发实力。1993 和 1994 年互联网大爆炸的时代,Linux 和 BSD 的重要性才终被整个技术届所了解,被整个 unix 领域所正式面对,但不幸的是,对 BSD 支持来讲,AT&T 对 BSD 的诉讼耗费了大量的时间,所以使得关键的博客运维开发者,在此之前为了避免官司缠身,纷纷转向 Linux 阵营。所以,BSD 正式没落。把最好的时间让给了 Linux。Linux 开发与 BSD 不同的是,Linux 完完全全根植在互联网,所有的作者都来自互联网,并借助于 Larry Wall,他研发过 patch 工具,patch 工具能使得源代码在分发时不用整包进行,利用 diff 制作补丁,利用 patch 进行打补丁操作,使得互联网协同开发成为可能。因此,借助于 Larry Wall 研发的 patch 工具,Linux 在互联网爆炸时代,非常茁壮成长起来。1994 年,Linux 的 1.0 版本正式发布。在这四年中,Linux 发展非常快。
接下来,描述一下一个操作系统的基本结构。为了能够使得多个程序运行起来,我们需要一个通用的监控程序,监控其他程序的运行。这个程序自己不负责具体的事情,不负责特定的能够满足用户需要的活,他仅仅是把能够满足用户需要的多个活,在同一台电脑上运行起来,实现多任务的功能。当初就是这个原因来研发 mac 的。
Linux 的任务虽然比 mac 简单很多,但沿用了 mac 用于实现监控其他程序,支持多任务的特性,依然保留了下来。意味着 unix 其实是一个工作在硬件之上的监控程序。这个监控程序只是负责把底层硬件驱动起来,并把底层硬件所提供的各种功能虚拟化,
比如把内存切割为 N 段,把 CPU 所提供的时间片切成 N 片,供多个程序轮流使用,把底层的硬件资源切割成能分配给多个应用程序的组成部分,并监控这个程序是如何使用这些资源的,
同时如何启动一个程序,如何关闭一个程序,也都是由监控程序负责完成,所以监控程序取得了整个程序的应用权,把硬件的本来面目,虚拟成了软件的面目,
把 CPU 的计算能力切割成了 N 片,并且轮流使用,并且第一片供第一个程序,假如一共有三个程序,时间是不动的。第二片给第二个程序,第三片给第三个程序,然后依次类推,第四片又给第一个程序,完成复用,这个方式成为时序复用。
对于内存来讲,他通过将空间切割成多片的方式,分配给多个应用程序,从而完成内存资源的复用。这种复用带来的结果是,能够把一个资源切割成 N 块,
所以,我们可以认为,每个程序都独立占了 CPU,只是占了 cpu 的一部分。第一个程序也占了内存,也只是占了一部分。站在程序的角度来看,他以为自己是唯一跑在这个计算机的程序,他不知道其他程序的存在。他发现自己的程序的使用是通过操作系统实现的,认为只有自己和监控程序,每一个程序都是这样,因此,监控程序为每一个程序虚拟出美好家园。