首页> 中国专利> 多操作系统环境中的对接系统的自动配置

多操作系统环境中的对接系统的自动配置

摘要

一种移动计算设备,具有在不虚拟化的情况下同时并独立地在共享内核上运行移动操作系统和桌面操作系统。该移动操作系统提供适合于移动环境的对于移动计算设备的用户体验。当该移动计算设备对接到第二终端环境时,该桌面操作系统提供完全的桌面用户体验。该移动多计算设备配置该移动操作系统和/或该桌面操作系统以利用对接的第二终端环境。该移动计算设备可以是在修改的安卓内核上运行安卓移动OS和全桌面Linux OS发布的智能电话。

著录项

  • 公开/公告号CN103229156A

    专利类型发明专利

  • 公开/公告日2013-07-31

    原文格式PDF

  • 申请/专利权人 Z124;

    申请/专利号CN201180057432.0

  • 申请日2011-09-23

  • 分类号G06F13/14;G06F9/22;G06F3/14;

  • 代理机构北京市柳沈律师事务所;

  • 代理人万里晴

  • 地址 开曼大开曼岛

  • 入库时间 2024-02-19 19:37:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-08-10

    授权

    授权

  • 2013-10-09

    实质审查的生效 IPC(主分类):G06F13/14 申请日:20110923

    实质审查的生效

  • 2013-07-31

    公开

    公开

说明书

相关申请的交叉引用

本申请是以下美国临时申请的非临时申请并且要求它们的申请日的权 益:美国临时申请号61/389,117,2010年10月1日提交,题为“Multi-Operating  System Portable Docking Device”;美国临时申请号61/507,199,2011年7月 13日提交,题为“Dockable Mobile Software Architecture”;美国临时申请号 61/507,201,2011年7月13日提交,题为“Cross-Environment Communication  Framework”;美国临时申请号61/507,203,2011年7月13日提交,题为 “Multi-Operating System”;美国临时申请号61/507,206,2011年7月13日提 交,题为“Auto-Configuration of a Docked System in a Multi-OS Environment”; 以及美国临时申请号61/507,209,2011年7月13日提交,题为“Auto-Waking  of a Suspended Secondary OS in a Dockable System”,其中以上优先权申请的全 部内容通过引用合并于此用于所有目的。

技术领域

本申请一般涉及移动计算环境的领域,更具体地涉及通过在单个移动计 算设备中使用多个操作系统来支持多个用户环境。

背景技术

移动计算设备在当今社会中正变得无处不在。例如,至2008年末,90% 的美国人具有移动无线设备。同时,移动设备的性能正在迅速提升,包括将 提升的计算能力与移动电话能力集成的智能电话。移动提供者在过去三年中 已经基于几个不同的平台(例如苹果的iPhone,安卓,黑莓,Palm和Windows  Mobile)投入了数百种新的智能电话。在美国,至2010年年中,智能电话渗 透率(penetration)达到几乎23%,并且在某些年龄段达到35%。在欧洲,从 2009年到2010年,智能电话市场增长了41%,至2010年7月,仅在五个最 大的欧洲国家就有超过6千万的智能电话用户。

虽然智能电话的普及性和计算性能在增长,但是它们提供了有限的用户 体验。具体地,它们通常具有被修改用于移动设备硬件的操作系统以及可用 于该修改的操作系统的应用的限定集合。例如,许多智能电话运行Google的 安卓操作系统。安卓仅运行专门被开发用于在基于Java的虚拟机运行时间环 境内运行的应用。另外,尽管安卓是基于修改的Linux内核,但是其使用与 Linux不同的标准C库、系统管理器和服务。因而,为Linux而写的应用在没 有修改或移植(porting)的情况下不会在安卓上运行。类似地,苹果的iPhone 使用iOS移动操作系统。同样,尽管iOS是从Mac OS X得到的,但是为OS  X开发的应用不会在iOS上运行。因此,尽管许多应用可用于诸如安卓和iOS 的移动操作系统,但是用于诸如Linux和Mac OS X的桌面操作系统的许多其 他普通应用在移动平台上不可用。

因而,智能电话通常适合于有限的一些用户体验并且提供主要设计用于 移动环境的应用。特别是,智能电话不提供适当的桌面用户体验,也不运行 大多数普通桌面应用。因此,许多用户携带并使用多个计算设备,包括智能 电话、桌面和/或平板计算机。在此实例中,每个设备具有其自己的CPU、存 储器、文件存储区和操作系统。

智能电话和其他计算设备之间的连接性和文件共享涉及通过无线或有线 连接将一个设备(例如运行移动OS(操作系统)的智能电话)与第二完全不 同的设备(例如运行桌面OS的笔记本、桌面机或者平板)链接。通过在分 别在每个设备上运行的应用之间同步数据而在设备之间共享信息。通常称为 “同步”的此处理是麻烦的并且通常需要用户的主动管理。

发明内容

本发明的实施例涉及在单个移动计算设备中提供智能电话的移动计算体 验以及第二终端环境的适当用户体验。第二终端环境可以是视觉呈现设备(例 如监视器或显示器)、输入设备(例如鼠标、触控板、触摸屏、键盘等)和通 过有线(例如USB、电线、雷电(Thunderbolt)等)或者无线(例如蓝牙、 WiFi等)连接而连接到计算设备的其他计算外围设备(例如HDD、光盘驱动 器、记忆棒、相机、打印机等)的某种组合。在这些实施例中,与移动环境 的用户体验相关联的移动操作系统以及与第二终端环境的用户体验相关联的 桌面操作系统在共享的内核上同时并独立地运行。

根据符合各个实施例的一个方面,移动计算设备在共享内核上运行第一 执行环境中的移动操作系统,并且同时在该共享内核上运行第二执行环境中 的桌面操作系统。通过以下来配置该移动计算设备的接口端口:检测该移动 计算设备与第二终端环境的对接事件;确定对接的第二终端环境的用户体验 简档与该桌面操作系统相关联;响应于确定该对接的第二终端环境的用户体 验简档与该桌面操作系统相关联,将该桌面操作系统配置到该第二终端环境 的显示器;以及从该接口端口输出该桌面操作系统的图形用户界面。

根据符合各个实施例的其他方面,移动计算设备的帧缓冲器与桌面操作 系统相关联,并且被配置到第二终端环境的显示器的分辨率。确定和配置的 步骤可以由移动操作系统的桌面监视服务进行。可以设置指示第二终端环境 是否具有与桌面操作系统相关联的用户体验简档的标志(flag)。基于确定步 骤,来自第二终端环境的输入设备的输入命令可以被移动操作系统忽略。确 定的步骤可以包括从对接连接器接收第二终端环境的用户体验简档的指示 符。

根据符合各个实施例的其他方面,计算系统包括移动计算设备。该移动 计算设备包括:处理器,可操作以同时在共享内核上运行第一执行环境中的 移动操作系统和运行第二执行环境中的桌面操作系统;以及接口端口,该接 口端口可操作以将该移动计算设备连接到第二终端环境,其中该移动操作系 统包括桌面监视服务,该桌面监视服务监视该接口端口,并基于该第二终端 环境的用户体验简档将该接口端口与该移动操作系统或该桌面操作系统之一 相关联。该计算系统可以包括第二终端环境。该第二终端环境可以包括显示 设备,并且该接口端口可以包括显示器端口。

根据符合各个实施例的其他方面,通过以下来配置包括在共享内核上运 行的第一执行环境中的移动操作系统和同时在共享内核上运行的第二执行环 境中的桌面操作系统的移动计算设备的接口端口:检测该移动计算设备与第 二终端环境的对接事件;确定该第二终端环境的用户体验简档与该移动操作 系统相关联;以及响应于确定该第二终端环境的用户体验简档与该移动操作 系统相关联,配置该接口端口以在该第二终端环境的显示器上显示该移动操 作系统的图形用户界面。

根据符合各个实施例的其他方面,检测对接事件可以由共享内核的设备 驱动器进行。配置该接口端口可以包括:通过该移动操作系统的桌面监视服 务来实例化远程对象;以及响应于检测到所述对接事件,通过该移动操作系 统中的事件监听器调用该远程对象,对该远程对象的调用包括该对接事件的 通知。配置该接口端口可以包括在该桌面监视服务中接收指示已经发生了所 述对接事件的对该远程对象的调用。配置该移动操作系统以在该第二终端环 境的显示器上显示该移动操作系统图形用户界面可以包括配置与该移动操作 系统相关联的帧缓冲器用于该第二终端环境的显示器的显示分辨率,和/或使 该移动计算设备的显示器和其他输入设备停用。运行在移动操作系统上的应 用和任务可以被配置用于第二终端环境的显示器。该第二终端环境可以包括 平板型(tablet-style)第二终端环境。该第二终端环境的显示器可以包括触摸 使能的显示器。

