一种资源加载方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种资源加载方法及装置。
背景技术
随着移动互联网的快速发展与HTML5(HTML是HyperText Markup Language的英文缩写,即超文本标记语言)技术的逐步成熟,万维网(Web)应用已经成为移动端跨平台应用开发的热门解决方案。
Web应用通过浏览器获取和显示Web资源,以页面形式显示Web资源。浏览器的功能可通过Web引擎实现。Web引擎包含了各种组件,比如用于实现页面渲染的渲染引擎、用于进行管理和控制的浏览器引擎等。
Node.js是JavaScript运行环境(runtime),也称运行平台,提供了多种系统级的应用程序编程接口(Application Programming Interface,API),用于方便地搭建响应速度快、易于扩展的网络应用。
发明内容
本申请实施例提供一种资源加载方法及装置。
本申请实施例提供了一种资源加载方法,包括:
第一线程向第二线程发送资源加载请求;其中,所述第一线程和所述第二线程位于同一进程,所述第一线程运行于动态语言应用运行平台;
所述第一线程接收所述第二线程根据所述资源加载请求返回的指示;
所述第一线程根据所述指示,基于所述进程预加载的资源,对所述资源加载请求所请求加载的资源进行加载,其中,所述进程预加载的资源中包括Web引擎。
本申请实施例提供的一种资源加载装置,包括:第一线程单元和第二线程单元;
所述第一线程单元,用于:
向所述第二线程单元发送资源加载请求;其中,所述第一线程单元和所述第二线程单元属于同一进程单元,所述第一线程单元运行于动态语言应用运行平台;
接收所述第二线程单元根据所述资源加载请求返回的指示;以及,
根据所述指示,基于所述进程单元预加载的资源,对所述资源加载请求所请求加载的资源进行加载;其中,所述进程单元预加载的模块中包括Web引擎。
本申请实施例提供的一个或多个计算机可读介质,所述可读介质上存储有指令,所述指令被一个或多个处理器执行时,使得通信设备执行上述方法。
本申请实施例提供的一种通信设备,包括:一个或多个处理器;以及,一个或多个计算机可读介质,所述可读介质上存储有指令,所述指令被所述一个或多个处理器执行时,使得所述装置执行上述方法。
本申请的上述实施例中,应用程序的进程预加载有资源,其中,所述进程预加载的资源中包括Web引擎。同一进程中的第一线程向第二线程发送资源加载请求,所述第一线程运行于动态语言应用运行平台;所述第一线程接收所述第二线程根据所述资源加载请求返回的指示;所述第一线程根据所述指示,基于所述进程预加载的模块和/或资源,对所述资源加载请求所请求加载的资源进行加载,从而实现了Web引擎与所述动态语言应用运行平台的融合。
附图说明
本申请的实施例通过示例而非限制的方式示出在所附附图中,类似的附图标记表示类似的元素。
图1根据一些实施例示例性地示出了基于Node.js的云操作系统架构100;
图2根据一些实施例示例性地示出了预加载有Web引擎的Node.js的示意图;
图3根据一些实施例示例性地示出了Web引擎的API映射关系示意图;
图4根据一些实施例示例性地示出了预加载Web引擎后Node.js线程和Browser线程及相关资源的示意图;
图5a根据一些实施例示例性地示出了预加载流程示意图
图5b根据一些实施例示例性地示出了Web资源加载流程示意图;
图6根据一些实施例示例性地示出了事件循环机制示意图;
图7根据一些实施例示例性地示出了资源加载装置的结构示意图;
图8根据一些实施例示例性地示出了一种装置示意图。
具体实施方式
虽然本申请的概念易于进行各种修改和替代形式,但是其具体实施例已经通过附图中的示例示出并且将在本文中详细描述。然而,应当理解,没有意图将本申请的概念限制为所公开的特定形式,而是相反,意图是覆盖与本申请以及所附权利要求一致的所有修改、等同物和替代物。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用,指示所描述的实施例可包括特定特征、结构或特性,但是每个实施例可以或可以不必包括特定特征、结构或特性。此外,这样的短语不一定指的是相同的实施例。进一步地,认为在本领域技术人员的知识范围内,当结合实施例描述特定特征、结构或特性时,结合无论是否明确描述的其它实施例影响这样的特征,结构或特性。另外,应当理解,以“A,B和C中的至少一个”的形式包括在列表中的项目可以表示(A);(B);(C);(A和B);(A和C);(B和C);或(A,B和C)。类似地,以“A,B或C中的至少一个”的形式列出的项目可以表示(A);(B);(C);(A和B);(A和C);(B和C)或(A,B和C)。
在一些情况下,所公开的实施例可以在硬件、固件、软件或其任何组合中实现。所公开的实施例还可以被实现为由一个或多个暂时性或非暂时性机器可读(例如,计算机可读)存储介质携带或存储的指令,其可以由一个或多个处理器读取和执行。机器可读存储介质可以体现为用于以机器可读形式(例如,易失性或非易失性存储器、介质盘或其他介质)存储或传输信息的任何存储设备,机制或其他物理结构的设备)。
在附图中,一些结构或方法特征可以以特定布置和/或顺序示出。然而,应当理解,可能不需要这样的具体布置和/或排序。相反,在一些实施例中,这些特征可以以与说明性附图中所示不同的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示这种特征在所有实施例中都是需要的,并且在一些实施例中可以不包括或可以与其他特征组合。
操作系统用于向用户应用提供操作系统的基础能力,可基于动态语言应用运行平台实现,从而为动态语言应用提供运行环境。其中,Node.js即为JavaScript的运行环境或运行平台。
其中,动态语言是计算机编程语言中的一个语言类别,是一类在运行时可以动态地改变类型、结构的语言,在运行时函数和属性可以被增加、修改和删除。例如JavaScript、Python、Ruby等都属于动态语言。动态语言不需要编译即可运行,在运行时需要运行环境的支撑,这个环境叫做运行时环境,它包含动态语言运行所需要的所有要素,例如Java虚拟机、JavaScript引擎等。
以云操作系统(云OS)中的Host系统为例,它可基于Node.js实现。Node.js是JavaScript的运行环境,是建立在Chrome上的JavaScript引擎的Web应用程序框架,也就是说,操作系统基于Node.js向用户应用提供操作系统的基础能力。Node.js中包括多种模块,这些模块可通过将用于实现特定功能的代码(比如实现操作系统级服务功能的代码)进行封装得到,比如可封装为组件形式,例如这些模块中可包括实现全球定位系统(GlobalPositioning System,简称GPS)定位功能的组件、实现电源管理功能的组件等。这些模块的接口被暴露给应用层,应用层中的应用程序(比如Web应用)可通过调用这些模块的接口,通过JavaScript引擎解析模块中的代码,执行这些模块提供的方法,从而实现这些模块提供的功能。
对于Web应用来说,Web资源的加载(比如Web页面的获取、渲染等操作)由浏览器实现,浏览器则基于Web引擎(web engine)实现Web资源加载。目前,传统的HTML5浏览器,其Web引擎中的线程包括两种类型:Browser线程(浏览器线程)和Render线程(渲染线程)。其中,Browser线程为主线程,可为各个Web页面的渲染提供服务和管理能力;Render线程为子线程,可基于Web引擎进行页面渲染以及执行JavaScript代码。Browser线程可创建一个或多个Render线程。比如,在加载一个Web页面的过程中,Browser线程创建一个Render线程,由该Render线程对该Web页面进行渲染。如果需要加载多个Web页面,则Browser线程创建多个Render线程,每个Render线程对一个Web页面进行渲染。
图1示例性地示出了一种操作系统架构100。架构100包括应用层10、应用框架层20和操作系统层30。应用层10中包括一个或多个应用,其中可包括浏览器。程序框架层20包括动态语言应用运行平台(比如Node.js)。操作系统层30主要用于提供操作系统级别的代码库以及基本的系统服务,比如提供的系统服务可包括设备驱动服务、事件管理服务等。
浏览器中的Web引擎处于应用层,不具备使用Node.js提供的系统服务的能力。如果需要使Web引擎中的渲染(Render)线程能够使用Node.js提供的能力,则需要在Render线程启动过程中启动Node.js。考虑到每加载一个Web页面就会启动一个Render线程,也就需要启动一次Node.js,因此导致加载Web页面的资源开销和时间开销较大。
如何将Web引擎与Node.js融合,将Web引擎作为系统服务的一部分,使基于HTML请求的web页面访问处理过程能够使用系统提供的各种能力,是目前业界面临的问题。
本申请实施例基于上述架构,使Web引擎可以访问到Node.js提供的能力,进一步地与上述方式相比还可以减少资源开销和时间开销。下面结合附图对本申请实施例进行详细描述。
本申请实施例中,动态语言应用运行平台启动时可预加载各种资源,其中包括Web引擎。
以动态语言应用运行平台为Node.js为例,Node.js启动过程中,Node.js进程被创建。Node.js进程预加载各种能力,这里所说的“能力”也可称为资源,可包括前述所描述的用于实现特定功能的模块(比如组件),还可以包括一些配置信息等,比如上下文、事件队列等。Node.js所预加载的能力中至少包括Web引擎(比如Android系统中的Webview组件(即web视图组件)),进一步还可包括Node.js提供的能力。其中,Node.js提供的能力可包括:Node.js中的模块(比如用于提供特定功能或服务的组件)和/或JavaScript运行环境相关信息。Node.js中的模块可通过对用于实现特定功能的JavaScript代码封装得到。每个模块均具有接口(比如API),可提供给应用层供应用程序调用。JavaScript运行环境相关信息可包括但不限于JavaScript引擎的上下文、事件循环相关配置中的一种或多种。其中,上下文用于描述引擎内部的各种对象、状态和功能。JavaScript引擎的上下文中可包括由Node.js进程所预加载的模块的接口(如API)。事件循环相关配置具体可包括Node.js的事件队列的配置,比如事件队列所在的内存区域位置、队列大小等,以便向该事件队列中存取Node.js事件请求和Web事件请求。
在一些实施例中,可将预加载的能力(比如Web引擎)封装为动态语言应用运行平台中的标准模块,作为该平台的一个标准模块预加载到该平台中。图2以该平台为Node.js为例,示例性地示出了预加载有Web引擎的Node.js的示意图。
在一些实施例中,Web引擎由c/c++语言编写,而Node.js支持JavaScript语言,因此需要将Web引擎的符合c/c++标准的API映射为Node.js中符合JavaScript标准的API,并将映射得到的符合JavaScript标准的API提供给应用层,Node.js中保存该API的映射关系。图3示例性地示出了Web引擎的API映射关系示意图。其中,Web引擎中可包括多种组件,比如Window system组件(窗口系统组件)、UI Elements组件(用户界面部件组件)、Layout组件(布局组件)、Event Handling组件(事件处理组件)等,这些符合c/c++标准的组件的API被一一映射为对应的符合JavaScript标准的API。
在一些实施例中,进一步地,预加载的能力还可包括但不限于以下中的一种或多种组合:
-操作系统提供的能力
操作系统提供的能力可包括:操作系统层提供的系统服务等。操作系统层中可包括用于提供系统服务的模块,这些模块可由用于实现特定能力的代码封装得到。每个模块均具有接口(比如API)。本申请实施例中,可通过将操作系统层中的模块的API添加到动态语言引擎(比如JavaScript引擎)的上下文中,实现对操作系统能力的预加载。
-用户自定义的能力
用户自定义的能力,即用户自定义的用于实现特定功能的代码,可被封装为模块,每个模块均具有接口(如API)。本申请实施例中,可通过将用户自定义的模块的API添加到动态语言引擎(比如JavaScript引擎)的上下文中,实现对用户自定义能力的预加载。
在一些实施例中,Node.js中的JavaScript上下文中的模块接口(比如API)被添加到Web引擎的JavaScript上下文中,这样,对于应用程序的开发者来说,可利用Web引擎的JavaScript上下文中包含的API进行应用程序开发,当该应用程序运行时,Node.js线程可通过这些接口调用相应的模块实现相应的功能,即访问这些接口对应的能力。由于Node.js的上行文中的模块接口可包括Node.js中的模块接口,还可包括操作系统提供的模块接口以及用户自定义的模块的接口,从而使得Node.js线程能够访问的能力更加丰富。Node.js的JavaScript上下文中包含有Web引擎的JavaScript上下文中的模块接口也可被添加到Node.js的JavaScript上下文中。
Node.js进程中的主线程称为Node.js线程,它可以共享Node.js进程的运行环境以及Node.js进程预加载的能力。也就是说,Node.js线程可以访问Node.js进程所预加载的各种能力。由于Node.js进程预加载了Web引擎,因此,Node.js线程可以基于Web引擎实现Web引擎所提供的功能,比如页面渲染功能。
图4示例性地示出了预加载Web引擎后Node.js线程和浏览器线程(Browser线程)及相关资源的示意图。如图所示,应用进程中包括Node.js线程和Brower线程,Node.js线程和Browser线程之间可以通信。Node.js线程基于Node.js的事件循环机制进行事件的处理。Node.js线程可基于Web引擎实现Web资源加载的操作。作为一个例子,Node.js线程可通过调用Web引擎提供的页面加载方法,实现页面加载。在页面加载方法的执行过程中,Node.js线程可基于Web引擎中的JavaScript上下文中的API,调用相应的模块(组件)。JavaScript引擎对被调用的模块进行解析,获得操作系统层提供给JavaScript引擎的接口,并基于该接口调用操作系统层提供的能力(比如图中的设备能力、网络服务、电源管理等),以实现页面加载操作。对于图4中所示的应用进程来说,其中的Node.js线程为主线程,Browser线程为子线程,即Browser线程可由Node.js线程创建得到,它们之间可基于线程间通信机制进行通信。该应用进程与其他进程(比如图中位于操作系统层的网络服务模块对应的进程)之间基于进程间通信(Inter-Process Communication,IPC)机制进行通信。
比如,Node.js线程可调用图4中的模块1(网络模块)以执行页面获取方法,在该方法的执行过程中,可基于操作系统层提供的接口调用操作系统层提供的网络服务,以获取所请求的页面。再比如,Node.js线程可调用图4中的模块2(能力获取模块)以执行设备能力(比如显示屏幕大小等设备信息)的获取方法以及根据该设备能力确定显示模式,在该方法的执行过程中,可基于操作系统层提供的接口调用操作系统层提供的设备能力,以获取设备能力信息。
图5a示例性地示出了本申请实施例提供的预加载流程。如图所示,在S510中,进程启动(比如接收到在浏览器窗口中打开一个页面的事件后启动一个Node.js进程)。在S511~S514中,该进程执行初始化过程,在该过程中,该进程预加载网络模块、系统模块、渲染引擎等模块,具体预加载过程可参见前述实施例的描述。该进程可以是Node.js进程。
进一步地,在S511~S514中,第一线程被创建。第一线程通过调用Web引擎提供的新建对象的方法创建Web组件对象,并启动该Web组件对象,创建第二线程。此后第一线程即可基于该Web组件对象,通过调用该对象提供的资源加载方法,在浏览器窗口中加载页面。其中,第一线程可以是Node.js线程,第二线程可以是Browser线程。
图5b示例性地示出了本申请实施例提供的资源加载流程。如图所示,在S520~S523中,当第一线程获得Web事件请求后(比如用户通过浏览器发送HTML请求,以请求打开一个web页面,则用户的上述操作触发生成web事件请求),执行资源加载过程,以加载所请求的web页面,该资源加载过程可包括资源的获取以及页面的渲染等。在该资源加载过程中,第一线程向第二线程发送资源加载请求,接收第二线程根据该资源加载请求返回的指示,根据该指示,基于第一线程所在的进程预加载的资源,对资源加载请求所请求加载的资源进行加载。该过程中,第二线程主要用于实现管理和控制功能可指示第一线程调用资源加载过程所需的系统模块,以实现该资源加载过程;资源获取以及页面渲染等操作由第一线程执行。第一线程可通过调用预加载的模块,比如网络模块、系统模块等,执行相应的任务。需要说明的是,第一线程每次获得Web事件请求后,可根据预加载的模块对该事件请求进行响应。
上述过程中,第二线程向第一线程发送的指示可包括有关资源加载的控制信息(比如控制指令),或者资源加载操作需要使用的资源的指示信息(比如需要调用的API),或者资源加载所需的系统信息。作为一个例子,第二线程可以向第一线程发送的指示中可包括以下控制信息中的一种,以控制第一线程的网页加载操作:开始加载网页的控制信息、停止加载网页的控制信息,加载上一页或下一页的信息。作为另一个例子,第二线程向第一线程发送的指示中可携带系统模块提供的API,使得第一线程可以利用该API调用相关系统模块的函数,以实现诸如加减音量、动态获取设备电池情况、实时获取地理位置或设备震动等功能。再例如,第二线程向第一线程发送的指示也可以包括系统信息(即第第二线程将系统信息传递给第一线程),该系统信息可供第一线程使用,比如该系统信息可包括设备的媒体接入控制(Media Access Control,MAC)地址、设备标识,用户账户信息等。
作为一个例子,web页面加载过程可包括:Node.js线程基于网络模块获取Web事件请求所请求的HTML文档;解析获得到的HTML文档,将HTML文档中的标签转换为文档对象模型(Document Object Model,DOM)树中的DOM节点,得到DOM树结构;解析层叠样式表(Cascading Style Sheets,简称CSS)文件,解析得到的信息与HTML文档中可见的指令(如<b></b>等)被用来构建渲染树(Render树),这棵树主要由一些包含颜色和宽高等属性组成的矩形组成,它们将依次按顺序显示在屏幕上;Node.js线程根据Render树执行布局过程,确定每个节点在屏幕上对应的坐标及其覆盖和回流情况等,遍历该Render树,使用UI后端层绘制每个节点。
在一些实施例中,在S521中,Node.js线程可使用Node.js中预加载的资源执行该方法。比如,Node.js线程可基于Web引擎的JavaScript上下文中模块的接口,通过调用对应模块提供的方法,加载所请求的资源。由于Web引擎的JavaScript上下文中的接口,可包括Node.js中原有的模块的接口,还可包括操作系统层中的模块的接口以及用户自定义的模块的接口,从而将各种能力融合在Web引擎中。
在另一些实施例中,在S521中,Node.js线程可基于在Node.js启动过程中初始化的Node.js中的JavaScript引擎,对所请求加载的Web资源进行加载,而无需再次初始化该JavaScript引擎。具体地,Node.js线程可根据Web引擎提供的用于资源加载的模块的接口,调用相应的模块;通过Node.js进程预加载的JavaScript引擎对该模块进行解析,得到该模块所调用的操作系统中的模块接口;根据解析得到的模块接口调用操作系统中的相应模块。
Node.js和Web引擎均采用事件循环(Event loop)机制。现有技术中,Web引擎的事件循环与Node.js的事件循环彼此独立。本申请实施例中,Web引擎被预加载到动态语言应用运行平台(如Node.js)中,因此Web引擎的事件与该平台的事件可基于事件队列进行事件循环。在没有事件发生的情况下,事件循环处于等待状态并阻塞,当有事件发生时(比如Web引擎有事件发生时),会将事件循环唤醒。比如,当Web引擎有事件发生时,可通过异步方式唤醒事件循环,该Web引擎的事件被存储于事件队列。该事件队列通常采用先进先出的机制。
图6以Node.js为例,示例性地示出了本申请实施例的事件循环机制。如图所示,Node.js事件请求和Web事件请求按照发生的先后顺序被存储在事件队列中。在本申请实施例中,将Web事件请求作为一个整体参与事件循环。比如可以将Web引擎事件存储为一个子队列。Node.js线程从事件队列中读取事件进行响应时,如果当前读取到的是该子队列,根据调度策略的规定,将该子队列中的全部事件请求取出,Web引擎事件关联的处理程序(Handler)会处理该子队列中的所有事件请求,在全部响应完成后,返回到事件循环,从事件队列继续读取其他的事件请求进行响应,实现了将Web引擎中的事件处理融入到了Node的事件循环中。在另外的例子中,调度策略也可以规定:如果当前读取到的是Web引擎对应的子队列,则根据预设的处理能力(比如规定一次取出K个事件请求进行响应,K的取值可设置),将该子队列中的相应数量的事件请求取出,Web事件请求的处理程序(Handler)会处理所取出的Web事件请求,在响应这些事件请求后,返回到事件循环。
通过以上描述可以看出,本申请的上述实施例中,Node.js进程预加载有资源,其中,所述Node.js进程预加载的资源中包括Web引擎。同一Node.js进程中的Node.js线程向浏览器线程发送资源加载请求,其中,所述Node.js线程为主线程,所述浏览器线程为子线程;所述Node.js线程接收所述浏览器线程根据所述资源加载请求返回的指示;所述Node.js线程根据所述指示,基于所述Node.js进程预加载的资源,对所述资源加载请求所请求加载的资源进行加载,从而实现了Web引擎与Node.js的融合。
由于Web引擎的通用性,因此具有较好的跨平台能力。本申请实施例可在保证Web引擎跨平台应用的前提下,将其融入Node.js,使其能够访问Node.js提供的能力,为提供功能更加灵活和丰富的应用提供了可能性。
本申请的上述实施例可应用于移动终端,比如手机、智能穿戴设备、车载设备、个人数字助理(Personal Digital Assistant,PDA)等。以应用于基于云操作系统的手机为例,采用本申请实施例,可由Node.js的主线程基于Web引擎实现页面渲染,从而使得页面渲染操作可使用Node.js主线程所能访问的能力,实现了Node.js与Web引擎的融合。
基于相同的技术构思,本申请实施例还提供了一种资源加载装置,可实现前述实施例描述的资源加载流程。
图7示例性地示出了本申请实施例提供的资源加载装置的结构示意图。该装置可包括:第一线程单元701和第二线程单元702,第一线程单元701和所述第二线程单元702属于同一进程单元,所述第一线程单元运行于动态语言应用运行平台。进一步地,还装置还可包括事件调度单元703。
第一线程单元701用于:向所述第二线程单元发送资源加载请求,接收第二线程单元702根据所述资源加载请求返回的指示;以及,根据所述指示,基于所述进程单元预加载的资源,对所述资源加载请求所请求加载的资源进行加载;其中,所述进程单元预加载的模块中包括Web引擎。
可选地,所述进程对应的事件队列中包括所述Web引擎对应的子队列,所述子队列中包括Web事件请求。事件调度单元703用于:从所述事件队列中获取待处理的事件请求,若获取到所述子队列,则按照时间先后顺序获取所述子队列中的Web事件请求,并将获取到的Web事件请求发送给所述第一线程单元。第一线程单元701具体用于:接收到Web事件请求后向所述第二线程单元702发送资源加载请求。
可选地,所述进程对应的事件队列中还包括动态语言应用运行平台事件请求。事件调度单元703还用于:所述子队列中的Web事件请求处理完成后,返回到所述事件队列,并获取待处理的动态语言应用运行平台事件请求;或者,所述子队列中的设定数量的Web事件请求处理完成后,返回到所述事件队列,并获取待处理的动态语言应用运行平台事件请求。
可选地,所述进程单元具体用于:启动时进行资源的预加载,所预加载的资源中包括所述Web引擎,以及包括动态语言应用运行平台所提供的模块、操作系统提供的模块、自定义的模块中的一种或多种组合;其中,所述模块通过对实现特定功能的代码进行封装得到。
可选地,所述进程单元具体用于:启动时进行资源的预加载,所预加载的资源中包括动态语言上下文中包括Web引擎提供的模块的接口,以及所述进程预加载的模块的接口,所述进程预加载的模块包括:动态语言应用运行平台所提供的模块、操作系统提供的模块、自定义的模块中的一种或多种组合。
可选地,第一线程单元701具体用于:根据所述Web引擎提供的接口,调用相应的模块,被调用的模块用于加载所请求加载的资源;通过所述进程预加载的动态语言引擎对该模块进行解析,得到该模块所调用的操作系统中的模块接口;根据解析得到的模块接口调用操作系统中的相应模块。
可选地,所述第一线程单元具体用于:根据web页面访问请求,向第二线程发送资源加载请求,所述资源加载请求用于请求加载所请求的web页面的资源。
可选地,所述第一线程单元为所在进程中的主线程单元,所述第二线程单元为所在进程中的子线程单元。
可选地,所述动态语言应用运行平台为Node.js,所述第一线程单元为Node.js线程单元,所述第二线程单元为浏览器线程单元。
基于相同的技术构思,本申请实施例还提供了一种装置800,该装置800可实现前述实施例描述的流程。
图8示例性地示出了根据各种实施例的示例装置800。装置800可包括一个或多个处理器802,系统控制逻辑801耦合于至少一个处理器802,非易失性存储器(non-volatilememory,NMV)/存储器804耦合于系统控制逻辑801,网络接口806耦合于系统控制逻辑801。
处理器802可包括一个或多个单核处理器或多核处理器。处理器802可包括任何一般用途处理器或专用处理器(如图像处理器、应用处理器基带处理器等)的组合。
一个实施例中的系统控制逻辑801,可包括任何适当的接口控制器,以提供到处理器802中的至少一个的任何合适的接口,和/或提供到与系统控制逻辑801通信的任何合适的设备或组件的任何合适的接口。
一个实施例中的系统控制逻辑801,可包括一个或多个内存控制器,以提供到系统内存803的接口。系统内存803用来加载以及存储数据和/或指令。例如,对应装置800,在一个实施例中,系统内存803可包括任何合适的易失性存储器。
NVM/存储器804可包括一个或多个有形的非暂时的计算机可读介质,用于存储数据和/或指令。例如,NVM/存储器804可包括任何合适的非易失性存储装置,如一个或多个硬盘(hard disk device,HDD),一个或多个光盘(compact disk,CD),和/或一个或多个数字通用盘(digital versatile disk,DVD)。
NVM/存储器804可包括存储资源,该存储资源物理上是该系统所安装的或者可以被访问的设备的一部分,但不一定是设备的一部分。例如,NVM/存储器804可经由网络接口806被网络访问。
系统内存803以及NVM/存储器804可分别包括临时的或持久的指令810的副本。指令810可包括当由处理器802中的至少一个执行时导致装置800实现图5a、图5b描述的方法之一或组合的指令。各实施例中,指令810或硬件、固件,和/或软件组件可另外地/可替换地被置于系统控制逻辑801,网络接口806和/或处理器802。
网络接口806可包括一个接收器来为装置800提供无线接口来与一个或多个网络和/或任何合适的设备进行通信。网络接口806可包括任何合适的硬件和/或固件。网络接口806可包括多个天线来提供多输入多输出无线接口。在一个实施例中,网络接口806可包括一个网络适配器、一个无线网络适配器、一个电话调制解调器,和/或无线调制解调器。
在一个实施例中,处理器802中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装以形成系统级封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上以形成系统芯片。
装置800可进一步包括输入/输出装置805。输入/输出装置805可包括用户接口旨在使用户与装置800进行交互,可包括外围组件接口,其被设计为使得外围组件能够与系统交互,和/或,可包括传感器,旨在确定环境条件和/或有关装置800的位置信息。