基于webkit内核webos系统架构(一)

2023-11-04

转自:http://blog.csdn.net/huryjiang/article/details/7556167

引言

WebOSWeb-based Operating System)或者我们称为网络操作系统是一种基于浏览器的虚拟的操作系统,用户通过浏览器可以在这个WebOS上进行应用程序的操作,而这个应用程序也不是普通的应用程序,是网络的应用程序。

WebOS提供面向网络的操作系统服务,包括:网络资源寻址、全球名称空间、远程执行程序(在客户端执行服务器程序)、资源管理、认证与安全。

WebOS支持丰富的网络操作,比如:网页浏览、RSS阅读甚至直接支持一些Web API,提供集中的、全面的(涉及到方方面面的基础网络应用)、友好的(便于使用)Web资源访问能力,是一组网络功能的集合。表现上可以是一个软件包,安装这个软件,可以方便地使用互联网。

随着网络带宽的增加,网络传输速度不断提升,使WebOS的诞生成为可能。大家可以想像一下未来:我们只需要在硬件上安装浏览器软件,便可在任何接通网络的电脑上使用自己熟悉的操作系统。虽然WebOS不会替代现行的操作系统,但是它给予人们工作很大的可移动性与跨平台性,相信WebOS一定会得到长足发展。

系统特点简介

WebOS作为基于浏览器技术的多任务操作系统,它以webkit作为UI处理的核心,并在其基础上扩充了丰富的本地功能,通过javascript可访问这些本地功能,这使得本地应用、网页浏览、WEB应用三者的运行环境能统一起来。本地应用采用htmljavascriptCSS开发,配合操作系统提供的数量众多、功能强大的控件,能有效降低应用的开发难度和缩短开发时间。它的多任务机制使得用户可同时运行多个应用,用户可以在多个应用间切换、自由操作,有助于提升用户体验。添加手势功能很适合在小屏幕手机或平板电脑上用户对应用UI的操作。

总之,WebOS是一款注重用户体验、侧重网络应用的手机操作系统。其特点如下:

Ø  开机快,按下电源到到登录界面只需几秒。

Ø  所有的程序都是基于Web的形式。

Ø  具有自恢复、自动更新功能,一旦当机或是有错误,会自动恢复版本,在运行过程中也会检测版本是否有更新,能自动更新版本。

Ø  提供内外层沙箱机制保障系统安全。

Ø  支持HTML 5标准,支持本地存储。

Ø  多进程的浏览器架构。

Ø  对本地存储数据加密保存。

Ø  支持X86ARM体系结构的处理器。

系统架构

图3.1 WebOS系统架构图

系统从下至上主要由五个部分组成:

Ø  操作系统和驱动,操作系统作为各种应用运行的基础;

Ø  OSAL层是操作系统抽象层,对操作系统提供的API的一层封装层,该层向上层提供一个统一的系统API接口,增强平台的可移植性;

Ø  运行环境和基础库,系统以webkit引擎为核心,提供应用运行的环境,管理应用的启动、运行和终止,通过JS Core扩展应用所需的各种服务,Libraries提供Webkit渲染使用的图形库和graphic库,以及网络连接协议栈等;

Ø  Framework,该层分两个部分,其中主要包含一个Html5的浏览器作为网络应用开发的基础,框架中含有窗口管理、应用管理以及包管理等功能;

Ø  应用层,其中Home是通过web技术实现一个home桌面,提供启动应用功能。系统启动后首先打开一个空白页,在上面添加应用图标,并绑定应用信息和点击事件。

下面我们对系统每个层次,详细说明其内部各模块的作用和功能。

 

3.1 操作系统及抽象层

图3.2 操作系统及抽象层

操作系统和驱动,操作系统可以是LinuxWindows以及MacOS,操作系统作为各种应用运行的基础,理论上说,操作系统内核可以是任意一款支持多进程的操作系统内核均可。

OSAL层是操作系统抽象层,对操作系统的API的进行的一层封装层,该层向上层软件提供一套统一的API接口,以至于下层更换操作系统内核时,不会影响上层软件的实现,上层软件从而能够做到真正的跨操作系统平台。

3.2 运行环境及基础库

图3.3 运行环境及基础库

Webos系统的运行环境以webkit引擎为核心,提供应用运行的环境,管理应用的启动、运行和终止,通过JS Core扩展应用所需的各种服务,对于耗时短的服务直接调用相应函数完成,对于耗时长、不便于在应用平台进程中实现的服务,通过专门的服务进程完成,服务进程和应用平台进程间通过D-BUS交互;Libraries提供Webkit渲染使用的图形库和graphic库,以及网络连接协议栈等。

Ø  Web Core,网页的解析、渲染、历史、下载、缓存等功能

Ø  JS CoreJS解析器

Ø  GTK,向webkit提供基础的图形组件

Ø  Skia,向webkit提供绘图、图片解码以及绘制功能等

Ø  D-BUS,系统各任务间通信

Ø  Sqlite,嵌入式数据库

Ø  Libc,提供基础C函数库,以及一些数据结构函数操作,例如链表等;同时它也是GTK的基础库

