聊聊操作系统是什么 Linux和Unix的关系

今天这篇文章,我们来聊聊操作系统(operating system)。   说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macos系统;用手机、平板电脑,则是android(安卓)和ios系统。   如果是从事信息通信行业,还经常会和ubuntu、centos、fedora这样的linux系统打交道。
其实,操作系统的种类极多,远远不止我们知道的这些。   从使用场景来看,操作系统大致可以分为桌面操作系统、服务器操作系统、移动终端操作系统、嵌入式操作系统、物联网操作系统、云操作系统等类别。   如下表所示:
那么,操作系统究竟是什么?   从本质来看,操作系统其实就是一套软件。   它属于底层软件,可以说是一个大管家,专门负责把所有的硬件和上层软件(中间件、数据库、应用程序等)管理和连通起来,并进行资源调配,完成用户下达的任务。
操作系统包揽了很多底层的复杂工作,大大简化了应用软件的开发难度。   比如说,我开发一个视频播放器,就不需要写那些底层硬件代码。   操作系统还有一个重要作用,就是方便用户使用。   用户有了操作系统,就能更好地管理计算机,进行人机交互(下达命令,查询结果和状态)。   新手学习操作系统,最麻烦的是认名字和认类别。接下来,我们就从时间线的角度,对所有的操作系统关系进行一下梳理。  
  █ 操作系统的诞生
