草庐IT

『HarmonyOS』万物互联,分布式操作系统

starry陆离 2023-05-20 原文

👨‍🎓作者简介:一位喜欢写作,计科专业大二菜鸟

🏡个人主页:starry陆离

🕒首发日期:2022年7月5日星期二

🌌上期文章:『首期文章』

📚订阅专栏:『HarmonyOS』
如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

『HarmonyOS』万物互联,分布式操作系统

1.产生背景

2019年5月15日,美国商务部宣布,把华为及70家关联企业列入期所谓的 “实体清单”,随后美国的“实体清单”不断扩容,体现了美国对中国高科技企业的限制升级,科技再次成为中美博弈的核心领域。

​ 作为中国科技领域的头部企业,华为首当其冲。海思(华为旗下的芯片企业 受到严重限制。除此之外,软件技术也同样受到限制——谷歌已暂停与华为的部分合作,包括软件和技术服务的转让。华为在国外市场面临着升级Android版本、搭载谷歌服务等方面的困境。

​ 因此,在这个背景下,除了加大海思的研发投入之外,华为也向世人公布了自己的秘密武器——HarmonyOS。正如“鸿蒙”的寓意,意味着HarmonyOS将会开启一个开天辟地的时代

芯片与操作系统

  • 2020年12月16日,华为发布了HarmonyOS 2.0手机开发者Beta版本,这意味着HarmonyOS能够覆盖手机应用场景。
  • 2021年6月2日,华为发布HarmonyOS 2正式版,将支持超过百款手机、平板和智慧屏设备升级HarmonyOS 2。
  • 2021年10月22日,华为发布HarmonyOS 3.0 Beta版,不久将发布HarmonyOS 3正式版。

2.系统定位

HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。

​ 

2.1什么是分布式

分布式系统是建立在网络之上的软件系统,拥有软件特性,所以分布式系统具有高度内聚性,和透明性。

2.2什么是操作系统

常见操作系统:Windows 、Dos、MacOS、Linux、Unix(现代操作系统的基石)、Android(宏内核)、Harmony OS(微内核)

操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个用户与系统交互操作的界面

操作系统的功能(作用)

操作系统主要包括以下几个方面的功能 :

  • 处理器管理:处理器的调度、 分配和回收等。
  • 存储器管理:存储分配、存储共享、存储保护 、存储扩张。
  • 设备管理:设备分配、设备传输控制 、设备独立性。
  • 文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护。
  • 作业管理:负责处理用户提交的任何要求。

宏内核与微内核的区别

3.系统特征

对用户:硬件互助,资源共享

对开发人员:一次开发,多端部署统一OS,弹性部署,采用了组件化的设计方案

HarmonyOS提供了支持多种开发语言的API,供开发者进行应用开发。支持的开发语言包括Java、XML(Extensible Markup Language)、C/C++ 、 JS(JavaScript)、CSS(Cascading Style Sheets)和HML(HarmonyOS Markup Language)。

4.技术架构

HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层

系统功能按照“系统 > 子系统 > 功能/模块”逐级展开

5.优势(HarmonyOS与Android的区别与联系)

  • 系统定位:HarmonyOS是适配多终端的分布式的操作系统,而Android系统是基于Linux内核的操作系统,主要面向手机端

  • 内核对比:HarmonyOS基于微内核,稳定性高;Android基于宏内核,系统不那么稳定

  • 运行对比:Android应用使用Java开发,不能与底层操作系统直接通信;HarmonyOS支持JS、Java、eTS等多代码开发,通过方舟编译器可以与底层操作系统直接通信

6.OpenHarmony、HarmonyOS与鸿蒙生态

OpenHarmony:开源项目,由开放原子开源基金会(http://www.openatom.org/)进行管理。OpenHarmony是HarmonyOS的基石。

HarmonyOS:就是鸿蒙操作系统,简称鸿蒙OS,是基于OpenHarmony、AOSP(Android Open Source Project,安卓开放源代码项目)等开源项目的商用版本(不是开源项目)

鸿蒙生态:鸿蒙生态包括OpenHarmony和HarmonyOS,当然还包括开发工具以及周边的一些开发库。我们在说鸿蒙的时候,一般是指鸿蒙生态。

有关『HarmonyOS』万物互联,分布式操作系统的更多相关文章

  1. ruby - 分布式事务和队列,ruby,erlang,scala - 2

    我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和

  2. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  3. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  4. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  5. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  6. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

  7. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  8. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

  9. ruby - 在 Ruby 中是否有一种惯用的方法来操作 2 个数组? - 2

    a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],

  10. ruby-on-rails - 如何让 Rails View 返回其关联的操作名称? - 2

    我有一个非常简单的Controller来管理我的Rails应用程序中的静态页面:classPagesController我怎样才能让View模板返回它自己的名字,这样我就可以做这样的事情:#pricing.html.erb#-->"Pricing"感谢您的帮助。 最佳答案 4.3RoutingParametersTheparamshashwillalwayscontainthe:controllerand:actionkeys,butyoushouldusethemethodscontroller_nameandaction_nam

随机推荐