操作系统概念的演进和变革
本文由田俊豪整理自朱老师“HarmonyOS工作原理解析”课程第“操作系统概念的演进和变革”节,结合本人理解并丰富。希望观看视频版可以点击:https://edu.51cto.com/center/course/lesson/index?id=637573
HarmonyOS工作原理解析
了解鸿蒙系统之前,我们应该了解一下操作系统的演进以及向关概念,以此来对比鸿蒙有哪些技术特性以帮助自己更好的了解鸿蒙操作系统。
操作系统
操作系统这个词语对于一般的人来说立刻浮现在脑海的就是windows操作系统,但其实操作系统的种类还有很多,例如工业界使用最多的linux操作系统,以及单片机领域使用的RTOS实时操作系统。。。等等,他们处于不同的领域,使用的平台也有很大的差异,但是它们都属于操作系统,都负责管理我们的硬件资源。
说了那么多,相信你一定会有一个疑问。操作系统是干什么的,操作系统是如何产生的,我们为什么需要操作系统。
1. 操作系统是干嘛的
普适的操作系统
操作系统是产品设计制造者设计给产品使用者操作产品的接口,就以下图所示的汽车为例来说吧
从之前的手扶式拖拉机到方向盘式汽车最后新概念式的全自动驾驶汽车,我们可以很容易的看出随着时代的发展,汽车的操作方式也发生了很大的变化,使我们的操作变得更加方便。从本质来讲它们都属于同一类是设备,他们都给我们预留了对它进行操作的接口,但是由于不同的产品对系统的实现方式不同,所以达到了不同的使用效果。
操作系统会屏蔽和保护产品内部实现细节,给外部统一接口,从上面的例子可以看出对于不同的产品,有些我们已经很难看出他具体的控制方式,具体的原理、细节已经对我们进行了屏蔽,只是预留了我们操作的接口。作为使用者,我们只需要去学习如何操作,不惜要过多的关注内部的实现细节。讲到这里,我觉得这点更像我们高级语言中的一些函数库。只要知道函数能实现什么样的功能,不必关心是如何实现的,这样就大大加快了项目开发的进度,提升了使用体验。
随时代变迁,操作系统的接口也会发生变化,从手扶拖拉机到全自动驾驶汽车,我们操作方式产生的很大的区别,但是产品的功能却没有很大的改变,这是由于技术的提升,我们可以以更加符合人性化的操作方式来与人进行交互,系统是要紧跟时代的,这也正是大家对鸿蒙操作系统寄予厚望的原因之一,因为它瞄准的是下一个时代,万物互联的时代。
随着时代的变迁,操作系统的难点和竞争点也会发生变化。
软件行业的操作系统是干嘛的
以上仅仅是在普适行业的操作系统,在我们接触最多的软件行业,操作系统有更加具体的描述。
软件操作系统是硬件厂商给纯软件厂商提供的操作系统的接口, 这是由于时代的发展,各个产业精细化分工的结果,硬件厂商负责硬件以及操作系统,提供给软件厂商一些调用硬件的接口,他们各自负责自己的事物,并进行创新。会产生更多有趣的应用。但是在早期,以手机为例,软硬件式一体开发的,就没有操作系统的概念,或者来说我们并不关心我们使用的手机使用的什么样的操作系统,因为产品是由手机厂商一体化开发的,并没有给我们开发者提供二次开发的接口,我们是直接去使用,所以了解他用的什么操作系统对我们 并没有什么帮助。但是随着时代的发展,计算机硬件资源(算力、内存、IO等)能力的提升,计算机系统也变得非常庞大,整个产品开发变为了硬件开发、系统及软件开发、应用级开发三大模块。而系统级软件就是我们常讲的操作系统,他是硬件与应用软件相连接的重要组成部分。操作系统将整个硬件资源标准化封装,给外部应用级别的软件调用。
操作系统是怎么产生的
最初是没有操作系统的概念的,例如大家都知道的8位机(51单片机)时代,计算机硬件资源较少,能够做出的产品的功能也较单一,我们是直接裸机编程就能实现自己的功能,这样开发所有的代码都要程序员自己编写,开发难度大,周期长,但是很多代码都是前辈们编写过的,会有很多重复劳动。我们知道现在工程师在工作中大部分代码都是不需要自己写的,这其中就牵涉到一个很重要的概念——代码复用,代码复用解决了重复造轮子,为了实现代码复用,逐渐发展出了各种函数库。又为了更容易实现多任务编程就又出现了RTOS,现在这些我们的以STM32为代表的单片机中还经常被使用,有进一步为了实现多用户动态装载应用出现的标准操作系统,最为代表的就是Android 和 iOS 操作系统。
我们为什么需要操作系统
了解了以上那么多,其实大家应该都大概已经知道了我们为什么需要操作系统了。接下来说明一下操作系统在不同领域带给我们的价值。
技术上,这也是我们工程师最需要关心的问题,操作系统能够降低我们开发的难度,屏蔽无关紧要的细节,降低开发难度,这听起来就让人兴奋,作为应用及开发者,如果没有操作系统,我们就需要去了解硬件,进行编写硬件驱动等等一系列枯燥并且难度很大的工作,但是现在我们可以很轻松的通过操作系统提供给我们的接口,轻松的调用传感器,摄像头等等一系列设备。专注于自己应用级的开发。简化了工作又降低了工程师的门槛。代码复用,减少劳动。功能模块化,这些想必大家都能理解。操作系统还有一个优点就是高内聚,低耦合,做过开发的都知道,高内聚,低耦合一直是我们追求的目标,模块仅负责自己的功能,降低模块之间的联系,这样会降低很多开发上的麻烦。
商业上,商业上的好处根本还是技术上带来的,模块化分工便于业务分离,形成上下游不同的厂商,现在的产业链是全球分工,每个厂商专注于自己负责的部分,提高了效率,同时也激活了产品和业务模式的创新,例如阿里和腾讯。都是软件公司,不涉及硬件部分,只负责软件,并且是应用级别的开发,诞生了支付宝和微信这样成功的应用。