附图说明

在附图的引用的图中例示了本发明的实施例,附图中,对图的描述通篇 中相同的数字指代相同的要素。

图1例示根据各个实施例的提供多个用户计算体验的计算环境。

图2例示根据各个实施例的用于移动计算设备的示例系统架构。

图3例示根据各个实施例的用于计算环境的操作系统架构。

图4例示根据各个实施例的用于计算环境的移动操作系统的方面。

图5例示根据各个实施例的用于计算环境的共享内核的方面。

图6例示根据各个实施例的用于计算环境的桌面操作系统的方面。

图7例示根据各个实施例的用于配置各个计算环境的移动计算设备的示 例处理流程。

图8更详细地例示根据各个实施例的可以用于配置移动计算设备的操作 系统架构的示例的引导过程。

图9例示根据各个实施例的应用计算环境的操作系统架构的示例配置。

图10例示根据各个实施例的用于配置移动计算设备以利用第二终端环 境的示例处理流程。

图11例示根据各个实施例的用于为第二终端环境配置移动操作系统的 处理流程。

图12例示根据各个实施例的用于计算环境的操作系统架构的示例配置。

图13例示根据各个实施例的用于计算环境的操作系统架构的示例配置。

图14例示根据各个实施例的用于对移动操作系统的输入设备进行响应 的处理流程。

图15例示根据各个实施例的计算环境。

具体实施方式

传统上,手持移动电话设备(即“手持机”)独立地开发并且服务于与诸 如桌面机和膝上机的个人计算机(“PC”)分离且不同的目的。手持移动电话 设备主要关注于通信,而PC关注于诸如创建和编辑文档、基于文本的通信 (例如电子邮件等)、多媒体和网页浏览的计算任务。但是,移动电话设备正 在将不断增加的计算能力包括在内,并且用户日益需要将通信和计算性能集 中到多用途移动设备中。

例如,包括计算性能的称为“智能电话”的移动电话设备正在日益普及。 许多这些智能电话包括运行在移动处理器上的移动操作系统(“OS”)。尽管 移动处理器和移动OS已经增加了这些设备的性能,但是至少由于所提供的 受限的用户体验,智能电话还没有趋于取代诸如桌面或者笔记本计算机的PC 环境。具体地,对于诸如打字或编辑文档的某些任务,全尺寸键盘以及大的 显示器比通常在智能电话上得到的用户界面(user interface)组件更容易使用。 例如,智能电话通常使用小的拇指型QWERTY键盘、触摸屏显示器、点击 转盘(click-wheel)和/或滚轮作为用户接口组件。选择菜单选项或者项目通 常涉及使用触摸屏显示器或者使用点击转盘或滚轮来导航菜单并选择项目。 此接口适合于小显示屏幕以及通常在智能电话中得到的限制的菜单选项,但 是不适合于控制具有更大数量的菜单选项、更大的屏幕区域以及围绕诸如传 统的鼠标的指向设备而建立的用户界面的更传统的程序。

本发明的实施例指向单个移动计算设备,其提供智能电话的移动计算体 验,并且在与第二终端环境对接时提供适合于第二终端环境的完全的用户体 验。第二终端环境可以是视觉呈现设备(例如监视器或显示器)、输入设备(例 如鼠标、触控板、触摸屏、键盘等)和通过有线(例如USB、电线、雷电 (Thunderbolt)等)或者无线(例如蓝牙、WiFi等)连接而连接到计算设备 的其他计算外围设备(例如HDD、光盘驱动器、记忆棒、相机、打印机等) 的某种组合。尽管第二终端环境可能具有诸如微控制器或者其他专用集成电 路(“ASIC”)的一些处理或逻辑元件,但是它们通常不具有运行操作系统的 单独实例的处理器。

各种第二终端环境可能适合于不同的计算体验。例如,包括触摸屏显示 器作为主要用户输入设备的第二终端环境通常适合于与移动OS相关联的用 户体验。作为另一例子,包括键盘和指向设备作为主要用户输入设备的第二 终端环境通常适合于与桌面OS相关联的用户体验。根据各个实施例,移动 计算设备包括同时运行在共享内核上的移动OS和桌面OS。当该移动计算设 备连接到第二终端环境时,该移动计算设备自动确定该第二终端环境是否适 合于移动OS或者桌面OS。然后该移动计算设备关联并配置对于该第二终端 环境适当的OS。

图1例示根据各个实施例的提供多个用户计算体验的计算环境100。计 算环境100包括移动计算设备110。移动计算设备110包括移动计算硬件和软 件组件。移动计算设备110的硬件组件包括移动处理器114、显示器116、(一 个或多个)I/O设备118和/或端口120。移动计算设备110的软件组件包括第 一OS130和第二OS160。在一个实施例中,第一OS130是移动OS并且第 二OS160是桌面OS。当移动计算设备110操作为单独的移动设备时,移动 OS130通过显示器116和(一个或多个)I/O设备118给出通常的移动计算 用户体验。移动OS130提供的移动计算体验通常包括适合于包括显示器116 和(一个或多个)I/O设备118的移动环境的移动电话能力和图形用户界面 (“GUI”)。例如,显示器116可以是触摸屏显示器并且可以通过触摸屏显示 器116上的移动OS130的GUI来控制运行在移动OS130上的应用程序(即 “App”)。

移动计算设备110可以通过端口120连接到I/O设备144、146和/或148。 I/O设备144、146和/或148可以构成第二终端环境140。在一些实例中,第 二终端环境140可能比起移动OS130更适合于桌面OS160。例如,第二终 端环境140可以包括键盘144、指向设备146和显示设备148。在这些实例中, 桌面OS160可以与第二终端环境140相关联以通过第二终端环境140提供笔 记本或者桌面计算机环境的全部能力。在其他实例中,第二终端环境140可 能比起桌面OS160更适合于移动OS130。例如,第二终端环境140可以包 括触摸屏显示器。在这些实例中,移动OS130可以与第二终端环境140相关 联。

在图1中,端口120被示出为通过接口122连接到第二终端环境140的 端口142。但是,端口120可以包括通过接口122到每个I/O设备144、146 和148的各个单独连接。接口122可以是用于连接诸如键盘、监视器、指向 设备等的设备的任何适合的有线或无线接口或者有线和无线接口的组合。例 如,接口122可以是显示器接口(例如VGA、DVI、HDMI等)和设备通信 接口(例如USB、蓝牙、火线(Firewire)、其他串行通信接口等)的组合。 或者,接口122可以是支持视频和设备通信信号两者的单个通信接口(例如 雷电(Thunderbolt)等)。

传统上,由于不同的使用模型以及对产品设计的竞争限制,对于手持机 环境和PC环境的硬件和软件开发途径已经完全独立。包括桌面和膝上计算 机的PC被设计为是灵活并且强大的。具体地,PC硬件架构通常基于通过主 板上的各种通用接口连接到存储器、图形装置(graphics)和外部组件的通用 PC处理器。例如,个人计算机主板可以包括通过通信接口(PCI、USB、ISA、 IDE等)经逻辑芯片组连接到图形处理器、系统存储器(例如RAM)和各种 其它组件的处理器。一些高度集成的PC处理器包括与图形处理器的接口(例 如AGP等)和/或在该处理器上的与系统存储器的接口(例如SDR、DDR、 DDR2、DDR3、DRDRAM等)。

PC处理器被优化用于高处理器时钟速度和计算密集的任务。个人计算机 市场目前由基于x86的CPU架构的处理器主导。用于桌面计算机的当前基于 x86的PC处理器具有多个64位的中央处理单元(“CPU”)(或者“核”),其 时钟速度超过2.5GHz并且功耗接近100瓦。用于膝上计算机的当前基于x86 的PC处理器通常以高达2.0GHz的时钟速度运行,并且具有在15-45瓦范围 内的功耗。由于这些处理器的大功耗,桌面和膝上计算机可能需要诸如风扇 或散热器的冷却设备来排除来自处理器的废热。另外,使用基于x86的PC 处理器的膝上计算机的电池周期(life)通常小于四小时。

