最近在写一个Android、IOS、Fuchsia、HarmonyOS对比的报告,需要了解一下各操作系统的起源联系以及内核的对比,因此有了这个文章总结(算是学习笔记吧)。
我们都知道,操作系统自20世纪50年代诞生。操作系统诞生后经历了从专用操作系统(每个主机与应用场景均需要一个新的操作系统)到通用操作系统(一个操作系统覆盖很多设备与应用场景,如Windows、Linux等)的转变。
Windows
操作系统的广泛应用部署,微软于20世纪90年代成为全球市值最高的公司;macOS
也支撑苹果一度成为全球最赚钱的科技公司。Linux
操作系统又逐步在服务器等场景占据主体地位。IOS
支撑苹果成为全球市值最高的科技公司;Android
公司,并通过持续不断的研发投入与快速迭代,如今已将Android操作系统打造成世界上发行量最大的移动智能操作系统。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
(通用汽车公司和北美航空输入/输出系统)诞生。1964年
,美国IBM公司发布了通用操作系统IBM System/360
。1964年
,通用电气和麻省理工学院联合发起了Multics项目
,目标是设计与实现一套多用户、多任务、多层次的操作系统。1969年
,曾参与Multics项目的贝尔实验室员工Ken Tompson和Dennis Ritchie基于汇编语言开发出了UNIX操作系统
,并在1973年采用C语言重写了UNIX。1987年
,荷兰自由大学Andrew S.Tanenbaum教授开源了用于教学的Minx操作系统
(采用微内核架构)。1991年
,芬兰程序员Linus Torvalds发布了Linux操作系统
。2001年
,苹果公司发布了Mac OS X 操作系统
。Darwin
在实现上,以FreeBSD源代码
和Mach微内核
为基础,采用混合内核架构,由苹果公司和独立研发;Mach
是第一代微内核的代表,1975年Mach起源于罗彻斯特大学
,后来主要在卡内基梅隆大学
开发,由Avie Tevanian
和Richard Rashid
主导。Mach刚刚开始设计时,UNIX的发展正如日中天,所以Mach在设计时的一大目标就是兼容UNIX,但是与UNIX不同的是Mach尝试使用微内核架构
设计,Mach以IPC
作为所有系统服务与内核交换数据的基础,充分运用IPC、虚拟内存、多进程等特性将冗余的系统服务移出内核作为进程运行。有兴趣的朋友可以研究一下Minix。
Minix
采用微内核
架构,第一个版本于1987年发布,是荷兰计算机科学家Andrew S. Tanenbaum
为了教学而创作,如今为Andrew S. Tanenbaum
教授所著《操作系统:设计与实现》
的示例代码。
Minix
启发了Linux内核
的创作。1990年,还在上大学的Linus Torvalds
从Minix
得到灵感,出于对操作系统的兴趣,于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
大数据作为2019年比较热门的技术,受到越来越多的关注,那么对于一个想进入大数据的朋友来说,最想知道的是:大数据学什么?大数据技术体系太庞杂了,基础技术覆盖数据采集、数据预处理、分布式存储、NOSQL数据库、多模式计算(批处理、在线处理、实时流处理、内存处理)、多模态计算(图像、文本、视频、音频)、数据仓库、数据挖掘、机器学习、人工智能、深度学习、并行计算、可视化等各种技术范畴和不同的层面...
本期我们通过分析某招聘网站发布的python相关工作招聘信息数据,进行以下几个方面的分析:全国哪些城市岗位数量比较多、哪些公司薪资待遇比较好、哪些岗位需求量比较大、普遍工资分布情况等等
Android KeyStore系统允许你存储加密密钥,keystore也分为多种。如果是”AndroidKeyStore”这种类型的话,keystore难以从设备中导出,并且可以指明key的使用规则,例如只有用户验证后,才可以使用key等。但如果是bks这种的话,就比较容易导出。稍后会解释两种的区别。下面主要是讲AndroidKeyStore这种keystore。 防止导出的方法:Key ma
小友VUI SDK 初探一、什么是VUI二、GUI的局限三、VUI的典型应用场景四、小友VUI SDK4.1 小友VUI SDK解决方案4.2 小友VUI SDK能力形态五、示例5.1基础功能5.2 高级功能六、传送门一、什么是VUIVUI是Voice User Interface的缩写,通过语音交互的界面。与传统GUI最大的区别是从眼手配合完成交互改变为耳嘴(听说)配合完成交互。为什么我们...
2019独角兽企业重金招聘Python工程师标准>>> ...
中国剩余定理”算理及其应用: 为什么这样解呢?因为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三个数去除,用其它的数去
通过阅读本文你可以学习如何有效地使用 CString。 CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。 使用CString可以让你对字符串的操作更加直截了当。这篇文章不是 CString 的完
详细解说 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....
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心! 最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学...
这将是一个很有意义的博客,一个很长的博客。我一直非常喜欢计算机编程,而且还经常把自己的ThinkPad搞得乱七八糟,重装过无数次系统,有时我还妄想自己要编一个操作系统,不过愿望马上就要实现了,几十天后,我们将编一个独一无二的操作系统。day1开始!主机配置:ThinkPad E480windows10 1909 专业版8G内存Intel core i5准备工具:HexFiend
我有Spring Redis使用spring-data-redis工作,所有默认配置都喜欢localhost默认端口,依此类推.现在我尝试通过在application.properties文件中配置它来进行相同的配置.但我无法弄清楚我应该如何创建完全符合我的属性值的bean.Redis配置文件@[email protected] class Spr...
1 oracle multitenant optionPDB(插入式数据库) CDB(容器数据库,负责管理和运行PDB)2 resource manager resource manager现在在以在CDB和PDB级别下进行管理资源,可以创建一个CDB resource plan是分配给了整个CDB或者个体的PDB,3 full transportable exp/impf