简述操作系统历史及其组件发展

大纲目录

文章目录

  • 大纲目录
  • 流行的操作系统
  • 操作系统发展历史
    • Unix史——版权制度的负面影响导致没落
    • Linux史——黑客主义集体走向中庸
    • windows——图形化系统霸主诞生
  • 操作系统的结构组成
  • 操作系统相关组件:GCC、MinGW、Cygwin、MSYS等
    • GCC
    • MinGW
    • Cygwin
    • MSYS
    • MSYS2
    • Cygwin、MinGW、MSYS、MSYS2的比较

流行的操作系统

  • UNIX,通用操作系统鼻祖,发展出特别多衍生系统;
  • GNU/Linux,UNIX近亲,有各种发行版如Ubuntu、CentOS等。
  • Windows,微软家根基,桌面市场霸主;

主流os内核通常是C语言写成,系统函数库通常以一个或多个链接库文件的形式提供,其中最重要的是C标准库,其他的链接库往往调用C标准库而实现,当然也可能直接调用系统内核函数,甚至混合。不同系统平台有多种主流的C标准库共存:

操作系统发展历史

Unix史——版权制度的负面影响导致没落

近40年的历程,Unix历经磨难,几近夭折,一路走来其实很不容易。

  • Unix史:1969年,贝尔实验室的天才们Ken Thompson、Dennis Ritchie和Douglas McIlroy开发了UNIX操作系统。由于贝尔实验室是AT&T(美国电话电报公司)的下属机构,所以一开始Unix的版权归AT&T所有

    • 但是呢,AT&T垄断了美国长途电话业务,所以美国司法部在1958年与它签了一个和解协议:AT&T同意不进入计算机业,不销售任何与计算机有关的产品,以避免司法部起诉它违反《反垄断法》。

    • Unix是计算机的操作系统,出于上述原因,所以AT&T不能销售unix,任何要求得到源码的机构,都能免费得到。因此AT&T公司一开始也没考虑商业化这事儿初期纯粹出于兴趣做开发了UNIX,其源码就在研究机构和大学中流传

    • 其中,加州伯克利分校得到源码后,为unix添加了许多功能,成为了一个最流行的分支BSD(Berkeley Software Distribution(现今,在此基础上又有FreeBSD、OpenBSD、NetBSD等新的很多分支版本)。

    • 但是呢,之后发生了一件谁也没有想到的事情。1974年,美国司法部再次起诉AT&T违反《反垄断法》,1982年,哥伦比亚地区法庭判决AT&T败诉,必须被拆成8家小公司。但是,这个判决也意味着1958年的和解协议失效,AT&T突然可以进入计算机业了,于是unix开始考虑商业化了

    • AT&T公司在70年代后开始采用法律手段保护Unix,在1983年,AT&T发布了Unix最新版system V,这是一个商业化版本,付费才能使用,并且不得传播源码。这对BSD构成了限制,为了减少纠纷,伯克利分校规定,BSD本身依然保持免费,但是只能提供给持有AT&T源码许可的公司。不过,与此同时,伯克利的师生也开始着手另一项工作:将AT&T的专有代码从BSD中逐渐去除

    • 由于各UNIX版本各自发展,呈现差异越来越大,相同的源代码无法在不同的UNIX版本系统上编译成功。为了方便私有化,将系统函数库统一起来,IEEE组织认为至少要保证软件系统接口规范的一致性以此保证程序代表的兼容,于是IEEE在1985年牵头设立了一个POSIX标准(Portable Operating System Interface,可移植操作系统接口,后面的X是为了表明其对UNIX API的传承,POSIX标准主要就是针对UNIX API而制订),最终当然是由AT&T的Unix取得了这个标准制订战争的胜利,还取得了Unix这个注册商标。此时BSD的拥护者自喻为冷酷无情的公司帝国的反抗军。

    • 80年代后期,几个伯克利毕业的学生,成立了一家Berkeley Software Design Inc.公司,简称BSDi,BSD的一个商业版本。他们在广告中宣称,自己的产品不包含任何AT&T代码。这句话惹恼了AT&T,1990年BSDi被告上法庭,稍后伯克利分校也被追加为被告。这场诉讼对BSD打击极大,所有的开发活动都被迫停止,用户人心惶惶,担心自己也遭到AT&T的追究,因此BSD的使用急剧减少。最后在1994年,双方达到和解(1994年,官司还没有结束,AT&T公式就把Unix卖给了Novell公司,从此不再与Unix发生关系),后来BSD才恢复开发。事实上,Novell从AT&T买下Unix版权后,检查了BSD的源码,在18000个组成文件中删除了3个,并对其他文件做了一些小修改,然后BSD就重新获得了自由发布源码的许可。

    • 然而之后呢,UNIX版权的故事还没有结束,之后还有多次易主,各种商业并购后,最终UNIX商标权现归于国际开放标准组织(The Open Group)

      之后Unix的发展就集中在两个方向,一个是各个商业公司自己修改的Unix版本,比如Sun的Solaris,HP的HP-UX,IBM的AIX,另一个则是开源项目的开发,比如BSD和我们接下来要提到的——Linux。

    小结:从八十年代中后期开始,AT&T捍卫自己的Unix版权,但完全不顾它的创造者和开发者的愿望,导致Unix丧失活力、一蹶不振,大量开发者无法参与,只好离开了这个平台。BSD在1992~1994年期间,开发处于停滞,错过了发展的黄金时机。官司结束以后,又不幸发生分裂,变成了FreeBSD、NetBSD和OpenBSD三个版本。这些原因导致BSD直到今天,都还在操作系统的竞争中处在落后地位。

Linux史——黑客主义集体走向中庸

在Unix私有化的同时,Linux诞生了,它的诞生不能不提到下面两位大神

  • 理查德•斯托尔曼(全名Richard Matthew Stallman,RMS大神)对UNIX系统封闭源码很不满意,1984年发起GNU计划(GNU is Not Unix),其中一个理由就是要“重现当年软件界合作互助的团结精神”,并计划开发一个完全兼容UNIX的自由软件系统,为此专门成立了自由软件基金会(Free Software Foundation,FSF),想建立一个自由软件的王国,对抗Unix的商业帝国。
    • RMS大神宣扬的“自由软件”理念赢得了很多追随者,被视作自由软件的精神领袖,其本人也是FSF领导者。
    • FSF一开始打算是搞成一个GNU/Hurd操作系统(Hurd是用来取代UNIX内核的新系统内核)
    • 自90年代发起计划以来,GNU 开始大量的产生或收集各种系统所必备的组件(像是——函数库、编译器、调式工具、文本编辑器、网站服务器,以及一个Unix的使用者接口(Unix shell)等等),但是Hurd内核进展缓慢。就在Richard为操作系统内核伤透脑筋的时候,Linux出现了。
  • ==林纳斯·托瓦兹(全名Linus Torvalds,==戏称理那厮脱裤子)一个芬兰人,在鼓捣他老师的Minix系统(UNIX的变种版本(一般仅用在计算机教学中)之余,对其禁止用于商业目的很不满。决定自己写一个操作系统,最终在i386及其上运行。于是在1991年,他把自己的成果公布在互联网上,在这个版本中已经可以运行 bash (GNU Bourne-Again Shell,GNU的命令处理器)gcc(GNU Compiler Collection,GNU的编译器套件),并逐渐吸引了世界范围的众多hacker加入,使之不断完善,也就是之后LINUX发行版。
  • 1991年 Linux 内核发布的时候,GNU已经几乎完成了除了系统内核之外的各种必备软件的开发,Linux的出现,补齐了GNU缺少操作系统内核的技术短板,众多厂商、机构、社区纷纷把GNU软件和Linux内核(以及其他的一些软件包)整合在一起最终组成一个完整的操作系统发行版——Linux发行版(GNU/Linux)
    • 原先Linus Torvalds将Linux置于一个禁止任何商业行为的条例之下,后改用GPL(GNU General Public License, GNU 通用公共许可)。Linus 曾公开声称将Linux置于GPL公共许可证之下是他一生中所做的“最好的决定”。
    • Linux内核并不是GNU 计划的一部分,GNU计划里的是Hurd内核。
    • Richard Stallman博士直到1990年代中期,这个Linux发行版流行后要求更名,应该叫“GNU/Linux”,以避免忽视掉GNU的作用与共享。
    • 也就是说Linux其实是操作系统内核,而GNU提供了大量的自由软件(操作系统组件)来丰富在其之上的各种应用程序,我们常说的LINUX系统,其实准确上应该称为GNU/Linux

一些主观上对RMS与Linus两位的看法

RMS走向了另一个极端,他是完全反版权的,反商业化的。把软件产品从强制收费推向了强制免费、共享和开源,这也为他带来了许多许多的争议。他的GPL被认为是一种“病毒式”的协议,BSD的fans和老牌Unix黑客们认为,他们编写Unix的年头都比GPL声明要长得多,GPL依然有太多的限制,而BSD协议则比GPL更加的自由。

在RMS组织黑客闹革命的年代里,没有多少黑客认同于RMS的理论体系,更多的他们参与GNU只是为了体现那种在互联网上协同工作,令人激动的工作模式。黑客文化没有统一于他的理想体系之下。

Linus Torvalds的中庸态度网聚了世界上顶尖的黑客,其绕过了GPL和反GPL的派系之争,使用GNU的工具从而以GPL的“传染性”保护了Linux,但他同时也不承认RMS的理论思想体系——他既开源,又支持商业化。

虽然,他没有带给黑客们什么重要的思想体系或统一的价值观,但他整合了全世界黑客的阵营,让所有的黑客的行为都围绕着Linux这一事物进行。他以“用自由软件是因为它运行得更好”轻而易举地盖过了“用自由软件是因为所有软件都该是自由的”。这令人愉快的实用主义及灵活而低调的行事风格,促使黑客文化在1993至1997年间取得了一连串令人惊奇的胜利,不仅仅在技术上的成功,还让围绕Linux操作系统的发行、服务和支持产业有了坚实的开端。

windows——图形化系统霸主诞生

图形化系统是最被普通用户接受的系统了!

  • Windows 1.0是微软第一次对个人电脑操作平台进行用户图形界面的尝试,也是微软所发布的第一个Windows操作系统版本。事实上,微软原本计划将该产品称为“界面管理器”(Interface Manager),但最终还是因为其软件的显示形式而将其命名为“Windows”(窗口)。
  • Windows 2.0是在1987年在市场推出的。利用了英特尔286处理器的较快处理速度、扩大的内存以及动态数据交换(DDE)技术带来的应用程序间的通信能力。Windows 2.0对图形功能的支持有所增强,首次出现了桌面图标、用户可以叠加窗口、控制屏幕布局,并可以用组合键快速使用Windows的功能
    许多Windows开发人员都是在这一平台上编写出了他们生平的第一款Windows应用程序
  • Windows 3.0是在1990年发布的。在界面、人性化、内存管理多方面的巨大改进,Windows 3.0获得消费者的巨大肯定,并拥有着极高的用户使用率,是第一个在家用和办公室市场上取得足够立足点的系统版本。据悉,在Windows 3.0最初发布的2个周内,其销售量就超过了1000万份
  • Windows 95是1995年发布的,该系统第一次抛弃了对前一代16位x86的支持,并且是微软历史上最成功的操作系统之一。需要指出的是,标志性的“开始”按钮和IE浏览器都是在Windows 95时代首次问世的。而且,在该产品推出的五周时间内,微软就售出了超过700万份拷贝。
    • 开发者们**希望在Windows系统上也能用上GNU的开发工具,但是Windows平台很少有能与此匹敌的优秀工具。**1995年,一家叫做“Cygnus Solutions”的公司正是打算努力做这件事——把符合POSIX标准的程序搬到Windows上运行,这个项目叫做“Cygwin”。RedHat公司(小红帽)后来收购了Cygnus Solutions并继续Cygwin的开发,2018年RedHat被IBM收购,此是后话。
  • Windows ME是2000年发布的,是微软为其添加了诸如Windows Movie Maker等多媒体服务,并且是首个内置了Windows恢复功能的操作系统。但是,Windows Me在推出之初却因为安装繁琐等问题而饱受批评
  • 2001~2005年,Windows XP一经推出就因为自己用户界面的设计美感而饱受好评,《纽约时报》的知名科技专栏作者大卫-普格(David Pogue)甚至在当时的一篇评论文章中写道:“同其前作相比,你所听到的有关Windows XP的批评声音显然会更少。”即便拿到现在现在来看,使用内置Windows XP的操作系统也依旧为用户提供了流畅的使用体验,xp是最经典的windows系统
  • Windows Vista是2006发布的。微软公司所研发的具有创新历史意义的一个版本,其内核版本号为Windows NT 6.0。该系统相对Windows XP的内核几乎全部重写,并为我们带来了全新的用户界面和大量新功能。但是,因为Vista的使用习惯与XP有一定差异,用户很难找到从Windows XP系统升级到Windows Vista的充分理由,因此该系统一直受到了外界的广泛批评
  • windows 7 在2009年问世的时候,该操作系统就受到了外界的一致好评。主要围绕五个重点,针对笔记本电脑的特有设计;基于应用服务的设计;用户的个性化;视听娱乐的优化;用户易用性的新引擎。美国科技媒体CNET甚至表示:“这(Windows 7)才是Windows Vista应有的样子!”直到目前,Windows 7依旧在企业和消费者群体中得到了广泛使用。他是除了XP外第二经典的windows系统。
  • 2012年,发布了Windows 8/ Windows 8.1。Windows 8支持来自Intel、AMD和ARM的芯片架构,被应用于个人电脑和平板电脑上,尤其是移动触控电子设备,如触屏手机、平板电脑等。该系统具有良好的续航能力,且启动速度更快、占用内存更少,并兼容Windows 7所支持的软件和硬件。另外在界面设计上,采用平面化设计。
  • 2015至今,微软在华盛顿发布新一代Windows系统Win 10,并表示向运行Windows7、Windows 8.1以及Windows Phone 8.1的所有设备提供,用户可以在Windows 10发布后的第一年享受免费升级服务。2月13日,微软正式开启Windows 10手机预览版更新推送计划。3月18日,微软中国官网正式推出了Windows 10中文介绍页面。4月22日,微软推出了Windows Hello和微软Passport用户认证系统,微软今天又公布了名为“Device Guard”(设备卫士)的安全功能。4月29日,微软宣布Windows 10将采用同一个应用商店,即可展示给Windows 10覆盖的所有设备用,同时支持Android和iOS程序。7月29日,微软发布Windows 10正式版。

操作系统的结构组成

  • 操作系统的组成:包含内核以及其他计算机系统所必须的组件。
    • 内核
      • 内核建立了计算机软件与硬件之间通讯的平台,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等。
      • 由此可见,内核解决的问题是硬件管理,并不包含外围的应用程序,所以Linux内核对于大多数人来说无法正常使用。
    • 各种组件
      • 函数库
      • 编译器套件
      • 调试工具
      • 文本编辑器
      • 网站服务器

操作系统相关组件:GCC、MinGW、Cygwin、MSYS等

GCC

GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等)。

GCC的初衷是为GNU操作系统(一款完全免费的操作系统)专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,甚至在微软的Windows上也可以使用GCC。

MinGW

MinGW( Minimalist GNU For Windows(GCC compiler suite))。实际上是将经典的GNU的编译器套件中—— C语言 编译器 GCC(GNU Compiler Collection,GNU的编译器套件) 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。实际上 MinGW 并不仅是一个 C/C++ 编译器,还是一套 GNU 工具集合。

一句话来概括:MinGW 主要就是 GCC 的 Windows 版本,不需要依赖中间层 。

MinGW-w64 与 MinGW 的区别在于 MinGW 只能编译生成32位可执行程序,而 MinGW-w64 则可以编译生成 64位 或 32位 可执行程序。

正因为如此,MinGW 现已被 MinGW-w64 所取代,且 MinGW 也早已停止了更新,内置的 GCC 停滞在了 4.8.1 版本,而 MinGW-w64 内置的 GCC 则更新到了 6.2.0 版本。

Cygwin

Cygwin的项目目的是提供运行于 Windows 平台的类 Unix 环境(以 GNU 工具为代表,包括GCC),它在Windows中增加了一个中间层——兼容POSIX的模拟层(最典型的就是cygwin1.dll,它将部分 Posix 调用转换成 Windows 的 API 调用,实现相关功能)。在Cygwin里开发就相当于在linux上开发,对于开发人员来说就相当于调用linux类型的api。

Cygwin 的目录结构基本照搬了 linux 的样子,但同时,也兼容了 Windows 的许多功能:大部分应用使用 Unix 风格的路径,Windows的盘符通过类似挂载点的方式提供给 Cygwin 使用;Cygwin 中既可以运行 Cygwin 的应用(依赖模拟层),又可以运行 Windows 应用

Cygwin可以通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。当然如果要在windows上执行,运行时必须要cygwin1.dll支持。

就像先辈David Wheeler大神曾经曰过的:

“All problems in computer science can be solved by another level of indirection(计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决)”。

一句话来概括:Cygwin是在Windows下调用Unix-like的系统函数的环境,需要依赖中间层。

MSYS

MSYS(全称叫Minimal SYStem,是MinGW的一个子系统),是一套运行在Windows上的bash,包括基本的bash, make, gawk and grep 等等。也就是运行在Win上的Linux Terminal。与 Cygwin 的大而全不同,MSYS 是冲着小巧玲珑的目标去的,所以整套 MSYS 以及 MinGW,主要以基本的 Linux 工具为主,大小在 200M 左右,并且没有多少扩展能力。

一句话概括:MSYS是在windows下模拟的小型linux的环境,提供在windows上模拟Unix环境来使用MinGW
不过喜欢完整体验、不在乎磁盘占用等等,还是推荐 Cygwin 而不是 MSYS。

MSYS2

由于 MinGW 万年不更新,MSYS 更是,Cygwin的许多新功能 MSYS 没有同步过来,于是Alex等人建立了星一代MSYS项目——MSYS2

MSYS2基于Cygwin和MinGW-w64构建。JI集成了更优秀的包管理器 pacman,有活跃的开发者跟用户组,有大量预编译的软件包(虽然肯定没有Cygwin多)。它提供了类似Linux下的基本bash的一个环境,同时也让用户更加方便地使用MinGW-w64)开发原生的Windows应用。

一句话概括:MSYS2是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版。(它比MSYS优秀很多呀)
对于不喜欢庞大的 Cygwin 的用户而言,推荐试试 msys2

Cygwin、MinGW、MSYS、MSYS2的比较

你可能感兴趣的:(新手入门,操作系统,内核,编译器)