相对照,用于手持机的移动处理器被优化用于低功耗和高集成度以降低 手持机的整体大小。例如,用于诸如智能电话的手持机的移动处理器通常以 低于2.0GHz的时钟速度运行,具有小于1瓦的功耗,并且集成了移动环境常 见的诸如图形控制器、通信接口和相机控制器的功能。最常见的移动处理器 架构是精简指令集计算(“RSIC”)处理器架构。具体地,“ARM”移动处理 器架构当前是被设计用于智能电话和其他超可携式和低功耗计算设备的移动 处理器的主要架构。一些PC处理器制造者也将设计在膝上计算机中使用的 PC处理器称为“移动处理器”。但是,如在此使用的,措辞“移动处理器” 指适合于在手持机或者智能电话中使用的、通常消耗小于1瓦并且集成了移 动功能性的处理器。

个人计算机和手持机通常具有不同的系统资源、输入/示出(“I/O”)设备 和外围设备。例如,桌面和膝上计算机通常具有比手持机大得多的量的系统 存储器和存储容量。尽管通常的膝上计算机可以具有多于2GB的RAM和具 有多于250GB的容量的硬碟,但是手持机通常具有小于512MB的RAM和 具有小于32GB的固态驱动器。个人计算机的用户接口组件通常包括对角线 上大于9英寸的显示屏、全键盘和用于用户输入的指向设备。相对照,手持 机通常包括对角线上小于7英寸的显示屏以及诸如拇指型QWERTY键盘、 触摸屏显示器、点击转盘和/或滚轮的用户接口组件。在个人计算机上得到的 外围设备通常包括光盘驱动器(例如CD、DVD、DVD-RW等)、扩展端口(例 如PCMCIA、SCSI、快速卡(Express Card)等)、视频输出端口(例如VGA、 DVI、HDMI等)和普通设备端口(例如USB等)。相对照,手持机通常不具 有光盘驱动器或者扩展端口。但是,通常在手持机中集成其它设备,包括(一 个或多个)无线通信接口(例如GSM、CDMA、LTE、EDFE、WiFi、WiMax 等)、GPS芯片组、加速计、(一个或多个)相机和/或固态存储器端口(SD、 记忆棒等)。

用于个人计算机和手持机的软件传统上也已独立开发。例如,包括桌面 机和膝上机的个人计算机通常运行与移动设备不同的操作系统。操作系统是 管理计算机硬件和资源并提供用于在计算机硬件上执行应用软件的公共服务 的软件。操作系统通常被描述为具有各种抽象层,其中每个层通过接口与下 面的层相接口。

通常,操作系统的内核指管理诸如(一个或多个)CPU(CPU调度)、存 储器和I/O(包括外围设备和文件系统访问)的计算设备资源的核心OS层。 内核通常将提供用于处理器的低级调度(分派)、处理间通信、处理同步、上 下文切换、处理控制块的操纵、中断应对、处理创建和破坏以及处理挂起和 恢复的特征。OS内核可以包括或者可以不包括设备驱动器。OS的其他层通 过系统调用或应用编程接口(“API”)层来与内核相接口。

通常,其他OS层包括库层、应用框架层和应用层。库层通常包括系统 库和其他用户库。应用框架层包括服务、管理器和运行时间环境。应用层包 括用户应用,其可以在应用框架层的运行时间环境内运行。用户通过OS GUI 与OS交互。GUI给出菜单、按钮和控制,其中用户选择这些菜单、按钮和 控制来控制和使用在OS上运行的应用。通常,措辞“桌面环境”用于指代 GUI类型,通过该GUI类型,用户使用图标、窗口、工具栏、文件夹和/或桌 面窗口小部件(widget)与OS交互,并且“桌面环境”不限于桌面OS。例 如,移动OS可以具有桌面环境,这是指移动OS GUI的外表和感觉。

用于个人计算机的操作系统(桌面OS)被设计用于多任务、更大屏幕面 积并为应用开发者提供灵活的环境。如在此使用的,措辞桌面OS指被设计 用于与个人计算机环境、例如桌面或膝上使用环境一起使用的操作系统。桌 面OS的例子除了许多其他的之外还包括Linux、Mac OS X和Windows7的 各种分布。

用于移动设备的操作系统(移动OS)被开发用于通常在手持机和智能电 话上得到的更小的屏幕面积、更低的处理功率、更小的存储器以及更小的碟 空间。示例的移动OS包括安卓、苹果的iOS(用于iPhone和iPad)、微软的 Windows Mobile(被Windows Phone7取代)、Nokia的塞班以及Palm的Palm  OS(被HP webOS取代)。如在此使用的,措辞移动OS指代被设计用于与移 动环境一起使用的操作系统,包括与PC环境(即桌面或膝上计算机系统) 相比、在具有减少的系统资源的低功率处理器上运行的移动环境。

移动操作系统通常具有被用于创建运行在移动OS上的应用程序(即 “app”)的具体应用开发环境。应用开发环境通过提供用于访问系统资源和 服务的常用工具和API而促进应用开发,并限制允许进行哪些应用以便移动 设备能够继续提供其他需要的功能。例如,到来的电话呼叫和文本可能中断 运行的应用以向用户通知到来的呼叫或文本。

最广泛采用的移动OS是Google的安卓。尽管安卓(Android)是基于 Linux的,但是其包括对内核的修改以及用于移动环境和移动处理器的其他 OS层。具体地,Linux内核被设计用于x86CPU架构,而安卓内核被修改用 于基于ARM的移动处理器。安卓设备驱动器还特别适合于设备中的通常存 在于移动硬件架构中的设备,该移动硬件架构包括触摸屏、移动连接 (GSM/EDGE、CDMA、Wi-Fi等)、电池管理、GPS、加速计和相机模块。

在安卓中,应用运行在面向对象应用框架上的Dalvik虚拟机内,该面向 对象应用框架是对于移动硬件架构的存储器和处理器速度限制而特别设计 的。通过安卓SDK开发用于Dalvik虚拟机的应用。另外,安卓不具有本地 的X Window系统,也不支持标准GNU库的全集,并且这使得其难以将现有 的GNU/Linux应用或库移植到安卓。

苹果的iOS操作系统(运行在iPhone上)和微软的Windows Phone7类 似地被修改用于移动环境和移动硬件架构。例如,尽管iOS从Mac OS X桌 面OS得到,但是普通的Mac OS X应用并不本地地在iOS上运行。具体地, 通过SDK开发用于iOS的应用以运行在iOS的“Cocoa Touch”运行时间环 境内,这提供了基本的应用基础结构并且支持诸如基于触摸的输入、推送通 知和系统服务的关键iOS特征。因此,为Mac OS X而写的应用不通过iOS  SDK移植它们无法在iOS上运行。另外,由于两个OS的用户库和应用框架 层之间的差别以及移动和桌面硬件的系统资源上的差别,可能难以将Mac OS  X应用移植到iOS。

由于处理要求、系统资源和应用开发的差别,对桌面OS开发的应用通 常不在移动OS上运行。另外,桌面应用可能不能容易地移植到移动OS,因 为它们被优化用于更大的屏幕面积、更大的处理速度、更大的系统存储器、 不同的库和通常不同的GUI。因此,用户通常对于每个用户环境使用单独的 计算设备,包括智能电话、平板计算机、膝上计算机和/或桌面计算机。在此 实例中,每个设备具有其自己的CPU、存储器、文件存储区和OS。

智能电话和其他设备之间的连接性和文件共享涉及通过无线或有线连接 将一个设备(例如运行移动OS的智能电话)连接到第二完全不同的设备(例 如运行桌面OS的笔记本、桌面机或平板机)。通过同步分别运行在每个设备 上的应用之间的数据而在设备之间共享信息。通常称为“同步”的此处理是 麻烦的并且通常需要用户的主动管理。

近来,已经进行一些尝试来为单个移动计算设备提供更完整的用户体验。 例如,智能电话可以连接到外部监视器和诸如全键盘的输入设备以提供更像 桌面的用户体验,且移动OS图形用户界面延伸到更大的屏幕并且接受来自 输入设备的输入。但是,因为外部监视器和输入设备仅仅是智能电话的操作 系统和用户接口的延伸,因此,对接环境的性能仍受智能电话的移动OS限 制。例如,在桌面OS上可用的许多软件应用在移动OS上不可用或者具有限 制的功能性。因而,这些设备在连接到外部环境时不给出完全的桌面用户体 验。

仍参考图1,计算环境100提供多个用户计算体验而没有以上限制。具 体地,因为移动计算设备110包括多个OS,其中每个OS适合于具体的计算 环境,所以移动计算设备110可以与外部设备适配以为单个移动计算设备提 供广阔范围的用户体验。例如,用户可以具有移动计算设备110和当连接到 移动计算设备110时提供膝上机的用户体验的第二终端环境140。在此实例 中,当第二终端环境连接到移动计算设备110时,移动计算设备的桌面OS160 与第二终端环境140相关联。对于用户,桌面OS160的全部性能通过第二终 端环境140可用。

