一文了解 操作系统发展史_bjxiaxueliang的博客-程序员秘密_操作系统发展史

技术标签: 操作系统发展史  操作系统  互联网随笔  

最近在写一个Android、IOS、Fuchsia、HarmonyOS对比的报告,需要了解一下各操作系统的起源联系以及内核的对比,因此有了这个文章总结(算是学习笔记吧)。

一、各历史阶段的操作系统

我们都知道,操作系统自20世纪50年代诞生。操作系统诞生后经历了从专用操作系统(每个主机与应用场景均需要一个新的操作系统)到通用操作系统(一个操作系统覆盖很多设备与应用场景,如Windows、Linux等)的转变。

  • PC时代
    由于Windows操作系统的广泛应用部署,微软于20世纪90年代成为全球市值最高的公司;
    苹果研制的macOS也支撑苹果一度成为全球最赚钱的科技公司。
  • 数据中心时代
    在IBM、Intel等企业的支持下,Linux操作系统又逐步在服务器等场景占据主体地位。
  • 移动互联网时代
    苹果基于NEXTSTEP操作系统构筑的IOS支撑苹果成为全球市值最高的科技公司;
    谷歌2005年收购了Andy Rubin 在2003年创立的Android公司,并通过持续不断的研发投入与快速迭代,如今已将Android操作系统打造成世界上发行量最大的移动智能操作系统。
    Statcounter数据截至2021年4月,全球移动操作系统中,谷歌Android占比72.2%,苹果IOS占比26.99%其余平台占比之和低于1%
  • 物联网快速发展的时代
    当前越来越多的智能设备接入互联网,智能终端逐渐呈现多样化发展趋势,加之第五代移动通信技术网络的建成商用,更是提供了大连接、低延时、高吞吐的基础网络能力,万物互联的物联网时代到来趋势已势不可挡。
    随着物联网时代的到来,覆盖全场景的单一操作系统已经很难适配多样化终端设备不同硬件能力、不同应用场景、不同运算能力的需求。目前,谷歌、华为等各大企业纷纷在物联网操作系统方面重兵投入:
    谷歌从2016年开始投入基于微内核的Fuchsia操作系统,应用场景上希望适用于个人移动设备、IoT(Internet of Things 物联网)设备甚至无人驾驶汽车等不同运算能力和需求的场景。
    华为于2019发布了基于物联网的鸿蒙操作系统HarmonyOS,透露HarmonyOS采用微内核架构,天生具备模块化解耦优势,可针对不同硬件能力的物联网设备进行模块剪裁,从而实现弹性部署,并已于2020年面向128KB-128MB内存的物联网终端设备开源。

Statcounter2021年4月数据,全球桌面操作系统与移动操作系统市场占比中,Android以40.66%超过Windows,成为第一大操作系统。

全球操作系统市场占比