Ø  Networking,网络协议栈

3.3 Framework框架层

图3.4 Framework框架

Framework层,是应用的编程框架。应用可以在Framework层之上建立应用程序。该层分两个部分,其中主要包含一个增强型的Html5浏览器引擎作为网络应用开发的基础,其中包括,多进程的管理、历史记录、cookie以及缓存的管理等。框架中另外一部分包含窗口管理、应用管理以及包管理等功能,主要是对系统的事件的响应,窗口的切换,管理系统多个应用的同时运行和并发管理等。

Ø  Process Manager,多进程管理器,为应用启动新的进程等

Ø  Cookie Managercookie的管理

Ø  Cache Manager,缓存的管理

Ø  History Manager,历史的管理,便于窗口的切换,避免窗口的重绘等

Ø  Window Manager,管理窗口的事件响应及焦点切换等工作

Ø  AMS,应用管理,管理应用的生命周期,以及应用的切换

Ø  Package Manager,包管理,应用信息的管理

Ø  View System,扩展的控件系统,便于应用使用集成的控件,统一UI,并减少开发工作量

Ø  Notification Manager,通知管理,通知系统到达的事件,例如小区切换,信号强弱变化,电量等

Ø  Connection Manager,连接管理,管理网络的连接

Ø  Service Manager,服务管理,对系统服务的管理,例如,电话,短信等服务

3.4 应用层

图3.5应用层

应用层,其中Home,是通过web技术实现一个home界面,提供启动应用功能。系统启动后首先打开一个空白页,在上面添加应用图标,并绑定应用信息和点击事件处理函数,当有点击事件时调应用管理的open方法启动应用。

系统设计原理

4.1 系统运行原理

图4.1 系统运行原理图

系统的桌面就是一个浏览器Browser主界面。是通过web技术实现一个hom桌面,提供启动应用功能。实现方法是系统启动后首先打开一个空白页,在上面添加应用图标,并绑定应用信息和做点击事件处理函数,当有点击事件时调应用管理服务器的open方法启动应用。

应用管理器作为系统一个服务进程存在,主要作用是应用生命周期管理和事件的过滤和派发。

Ø  应用管理页面的打开

u  系统启动时可以把home页设置为缺省页,系统启动时首先打开homescreen页面。

Ø  home页面中添加应用信息

u  应用信息放在应用所在目录的appinfo.json文件中,包含如下信息: 

u  -icon:应用图标,在应用管理页面显示。

u  -main:应用的首页名称,相当于应用的入口函数,一般是index.html,必须存在。

u  -id:应用id,必须存在且唯一,用于应用管理。

u  -directory:应用路径。

Ø  绑定点击事件的处理函数

u  通过JS的addEventListener函数实现,例如

u  target.addEventListener(type, handlerFunction);

Ø  点击启动应用

u  在点击应用图标后,事件会传到窗口管理WM服务,WM会将事件继续下发到webview,最终找到实际聚焦的view会调注册的事件处理函数,传入应用id、启动参数,在处理函数参数中根据应用id、启动参数向应用管理器发服务请求启动应用。

Ø  调用服务

u  通过JS Core扩展应用所需的各种服务,系统服务调用采用两种方式:对于耗时短的服务直接调用相应函数完成;对于耗时长、不便于在应用平台进程中实现的服务,通过专门的服务进程完成,服务进程和应用平台进程间通过D-BUS交互。

Ø  对主动上报事件的处理

u  手机中有类事件是由底层设备触发的,需要应用处理,如电话接入。应用这时候可能在运行,也可能还没启动,诸如来电就是这种情况,对于这类事件也可以采用服务机制来处理。应用启动时通过订阅服务的形式注册它感兴趣的事件,当事件到达时,应用管理器把事件发给注册的应用去处理。当应用还没启动时通过应用管理器启动应用,把事件信息作为参数传入。

点击图标启动网络或者本地的应用流程,除了前端事件处理多一些差异外,到了后期和网络应用流程是一致的,当AMSBrowser请求资源后,Browser向本地或者远端发送请求,下载资源,提供给Webkit进行渲染,最终显示在页面中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于webkit内核webos系统架构(一) 的相关文章