图2例示根据各个实施例的移动计算设备110的示例硬件系统架构。移 动计算设备硬件112包括移动处理器114,该移动处理器114包括一个或多个 CPU核204以及外部显示接口220。通常,移动计算设备硬件112还包括I/O 设备118、存储器206、存储设备208、连接到触摸屏显示器116的触摸屏显 示器控制器210、连接到电池216的电力管理IC214、蜂窝调制解调器218、 通信设备222和/或通过各种通信信号和接口连接到处理器114的其他设备 224。I/O设备118通常包括按钮以及可以在移动计算设备110中采用的其他 用户接口组件。例如,I/O设备118可以包括一组按钮(例如后退、菜单、主 页(home)、搜索等等)、离屏(off-screen)手势区、点击转盘、滚轮、QWERTY 键盘等等。其他设备224可以包括例如GPS设备、LAN连接、麦克风、扬声 器、相机、加速计和/或MS/MMC/SD/SDIO卡接口。外部显示接口220可以 是任何适当的显示接口(例如VGA、DVI、HDMI等等)。

处理器114可以是基于ARM的移动处理器。在实施例中,移动处理器 114是诸如Texas Instruments的OMAP3430、Marvell的PXA320、Freescale 的iMX51或者Qualcomm的QSD8650/8250的基于ARM的移动处理器。但 是,移动处理器114可以是另一适合的基于ARM的移动处理器或者基于诸 如例如基于x86的处理器架构或者其他基于RISC处理器架构的其他处理器 架构的处理器。

尽管图2例示了移动计算设备110的一个示例的硬件实现112,但是在本 发明的范围内可构思其他架构。例如,图2中所示的在移动处理器114外部 的各个组件可以被集成到移动处理器114中,可选地,在图2中示出为集成 到移动处理器114中的外部显示接口220可以在移动处理器114外部。另外, 采用系统总线、分离的图形处理器和/或其他架构变型的其他计算机架构适合 于采用本发明的方面。

图3例示根据各个实施例的可以采用以在移动计算设备110上同时运行 移动OS130和桌面OS160的OS架构300。如图3所示,移动OS130和桌 面OS160是独立的操作系统。具体地,移动OS130和桌面OS160可能具有 独立的并且不兼容的用户库和/或框架层。OS架构300的功能和指令可以作 为计算机程序代码存储在移动计算设备100的有形计算机可读介质上。例如, 用于OS架构300的指令可以存储在移动计算设备硬件112的存储设备208 中。

如图3所示,移动OS130具有库层330、应用框架层340和应用层350。 在移动OS130中,应用352和354运行在移动OS130的应用框架层340所 支持的应用层350中。应用框架层340包括由运行在移动OS130上的应用使 用的(一个或多个)管理器342和(一个或多个)服务344。例如,应用框 架层340可以包括窗口管理器、活动性管理器、包管理器、资源管理器、电 话管理器、手势控制器和/或用于移动环境的其他管理器和服务。应用框架层 340可以包括移动应用运行时间环境,其执行为移动OS130开发的应用。移 动应用运行时间环境可以被优化用于诸如较低处理功率或限制的存储器空间 的移动计算资源。对于处理隔离、存储器管理和线程支持,移动应用运行时 间环境可以依靠内核。库层330包括实现诸如I/O和串操纵的普通功能的用 户库332(“标准C库”)、图形库、数据库、通信库和/或其他库。

如图3所示,桌面OS160具有库层360、框架层370和应用层380。在 桌面OS160中,应用382和384运行在由桌面OS160的应用框架层370支 持的应用层380中。应用框架层370包括由运行在桌面OS160上的应用使用 的(一个或多个)管理器372和(一个或多个)服务374。例如,应用框架 层374可以包括窗口管理器、活动性管理器、包管理器、资源管理器和/或对 于桌面环境常见的其他管理器和服务。库层360可以包括实现诸如I/O和串 操纵的普通功能的用户库362(“标准C库”)、图形库、数据库、通信库和/ 或其他库。

在本公开的各个实施例中,桌面OS160运行在与移动OS130分开的执 行环境中。例如,移动OS130可以运行在根(root)执行环境中并且桌面OS 160可以运行在根执行环境之下建立的第二执行环境中。运行在移动OS130 上的处理和应用在根执行环境中访问用户库332、管理器342和服务344。运 行在桌面OS160上的处理和应用在第二执行环境中访问用户库362、(一个 或多个)管理器372和(一个或多个)服务374。

通常,为移动OS130开发的应用不直接在桌面OS160上运行,并且为 桌面OS160开发的应用不直接在移动OS130上运行。例如,运行在桌面OS 160的应用层380中的应用382可能与移动OS130不兼容,意味着应用382 不能在移动OS130上运行。具体地,应用382可以使用在移动OS130中的 应用框架层340中不可用的或者与应用框架层340中的(一个或多个)管理 器342和(一个或多个)服务344不兼容的桌面OS160的应用框架层370的 (一个或多个)管理器372和(一个或多个)服务374。另外,应用382可 以尝试访问存在于桌面OS160的库层360中但是在移动OS130的库层330 中不可用的或者与在库层330中可用的用户库332不兼容的用户库362。

在OS架构300中,移动OS130和桌面OS160同时运行在共享内核320 上。这意味着,移动OS130和桌面OS160在相同时间时运行在共享内核320 上。具体地,移动OS130和桌面OS160两者通过进行对共享内核320的系 统调用而经过相同的内核接口322接口到共享内核320。共享内核320管理 用于移动OS130和桌面OS160两者的处理的任务调度。在这点上,移动OS 130和桌面OS160在共享内核320上独立地并且同时运行。另外,共享内核 320直接运行在移动计算设备硬件112的移动处理器114上,如硬件接口312 所示。具体地,共享内核320直接管理移动计算设备硬件112的计算资源, 诸如CPU调度、存储器访问和I/O。在这点上,硬件资源不是虚拟化的,意 味着移动OS130和桌面OS160通过内核接口322在没有虚拟化的存储器或 I/O访问的情况下进行系统调用。

存在几种已知的技术用于在相同的计算设备上提供多个OS。但是,这些 技术都没有提供同时并独立地在共享内核上运行的多个不同的OS。更具体 地,这些技术都没有提供对于运行在共享内核上的移动OS和桌面OS的解决 方案。

在称为双引导的一个技术中,多个OS一次一个地被加载在计算设备上。 例如,在引导时间,用户可以从多个可用的OS选择一个OS以在设备上运行, 其中每个OS具有其自己的内核、库、框架和应用。然后系统引导到该操作 系统并且其他OS不运行(即不与运行的OS同时加载其他OS的处理)。因 此,此技术不在共享内核上运行多个OS,此技术也不同时运行多个OS。

用于在相同的设备上运行多个OS的另一技术是使用虚拟机管理器 (“VMM”)或者“管理程序(Hypervisor)”。VMM或管理程序直接在硬件 上运行,并且将每个OS的各自的内核与硬件分离,控制在任意给定时间哪 些计算机硬件资源对每个OS可用。管理程序从一个设备有效地创建多个虚 拟机,以便每个OS看到单独的虚拟机。因此,经过管理程序和VMM而运 行在相同的设备上的多个OS不会运行在共享内核上。由于每个OS需要通过 管理程序中的虚拟化访问系统资源,因此管理程序增加了系统开销。另外, 因为管理程序必须分配CPU和其他计算资源,因此每个OS可能不能有效地 调度处理和任务。

用于在相同的设备上运行多个OS的另一技术是使用主机容纳的(hosted) 虚拟机。在此技术中,每个OS具有其自己的内核,访客(guest)OS的内核 运行在主机OS中的虚拟机上。此虚拟机可以是与物理硬件平台不同的虚拟 化的硬件平台。主机OS中的虚拟机可以实现在主机OS的内核中,在此实例 中,主机OS的内核担当管理程序,通过该管理程序,访客OS的内核访问处 理器和硬件资源。在此技术中无论虚拟机在哪里实现,主机OS和访客OS都 具有单独的内核。因此,主机容纳的虚拟机不具有在共享内核上运行的多个 OS。由于用于访客OS的硬件资源的虚拟化,因此使用此技术的系统性能可 能降低。