二、操作系统的发展史

  • 1946年2月14日世界上公认的第一台通用计算机ENIAC在美国宾夕法尼亚大学诞生。
    在这时候,如何管理计算机上的程序也逐步成为一个非常重要的问题。早期的计算机采用纸带的方式记录要计算的任务,并通过打孔的纸带或磁盘记录输出的结果。这样就需要一个专门的操作员值守在计算机旁边,并且操作的效率也不高。因此,人民开始关注如何能使这一过程自动化。
  • 1956年,世界上第一个公认的批处理操作系统 GM-NAA I/O(通用汽车公司和北美航空输入/输出系统)诞生。
    GM-NAA I/O由Robert L.Patrick和Owen Mock在IBM 704上实现。GM-NAA I/O实现的主要是对输入和输出的自动化管理:操作员只要将相关的任务交给GM-NAA I/O,计算机就会一直工作直到所有任务执行结束。
  • 1964年,美国IBM公司发布了通用操作系统IBM System/360
    通过定义指令集,将计算机的架构与实现分开,从而在一套架构上可以实现多代计算机,并且允许使用者通过自定义的架构去扩展外设;由于指令集与具体实现的分离,IBM System/360的成功也标志着操作系统从面向每种计算机进行定制开发转变为与计算机底层硬件实现解耦。自此,操作系统开始进入通用操作系统时代。
  • 1964年,通用电气和麻省理工学院联合发起了Multics项目,目标是设计与实现一套多用户、多任务、多层次的操作系统。
    贝尔实验室于1964年加入了Multics这个项目中,但后来由于Multics项目的复杂性导致项目的的工作进度缓慢,1969年贝尔实验室退出了Multics项目。Multics项目也因进度缓慢,资金短缺,宣告失败。
  • 1969年,曾参与Multics项目的贝尔实验室员工Ken Tompson和Dennis Ritchie基于汇编语言开发出了UNIX操作系统,并在1973年采用C语言重写了UNIX。
    由于UNIX系统版权复杂且收费,错过了发展的黄金时机,导致了其在后续的操作系统竞争中并未占据主导地位。
  • 1987年,荷兰自由大学Andrew S.Tanenbaum教授开源了用于教学的Minx操作系统(采用微内核架构)。
    由于UNIX版权的限制(AT&T在Version 7 Unix 推出之后,将 UNIX 源代码私有化,禁止在教学中使用 UNIX 源代码),为了方便教学Andrew S.Tanenbaum教授参考UNIX的设计,开发了名为Minx(即小型的UNIX)的操作系统,并将全部源代码开放给大学教学和研究工作。但由于Minx发布之初对商业化很不友好(禁止商业使用),因此并未被广泛使用。
  • 1991年,芬兰程序员Linus Torvalds发布了Linux操作系统
    Linux在设计上参考了Minx操作系统,如今已成为目前世界上最成功的、使用最广泛的开源操作系统之一。
  • 2001年,苹果公司发布了Mac OS X 操作系统
    Mac OS X 的核心操作系统为 Darwin,是一种类Unix的操作系统。Darwin在实现上,以FreeBSD源代码Mach微内核为基础,采用混合内核架构,由苹果公司和独立研发;
    Mach是第一代微内核的代表,1975年Mach起源于罗彻斯特大学,后来主要在卡内基梅隆大学开发,由Avie TevanianRichard Rashid主导。Mach刚刚开始设计时,UNIX的发展正如日中天,所以Mach在设计时的一大目标就是兼容UNIX,但是与UNIX不同的是Mach尝试使用微内核架构设计,Mach以IPC作为所有系统服务与内核交换数据的基础,充分运用IPC、虚拟内存、多进程等特性将冗余的系统服务移出内核作为进程运行。

三、Minix

有兴趣的朋友可以研究一下Minix。
Minix采用微内核架构,第一个版本于1987年发布,是荷兰计算机科学家Andrew S. Tanenbaum为了教学而创作,如今为Andrew S. Tanenbaum教授所著《操作系统:设计与实现》的示例代码。
Minix启发了Linux内核的创作。1990年,还在上大学的Linus TorvaldsMinix得到灵感,出于对操作系统的兴趣,于1991年发布了Linux。

Minix目前有三个主要的版本:

参考:

《现代操作系统原理与实现》陈海波 夏虞斌

StatCounter Global Stats:
http://gsa.statcounter.com/

Linux和UNIX的关系及区别:
http://c.biancheng.net/view/707.html

Unix/Linux/BSD 关系及介绍:
https://blog.csdn.net/liaowenxiong/article/details/116082478

Linux、Mac OS由来与区别:
https://blog.csdn.net/zaishuiyifangxym/article/details/89202623

========== THE END ==========

欢迎关注我的公众号

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aiwusheng/article/details/119802278

智能推荐

大数据要学习什么知识?大数据学习的内容有哪些?_大数据技术主要学什么_✾ ͡冷೨夏ʚɞ͜✿的博客-程序员秘密

大数据作为2019年比较热门的技术,受到越来越多的关注,那么对于一个想进入大数据的朋友来说,最想知道的是:大数据学什么?大数据技术体系太庞杂了,基础技术覆盖数据采集、数据预处理、分布式存储、NOSQL数据库、多模式计算(批处理、在线处理、实时流处理、内存处理)、多模态计算(图像、文本、视频、音频)、数据仓库、数据挖掘、机器学习、人工智能、深度学习、并行计算、可视化等各种技术范畴和不同的层面...

Pandas+Pyecharts | 招聘信息数据可视化_基于python的招聘信息可视化分析系统的参考文献_Python当打之年的博客-程序员秘密