随机推荐

  • 历时6个月, 非CS专业的我, 终于在毕业前拿到了谷歌软件工程师offer!

    本文作者 Isabel 本科就读于上海财经 研究生就读于CMU information management相关专业 在来Offer的帮助下成功 转码 入职谷歌 就在离毕业还有一个多月的时候 我收到了来自谷歌的offer 至此 心中的一块大
  • 机器视觉、目标检测常见应用场景

    机器视觉 目标检测常见应用场景 人脸人体检测 智能美肤 在保持皮肤质感的同时 自动对脸部进行匀肤 去瑕疵 痘 痘印 雀斑等 操作 并对全身皮肤进行美白 智能瘦脸 系统自动检测并分析人脸五官特征 生成脸部五官调整瘦脸后的图像 图像人脸融合 图
  • 华为OD机考题目(自动化测试)

    目次 1 求第k长的字串的长度 2 上N阶台阶问题 3 踢出石子问题 1 求第k长的字串的长度 描述 一个字符串只包含大写字母 求其连续相同字母子串中 长度第K长的子串长度 相同字母只取 最长那个子串 例 AAAAHHHBBCDHHHH K
  • SpringBoot集成Hutool 实现数据库数据导出到Excel 功能

    日常开发中 在B端页面上 经常需要将数据库中的数据 导出到Excel 我们今天用Hutool工具包 实现一下这个功能 一 Hutool简介 Hutool是一个功能丰富且易用的Java工具库 通过诸多实用工具类的使用 旨在帮助开发者快速 便捷
  • Lua UnPack函数用法

    这篇文章主要介绍了Lua UnPack函数用法实例 unpack它接受一个数组 table 作为参数 并默认从下标1开始返回数组的所有元素 local info 1 2 3 4 5 6 local a b c d e f unpack in
  • jenkins_svn_maven持续集成

    详解Jenkins svn maven 项目持续集成 第一步 由于刚刚接触jenkins 并不知道他是个什么东西 首先百度一下 然后进入官网 下载安装包 第二步 windows 安装 下载完了 打开里面有2个文件 setup exe Jen
  • JVM内存模型详解

    目录 1 JVM整体架构 2 JVM运行时内存 2 1 PC程序计数器 2 2 虚拟机栈 2 2 1 什么是栈帧 2 2 2 局部变量表 2 2 3 操作数栈 2 2 4 动态链接 2 2 5 方法返回地址 2 3 本地方法栈 2 4 堆
  • LNK1104 无法打开文件 libboost_system-vc142-mt-gd-x64-1_74.lib

    LNK1104 无法打开文件 libboost system vc142 mt gd x64 1 74 lib 问题 解决
  • 【应急响应】挖矿脚本检测指南&威胁情报&样本定性&文件清除&入口修复

    文章目录 挖矿样本 Win Linux 危害 定性 Linux Web安全漏洞导致挖矿事件 Windows 系统口令爆破导致挖矿事件 Linux 个人真实服务器被植入挖矿分析 挖矿样本 Win Linux 危害 定性 危害 CPU拉满 网络
  • vue-admin-beautiful 同时使用Api和MockJs

    根据项目修改接口地址config net config js 此处按自己所需组装 把utils request js复制一份 并重命名为request mock js 把baseURL设置为 vab mock server 使用mock数据
  • print()函数中引号的用法

    首先在开头强调非常重要的一点 在python学习中 默认所有的正确的语法 包括括号 标点符号等都是 英文 print 函数的用法有四种 1 无引号 2 单引号 3 双引号 4 三引号 1 无引号 print 520 没有引号的作用是为了让计
  • ThinkPHP5 三表联合查询

    使用ThinkPHP5 查询构建起进行三表联合查询 account info Db name third party tasks gt alias a gt join third party taskgroups b a taskGroup
  • [4G&5G专题-128]:5G培训关键技术篇-1-5G的网络概述

    作者主页 https blog csdn net HiWangWenBing 本文网址 https blog csdn net HiWangWenBing article details 118459771 目录 第1部分 移动业务需求趋势
  • 超详细html5登录注册页面总结

    一 HTML5简介 HTML是互联网上应用最广泛的标记语言 HTML文件就是普通文本 HTML标记 而不同的HTML标记能表示不同的效果 HTML5优势 HTML5并不是一种革新的的升级 而是一种向规范向习惯的妥协 因此HTML5并不会带给
  • VS开发QT项目,手写按钮槽函数避坑

    VS开发QT项目 手写按钮槽函数避坑 1 QT Creator按钮槽函数 2 VS中添加按钮槽函数 3 踩坑 由于最近开发需要在VS2017上配置QT开发环境 进行QT项目的开发 之前从来没有这样使用过 在此记一些坑 1 QT Creato
  • Android深入浅出之Binder机制

    转自 http www cnblogs com innost archive 2011 01 09 1931456 html Android深入浅出之Binder机制 一 说明 Android系统最常见也是初学者最难搞明白的就是Binder
  • ue4修改缓存路径到项目文件下面

    InstalledDerivedDataBackendGraph Path ENGINEVERSIONAGNOSTICUSERDIR DerivedDataCache EditorOverrideSetting LocalDerivedDa
  • android自动化静态代码分析,使用Android Studio Lint静态分析(一)

    主要内容 使用Android Studio提供的工具 配置Lint扫描范围和检查项 在使用 Lint 改进您的代码文档中 属于手动运行检查 程序静态分析 程序静态分析是指在不运行代码的方式下 通过词法分析 语法分析 控制流 数据流分析等技术
  • 2013年9月5日星期四(8-5,缩放)

    缩放很简单 就是把各个坐标乘以缩放因子即可 这次是一个多边形 int Scale Polygon2D POLYGON2D PTR poly float sx float sy this function scalesthe local co
  • 基于webkit内核webos系统架构(一)

    转自 http blog csdn net huryjiang article details 7556167 1 引言 WebOS Web based Operating System 或者我们称为网络操作系统 是一种基于浏览器的虚拟的操