虚拟化的另一形式是操作系统级虚拟化。在此技术中,可以在操作系统 的内核上创建多个隔离的用户空间实例,从每个用户空间实例的用户的观点 来看,这看起来像是分离的OS实例。在此技术中,主机OS和访客OS必须 是相同的OS。因而,此技术不提供对于独立地并同时运行在共享内核上的移 动OS和桌面OS的解决方案。此外,对于主机容纳的虚拟机类似地,此技术 对于访客OS使用碟空间和存储器虚拟化。因而,此技术不为每个并行的OS 提供对存储器和系统资源的访问。

运行多个OS的这些技术具有关于同时并独立地运行操作系统的限制。 例如,性能化设计为访客OS设置不同的地址空间并且模拟到访客OS的I/O。 因此,对包括系统存储器的硬件的访问具有用于使用虚拟化的访客OS的更 高的系统开销。另外,使用管理程序的技术导致在每个OS的处理控制时缺 少确定性。具体地,管理程序管理分配给每个OS的CPU时间量,并且每个 OS然后分配CPU时间用于OS内的处理,而不知道其他OS中正发生什么。 在这点上,一个OS内的高优先级处理可能未被给予所需的CPU时间来完成 其任务,因为OS正通过管理程序共享CPU时间,这不能解决在每个OS内 运行的处理的相对优先级。因为相对于桌面处理器架构,在移动处理器架构 中可能限制处理功率,所以依赖于包括管理程序和操作系统级虚拟化的虚拟 化的技术可能不能提供对于与移动处理器上的移动OS同时运行的桌面OS的 最佳性能。

在符合OS架构300的一个实施例中,安卓移动OS和全Linux OS独立 并同时运行在修改的安卓内核上。在此实施例中,安卓OS可以是修改的安 卓发布,而Linux OS(“Hydroid”)是修改的Debian Linux桌面OS。图4-6 更详细地例示根据各个实施例的可以在OS架构300中采用的安卓移动OS 430、安卓内核520和Hydroid OS660。

如图4所示,安卓OS430包括通过应用框架层440来访问的库层432中 的一组C/C++库。库层432包括被开发具体用于安卓以比“glibc”Linux C库 更小并且更快的“仿生(bionic)”系统C库439。库层432还包括处理间通 信(“IPC”)库436,其包括用于安卓OS的“绑定器(Binder)”IPC机制的 基类。绑定器被开发具体用于安卓以允许处理和服务之间的通信。在图4中 的库层432中示出的其他库包括支持媒体格式的记录和回放的媒体库435、 管理从多个应用到显示子系统和合成图形层的访问的表面管理器434、2D和 3D图形引擎438以及轻量级相关数据库引擎437。可以在库层432中包括但 是未在图4中绘出的其他库包括位图和矢量字体呈现库、实用程序库、浏览 器工具(即WebKit等)和/或安全通信库(即SSL等)。

安卓OS430的应用框架层440提供了允许开发者使用设备硬件的组件、 访问位置信息、运行后台服务、设置警报、向状态条添加通知等的开发平台。 框架层440还允许应用公布其性能以及利用其他应用的公布的性能。安卓移 动OS430的应用框架层440的组件包括活动性管理器441、资源管理器442、 窗口管理器443、对接管理器444、硬件和系统服务445、桌面监视服务446、 多显示器管理器447和远程通信服务448。除了其他管理器和服务之外,可 以在安卓移动OS430的框架层440中包括的其他组件包括查看系统、电话管 理器、包管理器、位置管理器和/或通知管理器。

运行在安卓OS430上的应用在安卓面向对象的应用框架之上的安卓运 行时间环境433中的Dalvik虚拟机431内运行。Dalvik虚拟机431是基于登 记的虚拟机,并且运行被设计为降低存储器使用和处理要求的紧凑可执行格 式。运行在安卓OS430上的应用包括主页屏幕451、电子邮件应用452、电 话应用453、浏览器应用454和/或(一个或多个)其他应用(“App”)455。

由于这些原因,为安卓而写的应用通常不在Hydroid OS660上运行,并 且为标准Linux发布而写的应用通常不在安卓OS430上运行。在这点上,用 于安卓OS430和Hydroid OS660的应用不是字节码兼容的,意味着用于一者 的编译的并可执行的程序不在另一者上运行。

图5更详细地例示根据各个实施例的修改的安卓内核520。修改的安卓 内核520包括触摸屏显示器驱动器521、(一个或多个)相机驱动器522、(一 个或多个)蓝牙驱动器523、共享存储器分配器524、(一个或多个)IPC驱 动器525、(一个或多个)USB驱动器526、(一个或多个)WiFi驱动器527、 (一个或多个)I/O设备驱动器528和/或电力管理模块530。(一个或多个) I/O设备驱动器528包括用于外部I/O设备的设备驱动器,外部I/O设备包括 可以通过端口120连接到移动计算设备110的设备。修改的安卓内核520可 以包括其他驱动器和功能块,包括低内存管理器(low memory killer)、内核 调试器、记录能力和/或其他硬件设备驱动器。

图6更详细地例示根据各个实施例的Hydroid OS600。Hydroid是能够运 行为标准Lunix发布开发的几乎任何应用的全Linux OS。具体地,Hydroid OS 660的库层662包括支持联网、图形处理、数据库管理和其他普通程序功能 的Linux库。例如,用户库662可以包括标准Linux C库(glibc)664、Linux 图形库662(例如GTK等)、Linux实用程序库661、Linux数据库和/或其他 Linux用户库。应用使用X-服务器674、窗口管理器673和/或桌面环境672 在X-Windows Linux图形环境内的Hydroid上运行。例示的应用包括文字处 理器681、电子邮件应用682、电子数据表格(spreadsheet)应用683、浏览 器684和(一个或多个)其他应用685。

在一个实施例中,Hydroid OS600包括促进通过共享内核520与安卓OS 430的通信的交叉环境通信框架的组件。这些组件包括IPC库663,该IPC库 663包括用于安卓OS的绑定器IPC机制和远程通信服务671的基类。

在一个实施例中,Hydroid OS660运行在安卓根环境内的改变根目录的 (chrooted)(以“改变根目录(chroot)”命令创建的)第二执行环境内。Hydroid  OS660内的处理和应用在该第二执行环境内运行,以便这些处理和应用看到 的表象根目录是第二执行环境的根目录。以此方式,Hydroid OS660可以不 用修改地运行为标准Linux发布而写的程序,因为在改变根目录的第二执行 环境中,Linux用户库662对于在Hydroid OS660上运行的处理可用。

本发明的实施例涉及自动配置移动计算设备110以利用各种第二终端环 境来提供对于每个第二终端环境的适当用户体验。配置移动计算设备110用 于具体第二终端环境涉及将移动OS130和/或桌面OS160配置到第二终端环 境,以便为用户呈现提供了最适合于该环境的用户体验的OS、GUI和应用。 回去参考图1,移动计算设备110将移动OS130或桌面OS160与通过端口 120连接到移动计算设备110的第二终端环境140相关联。相关联的OS被配 置为通过端口120驱动第二终端环境的显示设备(例如设备144)并且处理 通过端口120来自第二终端环境140的(一个或多个)输入设备(例如设备 146和148)的输入命令。

依赖于构成第二终端环境的I/O设备,第二终端环境可以具有各种使用 模型。例如,一些第二终端环境可以具有与移动OS130的GUI和应用相关 联的用户体验简档(profile)。例如,第二终端环境可以包括作为输出设备的 显示器、以及作为主要输入设备的键盘和指向设备。这种类型的第二终端环 境可以具有与桌面OS160的GUI和应用相关联的用户体验简档。作为另一 例子,第二终端环境可以包括用作显示器和主要输入设备两者的触摸屏。这 种类型的第二终端环境可以具有与移动OS130的GUI和应用相关联的用户 体验简档。

一个第二终端环境是平板型第二终端环境。平板型第二终端环境包括被 用作显示器和主要输入设备的触摸使能的显示屏。通常,平板型第二终端环 境具有比移动计算设备110的触摸屏114更大的触摸屏面积。尽管具有比移 动计算设备110更大的触摸屏面积,但是平板型第二终端环境通常具有与移 动OS130的GUI和应用相关联的用户体验。例如,相比于桌面OS GUI,用 户更习惯于在平板型第二终端环境上使用诸如安卓OS430的GUI移动OS GUI。具体地,可以在平板型第二终端环境上使用在触摸屏116上使用的相 同的手指手势和虚拟键盘输入来与安卓OS430交互(interface)。在称为“智 能平板”的一个实施例中,平板型第二终端环境包括10.1英寸对角的(1280 ×800分辨率)触摸使能的显示屏、标准组的按钮(例如后退、菜单、主页、 搜索等)、(一个或多个)相机和离屏手势区。