本期我们通过分析某招聘网站发布的python相关工作招聘信息数据,进行以下几个方面的分析:全国哪些城市岗位数量比较多、哪些公司薪资待遇比较好、哪些岗位需求量比较大、普遍工资分布情况等等

Android KeyStore + FingerprintManager 存储密码_写Android的媛运气不会太差的博客-程序员秘密

Android KeyStore系统允许你存储加密密钥,keystore也分为多种。如果是”AndroidKeyStore”这种类型的话,keystore难以从设备中导出,并且可以指明key的使用规则,例如只有用户验证后,才可以使用key等。但如果是bks这种的话,就比较容易导出。稍后会解释两种的区别。下面主要是讲AndroidKeyStore这种keystore。 防止导出的方法:Key ma

小友VUI SDK 初探_jiangzhenya111的博客-程序员秘密

小友VUI SDK 初探一、什么是VUI二、GUI的局限三、VUI的典型应用场景四、小友VUI SDK4.1 小友VUI SDK解决方案4.2 小友VUI SDK能力形态五、示例5.1基础功能5.2 高级功能六、传送门一、什么是VUIVUI是Voice User Interface的缩写,通过语音交互的界面。与传统GUI最大的区别是从眼手配合完成交互改变为耳嘴(听说)配合完成交互。为什么我们...

中国剩余定理_zyang008的博客-程序员秘密

中国剩余定理”算理及其应用:  为什么这样解呢?因为70是5和7的公倍数,且除以3余1。21是3和7的公倍数,且除以5余1。15是3和5的公倍数,且除以7余1。(任何一个一次同余式组,只要根据这个规律求出那几个关键数字,那么这个一次同余式组就不难解出了。)把70、21、15这三个数分别乘以它们的余数,再把三个积加起来是233,符合题意,但不是最小,而105又是3、5、7的最小公倍数,去掉105的倍数,剩下的差就是最小的一个答案。用歌诀解题容易记忆,但有它的局限性,只能限于用3、5、7三个数去除,用其它的数去

随便推点

MFC CString 操作指南_mfc cstring %10s_B_H_L的博客-程序员秘密

通过阅读本文你可以学习如何有效地使用 CString。   CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。   使用CString可以让你对字符串的操作更加直截了当。这篇文章不是 CString 的完

[转载]详细解说STL排序(sort)------这篇博文在一道题上救了我o_0_weixin_30448603的博客-程序员秘密

详细解说 STL 排序(Sort)作者Winter原文地址:http://www.cppblog.com/mzty/archive/2005/12/15/1770.html详细解说 STL 排序(Sort)0 前言: STL,为什么你必须掌握1 STL提供的Sort 算法1.1 所有sort算法介绍1.2 sort 中的比较函数1....

C#处理JSON数据_啊拉丁的鱼的博客-程序员秘密

每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心!   最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学...

自制操作系统--lelo OS (基于OSASK)day1-hello,world!_Assualt的博客-程序员秘密

这将是一个很有意义的博客,一个很长的博客。我一直非常喜欢计算机编程,而且还经常把自己的ThinkPad搞得乱七八糟,重装过无数次系统,有时我还妄想自己要编一个操作系统,不过愿望马上就要实现了,几十天后,我们将编一个独一无二的操作系统。day1开始!主机配置:ThinkPad E480windows10 1909 专业版8G内存Intel core i5准备工具:HexFiend

java redis读取文件夹_java – Spring Redis – 从application.properties文件中读取配置..._未眠-1031的博客-程序员秘密

我有Spring Redis使用spring-data-redis工作,所有默认配置都喜欢localhost默认端口,依此类推.现在我尝试通过在application.properties文件中配置它来进行相同的配置.但我无法弄清楚我应该如何创建完全符合我的属性值的bean.Redis配置文件@[email protected] class Spr...

oracle 12c新功能_mysql-龙召的博客-程序员秘密

1 oracle multitenant optionPDB(插入式数据库) CDB(容器数据库,负责管理和运行PDB)2 resource manager resource manager现在在以在CDB和PDB级别下进行管理资源,可以创建一个CDB resource plan是分配给了整个CDB或者个体的PDB,3 full transportable exp/impf

推荐文章

热门文章

相关标签