草庐IT

OpenHarmony3.1 Release版本特性解析——硬件资源池化架构介绍

openharmony 2023-03-28 原文
李刚
OpenHarmony 分布式硬件管理 SIG 成员
华为技术有限公司分布式硬件专家

 

OpenHarmony 作为面向全场景、全连接、全智能时代的分布式操作系统,通过将各类不同终端设备的能力进行整合,实现硬件互助、资源共享,为用户提供流畅的全场景体验。

 

本期,我们通过介绍 OpenHarmony 的硬件资源池化框架,为大家揭晓 OpenHarmony 是如何实现多设备协同的。

 

一、硬件资源访问的演进


硬件资源访问是多设备进行协同的关键。OpenHarmony 发展至今,硬件资源访问经历了从“一对一”到“一对多”的演进过程。

 

1.1 一对一


在设计初期,为解决两台设备间的协同问题,我们通过系统提供的分布式设备虚拟化平台将两台设备的硬件资源进行融合,实现了“一对一”的硬件资源访问。

 

图 1 “一对一”的硬件资源访问模型

应用通过集成多设备虚拟化 Kit,对设备虚拟化平台进行访问。设备虚拟化平台提供设备 A 和设备 B 之间的数据交互以及设备的虚拟化能力,进而完成设备 A 的应用访问设备 B 的硬件能力,实现“一对一”的硬件资源访问。这种访问模型可以基本满足两个设备之间的资源访问,但是同时也存在一定的掣肘:

 

第一点是应用需要集成多设备虚拟化 Kit 包才能完成硬件资源的访问,增加了开发工作量。


第二点是该访问模型限制了设备 A 的应用在同一时刻只能访问设备 B 的硬件能力,即只能完成“一对一”的硬件资源访问。


1.2 一对多


随着全场景智慧生活的不断深入,“一对一”的设备硬件资源访问方式已不能满足某些复杂场景的业务需求。

 

OpenHarmony 对分布式技术不断探索与创新,通过增强原来的分布式设备虚拟化能力,将多台设备的各种硬件资源,如屏幕、相机、扩音器、键盘、传感器及存储器等予以抽象,形成“超级虚拟终端”内的统一硬件资源池,并支持硬件资源的按需分配和重新组合,真正实现了硬件资源的全局调用。应用需要使用哪种分布式的硬件能力,只需要访问对应的服务,不再需要集成 Kit;并且由硬件资源池提供的多种硬件资源可以同时被不同的应用访问,实现“一对多”的硬件资源访问。

 

图 2 “一对多”的硬件资源访问模型

基于“硬件资源池化”,开发者可以根据不同的业务场景,在硬件资源池内选择并匹配合适的能力模块,充分发挥不同设备的能力优势,从而构建全新的用户体验。

 

二、硬件资源池化框架


基于“硬件资源池化”的创新理念,OpenHarmony 融合硬件虚拟化、硬件资源管理及硬件数据管理等能力,构建了硬件资源池化框架,对外提供了统一的硬件能力开放接口,让开发者轻松实现应用开发。如图 3 所示,硬件资源池化框架将各类设备的硬件资源进行抽象,为北向应用提供各种分布式服务,比如分布式相机、分布式屏幕、分布式音频和分布式输入等,同时提供统一的设备管理和分布式硬件框架对硬件资源进行管理。

 

图 3 硬件资源池化框架

下面为大家介绍硬件资源池化框架的各个组成部分。

 

2.1 设备管理(DeviceManager)


该组件在 OpenHarmony 系统中提供与帐号无关的分布式设备的认证组网能力,并为开发者提供了一套用于分布式设备发现和认证的接口,如图 4 所示。当前支持同时管理的设备数量最大规格为 20 个设备。

 

图 4 设备管理组件

详细信息请参考设备管理的代码仓:

https://gitee.com/openharmony/device_manager


2.2 分布式硬件框架(DistributedHardwareFwk)


该组件为硬件资源池化提供信息管理能力,其主要能力包括接入管理、能力查询、状态管理、权限管理以及版本管理等。

 

详细信息请参考分布式硬件框架的代码仓:https://gitee.com/openharmony/distributed_hardware_fwk


2.3 分布式相机(Distributed Camera)


该组件提供跨设备相机访问的能力,将其他终端的设备的相机硬件能力进行抽象,作为硬件资源池中的相机能力提供给其他设备调用。

 

详细信息请参考分布式相机的代码仓:https://gitee.com/openharmony/distributed_camera


2.4 分布式屏幕(Distributed Screen)


该组件提供跨设备屏幕能力调用,为 OpenHarmony 系统框架提供系统投屏、屏幕镜像、屏幕分割等能力的实现。

 

详细信息请参考分布式屏幕的代码仓:https://gitee.com/openharmony/distributed_screen


三、后续规划


除了分布式相机和分布式屏幕外,硬件资源池化框架在后续版本还将提供分布式音频和分布式输入能力。分布式音频将提供对麦克风、喇叭、听筒等音频设备的硬件资源池化能力,通过音频服务提供给应用开发者,使得开发者能够自由选择、切换、组合音频设备,提升用户的使用体验。分布式输入将提供对键盘、鼠标等输入设备的硬件资源池化能力,通过输入服务让应用开发者能跨设备调用输入能力,实现多设备协同。

 

硬件资源池化框架仍在建设中,期待广大开发者共同加入我们,共同见证万物互联时代的无限可能!

 

 

有关OpenHarmony3.1 Release版本特性解析——硬件资源池化架构介绍的更多相关文章

  1. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  4. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  5. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  6. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  7. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  8. ruby-on-rails - 我更新了 ruby​​ gems,现在到处都收到解析树错误和弃用警告! - 2

    简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und

  9. ruby-on-rails - 如何在发布新的 Ruby 或 Rails 版本时收到通知? - 2

    有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:

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

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

随机推荐