另一类型的第二终端环境是膝上型或者笔记本型第二终端环境。笔记本 型第二终端环境通常包括在对折壳(clamshell)外壳中的键盘、显示器、指 向设备和/或其他设备。参考图1,笔记本型第二终端环境可以包括在包括用 于通过接口122与移动计算设备110通信的接口142的对折壳外壳中的键盘 144、显示器146和指向设备148。在实施例中,膝上型或者笔记本型第二终 端环境可以称为“智能显示器”或者“LapDock(膝上型坞)”。因为此类型 的第二终端环境包括更大的显示器、键盘和指向设备,其通常具有与诸如 Hydroid OS600的桌面OS而不是诸如安卓OS430的移动OS相关联的用户 体验简档。在一个实施例中,对接插孔称为“智能坞(Smart Dock)”。

移动计算设备110还可以通过对接连接器或者其他接口(即“更新坞 (Update Dock)”)连接到另一计算设备(例如膝上型、桌面型等等)。此配 置中的其他计算设备不是第二终端环境,而是具有其自己的操作系统和应用。 在这点上,更新坞是将移动计算设备110连接到另一计算设备、例如膝上计 算机或者桌面计算机的方式。此配置可能在移动计算设备110正被更新时或 者用户希望在移动计算设备110和该其他计算设备之间传输数据时最有帮 助。

图7例示使用OS架构300结合各种第二终端环境和外部计算设备的用 于移动计算设备100提供适当的用户体验的示例配置处理流程700。在配置 处理流程700中,移动计算设备110自动检测其何时与第二终端环境对接并 配置移动OS130或桌面OS160以通过对接的第二终端环境提供适当的用户 体验。

在配置处理流程700的阶段702,移动计算设备119被关闭。在阶段704, 移动计算设备110被通电,并且在移动计算设备1120上引导OS架构300的 组件。例如,用户可以经由开关或按钮开启移动计算设备110。

图8例示可以用于在配置处理流程700的阶段704引导OS架构300的 组件的示例引导过程800。引导过程800开始于步骤802,这时系统经由硬件 通电。

在步骤804,利用从硬件或固件传递的引导变量,在存储器(RAM)中 加载引导加载器。在步骤806,引导加载器设置根文件系统。在步骤808,引 导加载器配置存储器和网络支持。在此步骤中,引导加载器还可以配置调制 解调器支持、低存储器(内存)保护和安全选项。在步骤810,引导加载器 查找共享内核320并将其加载到存储器,在需要时传递内核变量。引导加载 器开始共享内核320,在该点时,共享内核320接管引导过程的控制。在一 个实施例中,共享内核320是修改的安卓内核。

在步骤812,共享内核320初始化硬件设备的驱动器。在此步骤,共享 内核320还初始化存储器保护、虚拟存储器模块和调度缓存。在步骤814, 共享内核320初始化移动OS。在一个实施例中,共享内核运行用户空间初始 化处理以初始化安卓OS430。初始化处理读取描述对于安卓OS的系统服务 和另外的系统参数的配置文件。在步骤816,移动OS框架启动,这通常包括 启动运行时间环境。在一个实施例中,安卓的根处理Zygote通过初始化处理 运行,并且初始化Dalvik Java机器运行时间环境。在步骤818,用于移动OS 的(一个或多个)服务344启动。用于移动OS的(一个或多个)服务344 通常包括电话服务、相机服务、GPS服务和/或通信服务。在一个实施例中, Zygote启动安卓OS430的主安卓系统服务器,该主安卓系统服务器启动诸如 电话、相机、蓝牙等的安卓服务。

在步骤820,桌面OS被初始化。在一个实施例中,安卓OS430的初始 化处理解析第二配置文件,并且执行命令,并运行在第二配置文件中配置的 服务。在步骤822,在移动OS中启动桌面监视服务446,该桌面监视服务446 启动并监视桌面OS。在一个实施例中,在安卓OS430中启动桌面监视服务 446。在步骤824,桌面监视服务建立用于桌面OS的单独的执行环境。在一 个实施例中,桌面监视服务446使用Linux chroot(改变根目录)命令来设置在 Hydroid OS660的根文件系统内的该单独的执行环境。用于桌面OS的单独的 执行环境允许例如桌面OS具有与移动OS不同的用户库。在一个实施例中, Hydroid OS660的用户库662在安卓OS430的用户库432的单独的执行环境 中。具体地,每个OS中的应用和程序可以静态地或者动态地单独链接到每 个OS内的库,而没有链接冲突或者库兼容性问题。在步骤826,桌面监视服 务启动(一个或多个)桌面OS服务374。在一个实施例中,这包括Hydroid OS 660的X-窗口系统674和Xfce桌面环境672。

在阶段704引导OS架构之后,配置处理流程700前进到阶段706。在阶 段706,移动OS130和桌面OS160同时运行在共享内核320上。如图7中 所示,在阶段706,移动计算设备110未对接到第二终端环境。

在OS架构300中,移动OS130的服务对对接事件反应,控制桌面OS 的挂起和恢复,并且配置移动OS130或桌面OS160用于对接的第二终端环 境。在一个实施例中,安卓OS430的桌面监视服务446对对接事件反应,挂 起或者恢复Hydroid OS660,并且配置安卓OS430或者Hydroid OS660用于 对接的第二终端环境。在此实施例中,共享内核520中的实现硬件接口的(一 个或多个)I/O设备驱动器528检测对接事件将该对接事件提供给输入模块。 然后输入模块将该对接事件通知给安卓OS430的服务。输入模块通过安卓事 件集线器(Android Event Hub)将该事件放入安卓OS430的输入队列中。桌 面监视服务446接收事件通知并且配置安卓OS430和/或Hydroid OS160以 通过对接的第二终端环境提供适当的用户体验。

在各个实施例中,移动OS130设置标志(DDOS_FLAG)以指示移动计 算设备110是否与适合于桌面OS的第二终端环境对接。“对接用于桌面OS” 标志可以是移动OS130或者共享内核320中的标志。在一个实施例中,“对 接用于桌面OS”标志是可以通过实例化的(instantiated)远程IPC对象来访 问的安卓OS430中的标志。当移动计算设备110与适合于桌面用户体验的用 户体验的第二终端环境对接时,“对接用于桌面OS”标志被赋值(assert)(布 尔值为真)。如果“对接用于桌面OS”标志未被赋值(布尔值为假),则移动 计算设备110被认为未与适合于桌面用户体验的第二终端环境对接。

回去参考图1,“对接用于桌面OS”标志指示移动OS130或者桌面OS160 是否与第二终端环境140的(一个或多个)输入设备144、146和/或148相 关联。如果“对接用于桌面OS”标志被赋值,则桌面OS160与第二终端环 境140的(一个或多个)输入设备144、146和/或148相关联。如果“对接 用于桌面OS”标志未被赋值,则移动OS130与第二终端环境140的显示设 备和(一个或多个)输入设备144、146和/或148相关联。

图9例示当移动计算设备100未对接到第二终端环境时对应于OS架构 300的OS架构配置300a。例如,在配置处理流程700的步骤706。从用户的 观点来看,OS架构配置300a对应于通常的移动计算体验,其中用户通过触 摸屏显示器116和移动计算设备硬件112的其他用户接口组件与移动OS130 的GUI交互。来自触摸屏显示器116和其他用户接口组件118的输入命令通 过触摸屏显示设备驱动器922和其他设备驱动器(未在图9中例示)被翻译 用于对移动OS130的输入。

在OS架构配置300a中,桌面OS160处于挂起状态。在桌面OS160被 挂起的同时,桌面OS160的处理和服务被挂起。但是,当移动OS160被恢 复时,移动OS160内的处理和服务从其停止处恢复,并且不丢失在其被挂起 时它们在移动OS160中正进行工作的数据。在一些实施例中,当移动OS160 被挂起时,移动OS160的挂起的处理和服务的当前状态被写到碟。

在移动OS160处于被挂起状态时,移动OS160的守护进程(daemon  process)974继续运行在共享内核320上。守护进程974可以进行诸如联网 和/或进行其他后台任务的后台功能。守护进程974还可以维持在桌面OS160 中正运行的和挂起的处理id的列表。在一些实施例中,守护进程974可以被 进行这些功能的服务替代。

