UNIX家族?Windows NT家族?一文讲清操作系统繁杂的家族史

关于专栏

本专栏更新速度慢,简单讲讲操作系统的那些事,让不是做操作系统开发的同学也能大概认识操作系统这个出现在生活各处的东西

浅淡操作系统系列第0篇


目录

关于专栏

贝尔实验室

UNIX

Linux

BSD

[Windows NT](#Windows NT)

结语

快捷翻页

参考文章


贝尔实验室

讲操作系统肯定离不开贝尔实验室了,贝尔实验室作为整个星球最伟大的实验室(没有之一),创造出了很多颠覆性的产品

这个贝尔,就是著名的亚历山大·格拉汉姆·贝尔,电话专利的获得者

1876年,贝尔呈交电话专利申请并获得批准

第二年,具有商业头脑的贝尔就创办了贝尔电话公司

1895年,贝尔公司将其正在开发的美国长途业务项目分割,建立了一家独立的公司,称为美国电话电报公司,也就是大名鼎鼎的AT&T(American Telephone & Telegraph)

那时候谁也没想到,之后几年间,AT&T的规模和实力将超过了母公司

1899年,AT&T整合了美国贝尔的业务和资产,成为贝尔系统的母公司

1925年的1月1日,当时AT&T总裁华特·基佛德收购了西方电子公司的研究部门,成立一个叫做"贝尔电话实验室公司"的独立公司,之后公司改名贝尔实验室

在建立之初,贝尔实验室便致力于数学、物理学、材料科学、计算机编程、电信技术等各方面的研究。也就是说,除了电信技术的研发之外,它的重点在于基础理论研究

而正是基础理论的研究,开启了贝尔实验室的辉煌时代

1927年,贝尔实验室的戴维森和莱斯特·格莫尔通过将缓慢移动的电子射向镍晶体标靶,验证了电子的波动性

这项实验为所有物质和能量都同时具有波和粒子特性这一假设提供了强有力的证据

10年之后,戴维森又凭借在电子干扰研究方面取得的成就获得诺贝尔奖

1933年,贝尔实验室的卡尔·央斯基,通过研究长途通讯中的静电噪声,发现银河中心在持续发射无线电波。通过此研究,开创射电天文学

1947年,贝尔实验室发明晶体管

1948年,克劳德·香农发表论文《通讯的数学原理》,奠定了现代通信理论的基础。他的成果是部分基于奈奎斯特和哈特利先前在贝尔实验室的成果

1954年,贝尔实验室制作出了第一个有实际应用价值的太阳能电池

1962年,世界上第一颗通信卫星Telstar1发射成功且首次跨大西洋电视实播,出自贝尔实验室

1964年,阿诺·彭齐亚斯和罗伯特·威尔逊发现宇宙微波背景辐射,并因此获得1978年诺贝尔物理学奖

1969年,UNIX系统和C语言被贝尔实验室的Dennis·Ritchie和Brian·W.·Kernighan生成功研发

在1980年代,C语言又由Bjarne Stroustrup发展为C++语言

也是1969年,贝尔实验室的乔治·埃尔伍德·史密斯和威拉德·博伊尔共同发明电荷耦合元件(也就是CCD),正是现在扫码机、相机、扫描仪必备的感光组件。两人因而获得2009年诺贝尔物理学奖

几年后,手机通讯系统基础理论也出现在贝尔实验室里

  • 11位科学家获得诺贝尔奖
  • 16位获美国最高科学、技术奖------美国国家科学奖章和美国国家技术奖章,均由总统亲自颁奖
  • 4位获得了图灵奖(计算机界的诺贝尔奖)
  • 还有更多科学家拿了其它国家的高等奖章,就连实验室成为史上第一个机构获奖者(美国国家技术奖)。
  • ......

总而言之,那个时代的贝尔实验室,代表了全球科技的最前沿,是先进技术和创新思维的源泉

我们今天要谈的很多操作系统起源与贝尔实验室的UNIX和C语言,而博主在主更的C++也出自贝尔实验室,可以说万物皆可贝尔[doge]

UNIX系统算是对我们今天要提到的操作系统影响最大的了,操作系统可以分为两派(没错,别看很繁杂,一般分为两派就够了)一种是UNIX衍生派,一种是Windows NT衍生派,没错,除了Windows以外,都属于UNIX衍生的操作系统,所以今天,我们先讲UNIX

UNIX

讲到UNIX这可太庞大了,没办法全部理清楚了,因为除了Windows NT以外的操作系统基本都是UNIX了,只能挑几个重点讲讲了

UNIX有一个UNIX哲学,即:

  1. 一个应用尽可能只关注一个目标
  2. 尽可能让多个应用互相协调 / 组合
  3. 一切皆文件

用过Linux的同学这个时候肯定要跳出来了,这是Linux还是UNIX,为了更好的解释这个问题,我们来讲讲Linux

Linux

Linux,服务器都基本在用的操作系统,很多码农应该都用过,Linux的创始人Linus是一个超级极客,从小爱好计算机,那时候他刚搞了一台电脑,然后......

没有操作系统用啊???!!!

但时用的是MS-DOS和MINIX,MS-DOS大家应该都知道

后来因为Linus 不喜欢他的 386 计算机上的 MS-DOS ,而安装了MINIX,这是就有长得帅的同学要问了:MINIX是个啥???

其实假如你用英特尔处理器,那么你基本就逃不过MINIX,现代英特尔处理器中都有一个核心部件:英特尔管理引擎 (Intel ME-Intel's Management Engine),用来管理协调内部的诸多模块,尤其是传统芯片组整合进入之后,处理器已经差不多成了 SoC 单芯片系统,更需要一个"总管",MINIX 正是负责这个工作,所以这个MINIX你基本逃不过了

Linux就是用MINIX为样本开发了原始的 Linux 核心。但是这种影响更多在于非技术层面,确切地说是一种精神上的"鼓舞"。在设计上,Linux 则和 MINIX 相差很大,在 Linux 系统还没有自己的文件系统之前,曾采用 Minix 的文件系统

MINIX 在核心设计上采用微核心,即将操作系统分成微核心和其上的提供文件系统、存储器管理、驱动程序等服务的服务程序

而 Linux 则和原始的 UNIX 都采用宏内核。在 Linux 发展之初,双方还于 1992 年在新闻组上有过一场精彩的争论,被称为塔能鲍姆-林纳斯辩论。MINIX 的作者和支持者认为使用宏内核是技术上的退步,而 Linux 的支持者认为 MINIX 本身没有实用性

看到这里,大家基本可以得出结论,其实Linux可能连类UNIX都有点困难,只能算是UNIX的亲戚,还是远房的,因为Linux处处没有UNIX的代码,但设计理念上又处处是UNIX

BSD

这个时候就有长得美的同学要问了(不是你咋那么多问题[doge]):除了Linux就没了?

其实还有一种,BSD

听说过Free BSD吧?没听说过?macOS总听说过吧?

这个时候有某位路人要惊呼了:什么?我们高贵的macOS既然也是UNIX???

没错,其实macOS也是UNIX血统,这次不算亲戚,更不远,BSD其实是UNIX直接衍生的

关于BSD的历史,这里引用困世大佬的这篇文章

受母校加州大学伯克利分校之邀,Thompson(UNIX创始人,前面讲过)于1975/1976学年曾担任该校的客座教授。在此期间,他与研究生们一起为UNIX开发了许多新特性,(他的学生之一,Bill Joy,后来与人共同组建了SUN微系统公司------一家最早涉足UNIX工作站市场的公司。),许多UNIX的新工具和新特性又陆续在伯克利分校问世,这包括:C shell、vi编辑器、一种改进型的文件系统(伯克利快速文件系统)、sendmail、Pascal语言编译器,以及用于新型Digital VAX架构的虚拟内存管理机制。这一命名为BSD(伯克利软件发布,Berkeley Software Distribution)的UNIX版本(包括源码在内)分发颇广。1979年12月,诞生了首个完整的UNIX发布版3BSD。(之前发布的Berkeley-BSD和2BSD并非完整的UNIX发布版,仅含由伯克利分校开发的新工具。)1983年,加州大学伯克利分校的计算机系统研究组(Computer Systems Research Group)发布了4.2BSD。该版本的发布意义深远,因为其包含了完整的TCP/IP实现,其中包括套接字应用编程接口(API)以及各种网络工具。4.2BSD及其前身4.1BSD在世界上多所大学开始广为流传。以这两者为基础,还形成了SunOS操作系统(首发于1983年)------这一由SUN公司销售的UNIX变种。其他重要的BSD版本还有发布于1986年的4.3BSD,以及发布于1993年的最终版本4.4BSD

1984年,Richard Stallman之前一直供职于MIT的一位天赋异禀的程序员,开始着手创建一个" 自由的(free)"UNIX实现。Stallman的观点属于道德层面,而对"free"一词的定义则属于法律范畴而非经济范畴(请参见http://www.gnu.org/philosophy/free-sw.html)。然而,Stallman所描述的这一法律意义上的"自由(freedom)"却蕴含着言外之意:应可免费或以低价获得诸如操作系统之类的软件。为开发出一套完整而又可自由获取,包含内核以及所有相关软件包的类UNIX系统,Stallman发起了GNU项目("GNU's not UNIX" 的递归缩写形式),并积极邀请有志之士加盟。1985年,Stallman创立了非盈利机构------自由软件基金会(FSF),以支持GNU项目和广义意义上的自由软件开发。GNU项目启动之时,BSD还不具备Stallman所指的那种"free"属性。使用BSD不但仍需获得AT&T的许可,而且用户不得随意修改并重新发布BSD中AT&T拥有产权的代码部分。这也体现出Stallman倡导的自由(free)软件概念的重要性与制定了GNU GPL(通用公共许可协议)的法律意义。http://www.gnu.org/philosophy/free-sw.html

值得一提的是,20世纪90年代初,另一种可以免费获得的UNIX也能在x86-32硬件架构上运行。Bill和Lynne Jolitz将BSD系统移植到32位的x86 cpu上,命名为386/bsd。这项移植工作基于BSD Net/2(发布于1991年6月),即4.3BSD源码的版本之一,该版本中残存的所有AT&T专有源码要么被全部替换,要么予以删除------主要针对6个无法轻易更换的源码文件而言。Jolitzes夫妇将Net/2代码移植到了x86-32硬件架构,重写了缺失的源码,并于1992年2月发布了386/BSD的首个版本(0.0版本)。在初战告捷后,对386/BSD的开发工作便出于各种原因而停滞不前。面对日渐积压的大量补丁程序,另外两组开发团队相机而动,基于386/BSD分别创建了自己的版本:NetBSD和FreeBSD。前者侧重于对大量硬件平台的可移植性;后者则主要关注性能,并成为如今应用最为广泛的BSD。1993年4月,NetBSD首版(版本号为0.8)发布。FreeBSD的首个CD-ROM版本(版本号为1.0)则发布于1993年12月。1996年,OpenBSD在从NetBSD项目分离出去之后,也发布了最初版本(版本号2.0)。相比较而言,OpenBSD偏重于安全性。2003年中,在与FreeBSD 4.x分道扬镳之后,一款新型BSD------DragonFly BSD又浮出水面。DragonFly BSD采用的设计方法与FreeBSD 5.x有所不同,能够支持对称多处理器(SMP)架构。可能有的人会想BSD要蓬勃发展走向辉煌了......现实总是那么出人意料,1992年初,Berkeley Software Design, Incorporated公司(BSDi,如今隶属于Wind River公司)开始发行受商业支持的BSD UNIX------BSD/OS------以Net/2发布版以及Jolitze夫妇所开发的386/BSD特性为基础。BSDi的发布版包含二进制和源代码,售价995美元,此外,BSDi还建议潜在客户使用其电话号码1-800-ITS-UNIX。1992年4月,USL对BSDi发起诉讼,诉状称BSDi售出产品中含有USL(UNIX System Laboratories 派生自AT&T的子公司,专门从事UNIX的开发和销售)专有源码及商业机密,要求其停止销售。此外,诉状还称BSDi的电话号码容易误导消费者,要求BSDi停止使用。这场诉讼愈演愈烈,最终还加入了对加州大学的索赔请求。法院最终驳回了USL几乎所有的诉讼请求,仅对其中的两项请求予以支持。随后,加州大学又针对USL发起发诉,诉称:USL没有为System V中使用的BSD代码支付费用。这场诉讼悬而未决之际,USL已被Novell收购,Novell时任CEO------Ray Noorda公开声称:较之于法庭辩论,自己的公司更愿意参与市场竞争。双方最终于1994年1月达成庭外和解。在删除Net/2 release源码18000个文件中的3个文件,对若干其他文件做出细微改动,并为其他大约70个文件添加USL版权注意事项后,加州大学仍可继续自由发布BSD。1994年6月,经过修改的系统以4.4BSD-Lite之名发布(1995年6月,加州大学发布了最后一版4.4BSD-Lite版本号为 Release 2)。此时,根据和解条款,BSDi、FreeBSD以及NetBSD纷纷以经过修改的4.4BSD-Lite源码替换了各自的Net/2基础源码

后面,macOS就是基于BSD开发出来的,macOS其实还是有纯正UNIX血统的

Windows NT

Windows就相对单一了,Windows就是Windows,反过来也一样,而且基本大家都用过,所以各种什么就不用说了吧

反正我挺瞧不起Windows的设计哲学的


结语

作者会经常帮助有问题的小伙伴解决问题如果你有问题,可以直接到评论区指出,作者会在看到后到24小时内给予答复

如果本文有任何问题欢迎在评论去指出,如果喜欢这篇文章,希望能点赞评论关注

5994字,7个父项,2个子项


快捷翻页

博主文章推荐:

C++教程 - How to C++系列专栏第0篇

C++教程 - How to C++系列专栏第1篇

C++教程 - How to C++系列专栏第2篇


参考文章

Unix、Windows、Mac OS、Linux系统故事 - 知乎

主流的操作系统有哪些? - 知乎

贝尔实验室的百年兴衰史 - 知乎

UNIX的名字是我起的------对话 UNIX 开发者:Brian W. Kernighan_unix命名_《新程序员》编辑部的博客-CSDN博客

了解Unix的历史与现状_unix系统还有人用吗_卓有成效的程序员的博客-CSDN博客

我看Unix与Windows的本质区别 - 知乎

在工具应用选择上,为什么我开始相信 Unix 哲学? - 少数派

UNIX、BSD(FreeBSD)操作系统简介 - 知乎

Linux和UNIX的到底有关系及区别? - 知乎

类UNIX操作系统家族发展时间线图谱(1969-2020)_unix图谱_rtoax的博客-CSDN博客

一个悄然成为世界最流行的操作系统 - 知乎

不为人知的 Linus 大神 - 知乎

相关推荐
九鼎科技-Leo2 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
小江村儿的文杰2 小时前
XCode Build时遇到 .entitlements could not be opened 的问题
ide·macos·ue4·xcode
朝九晚五ฺ2 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream3 小时前
Linux的桌面
linux
xiaozhiwise3 小时前
Makefile 之 自动化变量
linux
Yang.994 小时前
基于Windows系统用C++做一个点名工具
c++·windows·sql·visual studio code·sqlite3
我不瘦但很逗4 小时前
Windows下使用DBeaver连接云数据库(MySQL)
数据库·windows
天涯倦客的美丽人生5 小时前
2024年11月最新 Alfred 5 Powerpack (MACOS)下载
macos
SoraLuna5 小时前
「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解
开发语言·算法·macos·cangjie