easyprogramming

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1 随笔 :: 0 文章 :: 0 评论 :: 58 阅读

操作系统(Operating System)

说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是android(安卓)和iOS系统。

如果是从事信息通信行业,还经常会和ubuntu、CentOS、Fedora这样的Linux系统打交道。

其实,操作系统的种类极多,远远不止我们知道的这些。

从使用场景来看,操作系统大致可以分为桌面操作系统、服务器操作系统、移动终端操作系统、嵌入式操作系统、物联网操作系统、云操作系统等类别。

操作系统类别 代表
桌面操作系统(PC、笔记本电脑等) Windows(XP/10/11)、macos、Linux等
服务器操作系统 Unix(AIX、HPUX等)、Linux、WindowsServer等
移动终端操作系统(手机、可穿戴设备等) Android、ios、Windows Phone(WP)等
嵌入式操作系统 FreeRToS、Unison、eCos、NXPMQX等
物联网操作系统 Android Things、ALioS、ARM Mbed os、Lite os 等
云操作系统 Windows、Centos、Ubuntu

那么,操作系统究竟是什么?

从本质来看,操作系统其实就是一套软件。

它属于底层软件,可以说是一个大管家,专门负责把所有的硬件和上层软件(中间件、数据库、应用程序等)管理和连通起来,并进行资源调配,完成用户下达的任务。

操作系统包揽了很多底层的复杂工作,大大简化了应用软件的开发难度。

比如说,我开发一个视频播放器,就不需要写那些底层硬件代码。

操作系统还有一个重要作用,就是方便用户使用。

用户有了操作系统,就能更好地管理计算机,进行人机交互(下达命令,查询结果和状态)。

新手学习操作系统,最麻烦的是认名字和认类别。接下来,小枣君就从时间线的角度,对所有的操作系统关系进行一下梳理。

 操作系统的诞生

操作系统这个东西,并不是计算机诞生时就有的。

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操作系统正式诞生了。

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这个系统,小枣君非常熟悉。当年我就是通过Solaris学会的Unix。它的稳定性极高,主要用在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,通用公共许可证)。

斯托曼的做法,具有划时代的意义。他开创了开源软件的黄金时代。

所有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和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、 RedhatLinux、Slackware、Turbolinux、Mandrake、SUSE、红旗、麒麟等。

Linux分支系统 子分支系统名称
基于 Debian Debian, Ubuntu, Linux Mint,Knoppix,MEPlS,sidux, CrunchBangLinux,Google ChromeOs,ChromiumOs
基于 RedHat Red Hat Enterprise Linux, Fedora, CentOs, Scientific Linux, OraclLinuX
基于 Mandriva Mandriva Linux,PCLinuxOS,Unity Linux, Mageia
基于 Gentoo Gentoo Linux,Sabayon Linux, Calculate Linux, Funtoo Linux
基于 Slackware Slackware,Zenwalk,VectorLinux
其它 SUSE, openEuler, Arch Linux, Puppy Linux, Damn Small Linux,MeeGo,Slitaz,Tizen,OpenAnolis,StartOS

Slackware和Debian是最早期的两个发行版,创建于1993年。

Debian的后代分支比较庞大。除了Debian本身之外,这个分支的主要代表还有Ubuntu(构建在Debian之上)、LinuxMint(构建在Ubuntu之上)、Kali Linux。

Redhat,也就是大家很熟悉的红帽系列。它的主要发行版是Red Hat Enterprise Linux(RHEL),针对企业客户。

CentOS是RHEL源代码再编译的产物,修正了不少Bug,稳定性更强。

除了RHEL之外,Redhat还向社区提供另一个免费发行版,即Fedora。

这些发行版的具体关系和发布时间,如下图所示:

 

 

posted on   愿天下没有难编的程  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示