桌面监视服务944通过共享内核320中的IPC通道与守护进程874通信。 在实施例中,IPC通道包括共享内核320中的IPC驱动器926。守护进程974 登记以通过IPC通道的实例化的IPC协议来接收通信。桌面监视服务446使 用实例化的IPC协议以通过IPC驱动器525将消息传递到守护进程974。在 一个实施例中,桌面监视服务944通过交叉环境通信框架与守护进程974通 信。交叉环境通信框架包括安卓OS430的IPC库433、Hydroid OS660的IPC 库663和安卓内核520的IPC驱动器525。IPC库433和663提供了用于交叉 环境通信的IPC协议的实例的基类。在联合未决的美国专利申请 No.XX/XXX,XXX、代理人Dkt.No.50224-01308、提交日*的题为 “Cross-Environment Communications Framework”中更详细地描述了交叉环 境通信框架的实施例,其全部内容通过引用合并于此。

从配置处理流程700的阶段706,移动计算设备110可以对接到各种第 二终端环境。图10例示了当对接事件发生时桌面监视服务446遵循的处理流 程1000。处理流程1000开始于步骤1002,这时移动计算设备100被对接到 第二终端环境。在步骤1002,桌面监视服务446接收事件通知,并且前进到 步骤1004。

在步骤1004,桌面监视服务446确定对接的第二终端环境的用户体验简 档是否与移动OS或桌面OS相关联。在一个实施例中,用于通过端口120将 移动计算设备110连接到第二终端环境140的对接连接器包括指示第二终端 环境140的用户体验简档的机械或电学特征。例如,移动计算设备110可以 通过端口120接收通过电压电平或者信号电压电平系列来指示第二终端环境 140的用户体验简档是否与安卓OS430或者Hydroid OS160相关联的电信 号。在其他实施例中,桌面监视服务446可以从构成第二终端环境140的I/O 设备144、146和/或148的预定标准来确定用户体验简档。例如,包括被用 作显示器和主要输入设备的触摸屏的平板型第二终端环境的用户体验简档可 以与安卓OS430相关联。作为另一例子,如果第二终端环境140包括具有比 预定值更大的显示器大小或分辨率的显示监视器,则第二终端环境140可以 被确定为具有与Hydroid OS160相关联的用户体验简档。

第二终端环境的用户体验简档还可以是用户可选择的。例如,用户可以 将I/O设备144、146和/或148的具体标准与关联于安卓OS430或者Hydroid  OS160的用户体验简档相关联。例如,用户可以将具体I/O设备或I/O设备的 组合与关联于Hydroid OS160的桌面用户体验简档相关联。

第二终端环境的用户体验简档还可以是动态可配置的。例如,桌面监视 服务446可以基于用户对于第二终端环境的用户体验的过去的选择而建议对 于第二终端环境的用户体验简档。然后,桌面监视服务可以使用用户对于提 出的用户体验简档的响应来更新用于确定建议的用户体验简档的标准。

如果在步骤1004,桌面监视服务446确定对接的第二终端环境具有与安 卓OS430相关联的用户体验简档,则桌面监视服务446前进到步骤1006。 在一个实施例中,来自对接的第二终端环境的对接连接器的电信号指示对接 的第二终端环境的用户体验简档与安卓OS430相关联。在步骤1006,桌面 监视服务446将“对接用于桌面OS”标志设置为假。桌面监视服务446然后 前进到步骤1008,在那里,安卓OS430被配置用于对接的第二终端环境。

在一个实施例中,安卓OS430被配置为将其GUI重新指向到第二终端 环境的显示器,同时使移动计算设备110上的触摸屏显示器116停用。在此 实施例中,包括GUI和可见的应用和任务的显示信息被配置并重新指向到第 二终端环境的显示器。

图11例示根据各个实施例用于将安卓OS430配置到第二终端环境的显 示器的处理流程1100。配置处理流程1100开始于步骤1102,这时发生与平 板型第二终端环境的对接事件。该对接事件被窗口管理器443派送到多显示 器管理器447。在步骤1104到1108,多显示器管理器447调用活动性管理器 已将所有可见的任务设置为不可见。在步骤1104,活动性管理器441遍历 (traverse)任务堆栈,并且对于每个可见的任务,窗口管理器443被调用以 将该任务的可见性设置为假。在步骤1106,窗口管理器443调用表面管理器 431以释放与任务相关联的表面。在步骤1108,位图服务器缓存用于在步骤 1106释放的表面的表面数据。对于所有可见的任务进行步骤1104到1108。 在步骤1110,多显示器管理器447调用手势控制器以破坏为动画目的而保持 的表面。

在步骤1112,多显示器管理器447调用表面管理器431来将显示输出重 新指向到对接的第二终端环境的显示器。表面管理器431经端口112将经过 显示驱动器的显示输出转移到显示输出。表面管理器431然后重新初始化其 显示信息(例如显示器的数量、合成显示、显示尺寸、dpi等)。在步骤1114, 显示控制器类被重新初始化并且从表面管理器431取回新的显示配置。在步 骤1114,多显示器管理器447还重新建立可用显示器的映射。在步骤1116, 多显示器管理器447重新建立其虚拟显示空间以便触摸事件可以被映射到第 二终端环境显示器的恰当的坐标。

在步骤1118,表面管理器431触发方位(orientation)改变并且向窗口管 理器443和活动性管理器441发送通知。在步骤1120,所有任务被活动性管 理器441通知方位改变,并且从显示控制器取回对于它们正运行在其上的显 示器的新的显示配置信息。

在步骤1122,多显示器管理器447调用活动性管理器441来将顶部任务 设置为可见。还在步骤1122,活动性管理器441检查其任务堆栈以确定哪些 任务先前可见。窗口管理器443被调用用于必须变得可见的每个任务。在步 骤1124,窗口管理器443调用表面管理器431以创建新的表面来匹配第二终 端环境的显示器的显示尺寸。在步骤1126,为每个任务(应用)呈现用户界 面,并且该用户界面变得在第二终端环境的显示器上可见。

在处理流程1100完成之后,安卓OS430被配置用于第二终端环境并且 安卓OS HUI被显示在第二终端环境的显示器上,如处理流程110的步骤1100 所示。在处理流程1100的此步骤,用户可以经过对接的第二终端环境的显示 器和I/O设备与安卓OS430交互。

返回参考图10的步骤1004,桌面监视服务944评估对于对接的第二终 端环境的用户简档。如果桌面监视服务944确定对接的第二终端环境具有与 桌面OS160相关联的用户体验简档,则桌面监视服务944前进到步骤1012。 在一个实施例中,来自对接的第二终端环境的对接连接器的电信号指示其具 有与桌面OS160相关联的用户体验简档。在步骤1012,桌面监视服务944 将“对接用于桌面OS”标志设置为真。桌面监视服务944然后前进到步骤 1014,在那里,桌面OS160被配置用于对接的第二终端环境。在此步骤,用 于桌面OS160的帧缓冲器918被配置用于对接的第二终端环境的显示器的显 示分辨率。然后桌面监视服务前进到步骤1016,在那里,桌面OS160的GUI 被显示在第二终端环境上。当处理流程1000在步骤1016完成时,通过对接 的第二终端环境为用户呈现桌面OS160的计算体验。

回去参考图7,在阶段708,移动计算设备110可以对接到平板型第二终 端环境。图12例示根据各个实施例的其中在处理流程700的阶段708中移动 计算设备110与平板型第二终端环境对接的OS架构配置300b。平板型第二 终端环境1240包括端口1242、触摸屏显示器1244和其他I/O设备1246。

在OS架构配置300b中,移动OS130与平板型第二终端环境1140相关 联,而桌面OS160被挂起。移动OS帧缓冲器916被配置用于触摸屏显示器 1244的分辨率,并且通过端口120将视频信号驱动到触摸屏显示器1244。来 自第二终端环境1240的I/O设备1246的输入命令通过端口120输入到移动 计算设备110并且由I/O设备驱动器924处理。包括窗口管理器942的移动 OS130的组件然后接受该输入命令。以此方式,在OS架构配置300b中通过 平板型第二终端环境1240为用户呈现移动OS130的移动计算体验。

回去参考图7,在阶段710,移动计算设备110可以对接到构成通常的桌 面计算环境的各种普通的输入/输出设备外围。例如,移动计算设备110可以 通过坞座(dock cradle)或者“智能坞”与显示器、键盘和指向设备对接。图 13例示了OS架构配置300c,其中在阶段710中移动计算设备110与构成通 常的桌面计算环境的第二终端环境1340对接。第二终端环境1340包括端口 1342、显示监视器1344、键盘1346和/或指向设备1348。

