011 | Linux基础入门

本文为《跟马哥学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的一部分。第一个程序也占了内存,也只是占了一部分。站在程序的角度来看,他以为自己是唯一跑在这个计算机的程序,他不知道其他程序的存在。他发现自己的程序的使用是通过操作系统实现的,认为只有自己和监控程序,每一个程序都是这样,因此,监控程序为每一个程序虚拟出美好家园。

相关新闻

历经多年发展,已成为国内好评如潮的Linux云计算运维、SRE、Devops、网络安全、云原生、Go、Python开发专业人才培训机构!