操作系统这个东西,并不是计算机诞生时就有的。   1946年2月,在美国的宾夕法尼亚大学诞生了世界上第一台电子计算机,它的名称叫eniac(埃尼阿克)。   eniac是由大量的电子管(真空管)组成,体积极为庞大,占地170平方米,重达30吨,耗电174千瓦。在算力上,它可以实现每秒5000次的加法运算。
这种早期的计算机,既没有显示器,也没有键盘,更没有鼠标,全部都是人工操作。   在使用时,专职操作员将运算信息记录在穿孔卡带上。系统启动后,读取卡带信息,然后进行运算,最后输出结果。
穿孔卡带   计算机的速度快,人的速度慢。所以,计算机经常处于等待状态,等待操作员的输入。   这严重耽误了计算效率,浪费时间,也浪费钱(电费)。于是,到了20世纪50年代,开始出现了批处理系统(batch processing)。   批处理系统中,操作员把用户提交的作业进行分类,把一批作业编成一个“作业执行序列”。每一批作业,都由专门编制的监督程序(monitor)自动依次处理。   这个“监督程序”,就是操作系统的雏形。它标志着操作系统的诞生(1955年)。   最早使用批处理系统的,是第二代通用计算机,代表产品是ibm的1401和7094等。
批处理虽然提升了效率,但仍存在缺陷。   例如,当作业进行i/o(输入/输出)操作时,主机会等待操作完成,造成自身空闲。再例如,计算机只能同时运行一个批处理任务,效率还是太低。   到了60年代,集成电路技术高速发展,我们有了更快的处理器、更大的内存、更丰富的i/o设备。同时,通道和中断技术出现,开始允许系统执行“挂起”操作。   于是,就有了“多道程序系统”。   简单来说,计算机系统从串行变成了并行,可以同时运行多个任务(多个程序放入内存,交替在cpu中运行,共享硬软件资源)。   多道程序系统大幅提升了计算机的工作效率。再后来,系统又支持了多个用户同时使用。于是,就变成了“多用户+多任务”的系统,称为“分时系统”。   “分时”和我们通信领域的“时分复用”有点像,就是把处理机的运行时间分成很短的时间片,按时间片轮流分配给各个作业使用。   再后来,技术又继续演进。终于,我们有了时效性更强的“实时操作系统”。这种系统,就非常接近于现代操作系统的概念了。
█ unix的诞生   1964年,美国电话电报公司(at&t)、通用电器公司(ge)及麻省理工学院(mit)合作,提出了一个超级分时操作系统的开发计划。   这个计划,被命名为multics os。multics是“multiplexed information and coputing system(多路信息与计算系统)”的意思。   当时,他们打算借助这个系统,打造一台能够连接1000台终端、满足300人同时在线的计算机。   这个计划持续了五年,并没有达到既定目标。于是,1969年,隶属at&t公司的贝尔实验室(bell labs)宣布退出。   贝尔实验室退出之后,相关的项目组成员就闲了下来。其中就有一个人,名字叫做肯·汤普森(ken thompson)。
肯·汤普森此前在multics上开发了一款名叫星际旅行(space travel) 的游戏。退出multics项目后,肯·汤普森就没办法继续玩这个游戏了。   于是,他突发奇想,打算在一台空闲的pdp-7(dec公司生产的一种小型计算机,性能很低)上,开发一个简单操作系统,运行这个游戏。   1969年8月,肯·汤普森趁着妻子回家探亲,用了1个月的时间,使用汇编语言,写出了一个简版的multics系统(包括一组内核程序,一些内核工具程序,以及一个小的文件系统)。   实验室的同事们,将这个系统戏称为unics。uni作为前缀,是“单一、一个”的意思。unics,对应multics,是“单路信息与计算系统”的意思。   后来,大家又取其谐音,直接称其为“unix”。
一边工作一边下棋的肯·汤普森   基于汇编语言编写的unics,硬件通用性差,没法移植到其它机器上运行。因此,肯·汤普森尝试使用bcpl、pascal语言进行重写。但是,效果并不理想。   这时,他的同事丹尼斯.里奇(dennis ritchie)站了出来。
丹尼斯.里奇在bcpl语言(也就是b语言)的基础上,开发了一套新的语言,也就是后来如日中天的c语言(按字母表顺序,b之后就是c)。   不久后,丹尼斯.里奇用c语言重写unics成功。就这样,unix操作系统正式诞生了。
正在操作dec pdp-11计算机的 肯·汤普森(坐者)和丹尼斯.里奇(站者)   1973年,丹尼斯·里奇和肯·汤普森正式发表论文,宣布了unix的存在。消息引起很大反响,很多人都期望学习和研究unix。   贝尔实验室(at&t)推出了unix之后,因为受美国政府反垄断制裁的原因,并不能对它进行销售。所以,他们只能将unix无偿提供给所有人学习。   又过了一段时间,at&t发布了unix系统第5版,并授权给教育机构使用。1975年,他们第一次以2万美元的价格,授权企业使用unix第6版。   这期间,很多企业和机构开始打unix的主意。   1977年,伯克利大学的研究生比尔·乔伊(bill joy),将unix程序整理到磁带上,推出了bsd版本。bsd,就是berkeley software distribution(伯克利软件发行版)。   1978年,sco(一家服务器系统软件供应商)包装发行了商用版的unix。   目前公认的最完美版本,是1979年发行的system v7。这个版本也被unix玩家们称为“最后一个真正的unix”。   1980年,美国国防高级研究计划局(darpa)准备制定tcp/ip协议,选择了与bsd合作。这大大刺激了unix的发展和普及。   后来,丹尼斯·里奇和肯·汤普森被誉为unix之父和c语言之父。1983年,他们二人都获得了图灵奖。
在system v7推出之后,at&t发布新的使用条款,将unix源代码私有化。unix开始走向了商业闭源之路。   很多公司,都推出了自己的unix系统分支。比较有名的,是sun公司的solaris、ibm公司的aix、惠普公司的hp-ux,以及由bsd版本发展起来的freebsd。   solaris这个系统,它的稳定性极高,主要用在sun公司的服务器(v240/v440等)上,cpu都是完全不一样的,叫做sparc。   freebsd的应用范围就广多了。它在bsd许可协议下发布,由来自世界各地的志愿者开发和维护,允许任何人随意使用和发行(在保留版权和许可协议信息的前提下)。   苹果公司的os x,就是基于freebsd的。   详细的unix闭源分支我就不多说了,发一张图,大家可以参考:
█ linux的诞生
unix开始收费和商业闭源之后,引起了一个大叔的不满。这个大叔,名叫理查德·马修·斯托曼(richard matthew stallman)。
理查德·马修·斯托曼   1984年,他发起了自由软件体系gnu(gnu is not unix),模仿unix的界面和使用方式,重新开发一个开源的版本。他还组织成立了fsf(free software foundation,自由软件基金会),起草了gpl(generalpubliclicense,通用公共许可证)。
gnu著名的牛头logo   斯托曼的做法,具有划时代的意义。他开创了开源软件的黄金时代。   所有gpl协议下的自由软件,都必须遵循“copyleft(非版权)原则——   即:自由软件,允许用户自由拷贝、修改和销售。但是,对其源代码的任何修改,都必须向所有用户公开。   到上世纪90年代初,gnu项目已经开发出许多高质量的免费软件,其中包括有名的emacs编辑系统、bash shell程序、gcc系列编译程序、gdb调试程序等等。   这些都为后来linux的诞生创造了条件。   unix源代码私有化之后,在大学中不再允许使用unix源代码。   1987年,荷兰阿姆斯特丹自由大学计算机系的安德鲁·塔能鲍姆教授(andrew s. tanenbaum,也译为谭宁邦),为了能在课堂上教授操作系统课程,决定在不使用任何at&t源代码的前提下,自行开发与unix兼容的操作系统。
安德鲁·塔能鲍姆   他将这个系统称为minix,也就是mini-unix(小型unix)的意思。   minix的主要工作平台,是ibm pc及其兼容机。这款pc搭载了英特尔公司的16位处理器——intel 8080。   开发出minix之后,塔能鲍姆教授并没有对它进行大规模推广。而且,他认为这个系统只是用于教育目的,所以也没有进行深入开发。   他甚至还不允许别人加入代码(估计是怕侵权unix),这就更加限制了minix的发展和普及。   1991年,正在芬兰赫尔辛基大学求学的林纳斯·托瓦兹(linus torvalds),对unix产生浓厚兴趣,尝试借助minix完成一些日常工作。   minix的功能太弱,无法满足林纳斯的需求。于是,他利用gnu的bash当做开发环境,gcc当做编译工具,成功编写出了拥有10000行代码的linux内核(linux kernel)。   此时的林纳斯,只有21岁!
林纳斯·托瓦兹   林纳斯的linux内核基于posix(portable operating system interface for computing systems,可移植操作系统接口)标准,能够与绝大多数unix操作系统兼容。   他在发布时,选择了遵循gpl协议和gnu宗旨,所以,正式发布时,命名为“gnu/linux”。
linux的吉祥物是企鹅(英文名: tux) 因为林纳斯小时候被企鹅咬过,印象非常深刻  
  █ linux和unix的关系
  这里,我要特别说明一下,linux和unix的关系。   很多人觉得,linux就是unix,这显然是不对的。由上面的介绍可以看出,linux是开源自由软件,而unix是对源代码实行知识产权保护的传统商业软件。两者是完全不同的东西。   那么,linux是不是类unix(unix-like)系统呢?   严格来说,也不是。   linux只是风格上和unix很像,但它并不含有unix的代码。unix的源代码,为sco公司所有。unix的商标权和标准认定权,属于opengroup所有。 真正意义上的类unix系统,必须要通过官方认证(例如苹果的macos)。而linux并没有。  
  █ linux的发行版
  大家注意,林纳斯1991年开发的,并不是一个操作系统,而是一个内核。   后来,全球开发者(开源社区、企业、个人等)对内核代码进行大量的修改和补充,加入gui(图形界面)、应用等部分,才形成了相应的linux操作系统发行版,也就是真正的操作系统。   这些发行版分为社区版和商业版。社区版数量较多,开发和维护的主体是开源社区。商业版数量较少,是在社区版的基础上进一步优化而来。   值得一提的是,发行版之间也有复杂的衍生关系。也就是说,发行版可以构建在另一个发行版之上。   一些大家可能比较熟悉的发行版,包括:ubuntu、debian、centos、fedora、 redhat linux、slackware、turbolinux、mandrake、suse、红旗、麒麟等。