在OS架构配置300c中,移动OS130与包括触摸屏显示器116和其他 I/O设备118的移动计算设备110的I/O设备相关联。具体地,移动OS130 通过于移动OS130相关联的帧缓冲器916驱动触摸屏显示器116。触摸屏驱 动器922接收来自触摸屏显示器116的输入命令,并产生由窗口管理器942 和移动OS130的其他组件处理的事件。

桌面OS160通过端口120与第二终端环境1340相关联。具体地,桌面 OS160通过与Hydroid OS160相关联的帧缓冲器918来驱动显示监视器 1344。(一个或多个)I/O设备驱动器924接收来自第二终端环境1340的(一 个或多个)输入设备的输入命令。因为移动OS130和桌面OS160正同时运 行在共享内核320上,所以由(一个或多个)I/O设备驱动器924接收的输入 命令在共享内核320中对于移动OS130和桌面OS160两者可用。

如上所述,“对接用于桌面OS”标志确定移动OS130还是桌面OS160 处理来自附连的I/O设备的输入命令,所述附连的I/O设备诸如图13中所示 的键盘1346和(一个或多个)指向设备1348。如果“对接用于桌面OS”标 志被赋值,则桌面OS160将接收来自附连的I/O设备(例如键盘1346和(一 个或多个)指向设备1348)的输入命令,并且移动OS130将忽略这些输入 命令。可替换地,如果“对接用于桌面OS”标志未被赋值,则移动OS130 将接收来自附连的I/O设备的输入命令,并且桌面OS160将忽略这些输入命 令。

参考图14,更详细地描述“对接用于桌面OS”标志对移动OS130的输 入/输出的影响。图14例示了当新设备连接到移动计算设备110时移动OS130 遵循的处理流程1400。在处理流程1400的步骤1410,检测到新的设备。例 如,当键盘连接到移动计算设备110时,在共享内核320中其可能看起来是 新设备。在一个实施例中,它出现在安卓内核520中的节点/dev/kb0处。在步 骤1412,移动OS检查以查看“对接用于桌面OS”标志是否被赋值。如果“对 接用于桌面OS”标志被赋值(即,是真),则移动OS130在步骤1414检查 设备配置文件以确定检测到的设备的类型是否通常与桌面用户体验相关联。 例如,键盘和指向设备是通常与桌面用户体验相关联的设备类型的。如果在 步骤1416移动OS130确定输入设备是通常与桌面用户体验相关联的设备类 型,则在步骤1418,移动OS130忽略来自该设备的输入命令。如果在步骤 1412“对接用于桌面OS”标志未被赋值,则在步骤1420移动OS130将接收 来自该设备的输入命令。另外,如果设备的类型不是通常与桌面用户体验相 关联的,如在设备配置文件中所述,则移动OS130将从步骤1416前进到在 步骤1420接受来自该设备的输入命令。

回去参考图7,在阶段710,“对接用于桌面OS”(即,DDOS_FLAG) 被赋值。与处理流程700的阶段710一致,在OS架构配置300c中,“对接 用于桌面OS”标志被赋值。因而,包括窗口管理器972的桌面OS160接收 来自与诸如键盘1346和(一个或多个)指向设备1348的第二终端环境1340 的(一个或多个)外部I/O设备交流的I/O设备驱动器924的输入命令。如上 所述,当“对接用于桌面OS”标志被赋值时,移动OS130忽略来自与第二 终端环境1340相关联的外部I/O设备的输入命令。

图15示出根据各个实施例的其中可以采用OS架构配置300c的示例计 算环境1500。在计算环境1500中,移动OS130通过移动计算设备110的I/O 设备提供了移动计算体验。具体地,用户可以通过触摸屏116上的移动OS GUI 和集成在移动计算设备110的移动计算设备硬件112中的其他I/O设备118 而交互。移动OS GUI132可以是例如安卓OS430的GUI。

同时,桌面OS160通过第二终端环境1340提供了完整的桌面计算体验。 如图5中所示,第二终端环境1340包括坞座1341。坞座1341包括通过接口 122连接到移动计算设备的端口1342(未示出)。坞座1341通过接口1343连 接到显示监视器1344、键盘1346和/或(一个或多个)指向设备1348。图14 例示桌面OS GUI162被显示在第二终端环境1340的显示监视器1344上。运 行在桌面OS160上的应用382和384可以被显示在桌面OS GUI162内的应 用窗口1582、1584和/或1586中。桌面OS GUI162可以是例如Hydroid OS660 的GUI。

回去参考图7,在阶段712,移动计算设备110可以对接到膝上型或者笔 记本型第二终端环境。如上所述,膝上型或者笔记本型第二终端环境具有与 诸如Hydroid OS660的桌面OS相关联的用户体验简档。在这点上,对于膝 上型或者笔记本型第二终端环境的移动计算设备110的配置类似对于图12中 所示的OS架构配置300c所示的配置。如在处理流程700的阶段712所示, “对接用于桌面OS”标志被赋值。因而,在阶段712,桌面OS160与对接 的第二终端环境相关联,并且移动OS130忽略来自对接的第二终端环境的输 入设备的输入命令。

还如处理流程700中所示,在阶段714移动计算设备110可以对接到单 独的计算设备,用于更新OS架构300或者在移动计算设备110和该单独的 计算设备之间传输数据。在阶段714,“对接用于桌面OS”标志未被赋值。

从阶段706、708、710、712和/或714的任意一个,移动计算设备110 可以通过阶段716被断电到阶段702中的关闭状态。因而,处理流程700描 述了移动计算设备110使用运行在共享内核320上的移动OS130和/或桌面 OS160,利用几个不同的计算环境来提供适当的用户体验的自动配置。

如上所述,在一个实施例中,安卓移动OS和Linux桌面OS(“Hydroid”) 同时运行在单个移动计算设备的同一共享内核上。安卓移动OS通过移动计 算硬件提供移动计算体验,并且Linux桌面OS通过具有与Linux OS相关联 的用户体验简档的第二终端环境提供桌面计算体验。但是,在本发明的各个 实施例之内构思其他OS组合。例如,本发明的各个方面可以用于在共享内 核或者共享的公共内核模式处理上运行Windows Mobile和Windows7。作为 另一例子,运行在共享内核上的iOS和Mac OS X也在各个实施例的范围内。 此外,可以有利地通过在共享内核上运行的嵌入式OS和桌面或移动OS的组 合来使用本发明的方面。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本 发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和 实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子 组合。

以上所述的方法的各个操作可以通过能够进行相应的功能的任何适当的 手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限 于电路、专用集成电路(ASIC)或处理器。

可以利用被设计用于进行在此所述的功能的通用处理器、数字信号处理 器(DSP)、ASIC、场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、 离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行所述的 各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替 换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态 机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多 个微处理器、与DSP核协作的一个或多个微处理器或任何其他这样的配置。

结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执 行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形 存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、 只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄 存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处 理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中, 存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令, 并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介 质。

在此公开的方法包括用于实现所述的方法的一个或多个动作。方法和/或 动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的 具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范 围。

所述的功能可以按硬件、软件、固件或其任意组合而实现。如果以软件 实现,功能可以作为一个或多个指令存储在切实的计算机可读介质上。存储 介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制, 这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他 光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据 结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如 在此使用的,碟(disk)和盘(disc)包括紧凑盘(CD)、激光盘、光盘、数 字通用盘(DVD)、软碟和蓝光盘,其中碟通常磁地再现数据,而盘利用激光 光学地再现数据。

因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机 程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有 形介质,该指令可由一个或多个处理器执行以进行在此所述的操作。计算机 程序产品可以包括包装的材料。

软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、 光纤光缆、双绞线、数字订户线(DSL)或诸如红外、无线电或微波的无线 技术的传输介质从网站、服务器或者其他远程源传输软件。

此外,用于进行在此所述的方法和技术的模块和/或其他适当的手段可以 在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可 以耦接到服务器以促进用于进行在此所述的方法的手段的传送。或者,在此 所述的各种方法可以经由存储部件(例如RAM、ROM、诸如CD或软碟等的 物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该 设备提供存储部件时获得各种方法。此外,可以利用用于将在此所述的方法 和技术提供给设备的任何其他适当的技术。

其他例子和实现方式在本公开和所附权利要求的范围和精神内。例如, 由于软件的本质,以上所述的功能可以使用由处理器、硬件、固件、硬连线 或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各 个位置,包括被分发以便功能的部分在不同的物理位置处实现。而且,如在 此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中 使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举 意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外, 措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。

可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术 的各种改变、替换和更改。此外,本公开的和权利要求的范围不限于以上所 述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以 利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的 当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法 或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、 事件的组成、手段、方法或动作。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号