slackware和debian是最早期的两个发行版,创建于1993年。
debian的后代分支比较庞大。除了debian本身之外,这个分支的主要代表还有ubuntu(构建在debian之上)、linuxmint(构建在ubuntu之上)、kali linux。
redhat,也就是大家很熟悉的红帽系列。它的主要发行版是red hat enterprise linux(rhel),针对企业客户。
centos是rhel源代码再编译的产物,修正了不少bug,稳定性更强。
除了rhel之外,redhat还向社区提供另一个免费发行版,即fedora。
这些发行版的具体关系和发布时间,如下图所示:
2020年底,红帽公司宣布陆续停止维护centos,后续将无法获得官方升级和补丁。虽然比较可惜,但也给国产操作系统带来了机会。    
█ 最后   现在,大家应该对操作系统的诞生和发展有了基本的了解,也对unix和linux操作系统的家族脉络也有了更清晰的认识。     今天的文章,就到这里,希望对大家有所帮助。    


2019款iPhone曝光依然是刘海屏设计一共有四种配色充电功率是5W
南卡骨传导耳机初体验,和同事一起分享
美公司借助3D打印技术CLIP开发新型摩托车
外资巨头抢中国光伏“剩宴”:受益双反乘机收购
漫谈家庭影院低音炮
聊聊操作系统是什么 Linux和Unix的关系
微波回传想成为利器 还得看5G“天梯”
电动汽车架构和逆变器
什么是燃料电池?电堆是怎么工作的?
专业数字功放工作原理以及应用电路的详细介绍
宿城举行动力锂离子电池项目签约仪式
曝英伟达RTX3080Ti将于5月18日发布 全球首个完全可回收印刷电子产品诞生
ivviK5强势来袭:价格劲爆,华为荣耀8和魅蓝X哭了!
领芯微发布首款车规级芯片,助力国家汽车电子产业!
魅族Note8和Note9的区别
太阳能路灯的优点_太阳能路灯的缺点
教育创新园区企业研发防疫机器人 能自动进行体温检测
AI慢慢的侵蚀了人类生活的方方面面
MediaTek与爱立信首次成功实现5G毫米波与Sub-6GHz频段的实验室双连接
牵引电动机的组成及工作条件