CN106537335B - 操作***启动加速 - Google Patents

操作***启动加速 Download PDF

Info

Publication number
CN106537335B
CN106537335B CN201580037813.0A CN201580037813A CN106537335B CN 106537335 B CN106537335 B CN 106537335B CN 201580037813 A CN201580037813 A CN 201580037813A CN 106537335 B CN106537335 B CN 106537335B
Authority
CN
China
Prior art keywords
service
computing device
vehicle computing
last
vehicle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580037813.0A
Other languages
English (en)
Other versions
CN106537335A (zh
Inventor
P.拉曼
P.查克拉博蒂
E.瓦盖斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harman International Industries Inc
Original Assignee
Harman International Industries Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harman International Industries Inc filed Critical Harman International Industries Inc
Publication of CN106537335A publication Critical patent/CN106537335A/zh
Application granted granted Critical
Publication of CN106537335B publication Critical patent/CN106537335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/442Shutdown

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Navigation (AREA)
  • Fittings On The Vehicle Exterior For Carrying Loads, And Devices For Holding Or Mounting Articles (AREA)

Abstract

本文公开了用于选择性地初始化计算装置的操作***的元件的方法和***的实施方案。在一些实施方案中,在计算装置的操作***的初始化期间选择性地加载类别的方法包括:起始服务加载进程,通过所述服务加载进程加载关键服务以及启动人机接口。所述方法还可以包括:通过所述人机接口启动最后一次使用的应用程序,以及响应于使用其余服务的请求而启动所述其余服务。

Description

操作***启动加速
相关申请的交叉引用
本申请要求于2014年7月10日提交的标题为“OPERATING SYSTEM STARTUPACCELERATION”的印度专利申请号3426/CHE/2014的优先权,所述专利申请的全部内容出于所有目的以引用的方式并入本文。
技术领域
本公开涉及加速用于计算装置的操作***的初始化例程。
背景技术
用于计算装置的操作***可以执行初始化例程以启动必要的服务、资源和驱动程序,以便使用计算装置的硬件组件。初始化例程速度可以是基于加载的服务、资源和驱动程序的数目,并且在初始化例程完成之前,计算装置的一些功能性可能不可用。
发明内容
对计算装置通电与初始化计算装置的操作***/应用程序之间的可接受的延时量可以基于计算装置的环境和/或用途而变化。例如,在车辆内利用的计算装置可能具有比个人计算装置更严格的延时考量(例如,更小的可接受的延时量),因为车载计算装置的功能性可能会影响车辆的功能性、安全特性等。本文公开了用于加速计算装置的初始化例程的方法和***的实施方案。在一些实施方案中,在计算装置的操作***的初始化期间选择性地加载类别的方法包括:起始服务加载进程,通过所述服务加载进程加载关键服务以及启动人机接口。所述方法还可以包括:通过所述人机接口启动最后一次使用的应用程序,以及响应于使用其余服务的请求而启动所述其余服务。
在一些实施方案中,车载计算装置可以包括处理器和存储装置,所述存储装置存储用于初始化车载计算装置的操作***的指令,所述指令可由处理器执行来起始服务加载进程,通过服务加载进程加载关键服务,以及启动人机接口。所述指令可以进一步被执行来通过人机接口启动最后一次使用的应用程序,并且响应于使用其余服务的请求而启动其余服务。
在一些实施方案中,车载计算装置包括处理器和存储装置,所述存储装置存储用于初始化车载计算装置的操作***的指令,所述指令可由处理器执行来起始服务加载进程,通过服务加载进程加载关键服务,启动人机接口并且通过人机接口启动最后一次使用的应用程序。所述指令可以进一步被执行来在服务管理器处接收对由最后一次使用的应用程序所使用的服务的请求,起始包括在所述请求中的尚未在计算装置上运行的任何服务,并且针对包括在请求中的每一项服务将服务句柄返回给最后一次使用的应用程序。
附图说明
通过参考附图阅读以下对非限制性实施方案的描述可以更好地理解本公开,其中在下文中:
图1示出根据本公开的一个或多个实施方案的车辆的车厢内部的示例部分视图;
图2是根据本公开的一个或多个实施方案的加速计算装置上的应用虚拟机的初始化的示例方法的流程图;
图3示出根据本公开的一个或多个实施方案的示例车载计算***的方框图;
图4是根据本公开的一个或多个实施方案的用于在操作***中选择性地加载服务的示例方法的流程图;
图5是根据本公开的一个或多个实施方案的用于管理计算装置中的操作***的服务的示例方法的流程图;
图6示出根据本公开的一个或多个实施方案的可以在不同阶段加载的示例驱动程序和相关联的硬件实例;
图7是根据本公开的一个或多个实施方案的用于选择性地初始化初始化的驱动程序的硬件实例的示例方法的流程图;以及
图8是根据本公开的一个或多个实施方案的用于在计算装置上加载应用程序的示例方法的流程图。
具体实施方式
如上所述,初始化例程的速度可以限定启动计算装置与启用计算装置的功能性之间的延时。例如,车辆内的计算装置(例如,车载计算装置)可以响应于起动车辆而起始,然而在计算装置完成初始化例程之前,诸如导航***、音频控制件等功能性可能不可用。本公开认识到,一些初始化例程可能会加载对于计算装置的初始操作而言不必要的类别、资源、服务/应用程序以及与特定硬件驱动程序相关联的硬件实例。由于这些元件中的每一个的加载会增加计算装置的初始化时间,所以选择性地加载这些元件可以允许计算装置更高效地初始化,由此缩短装置可用性的延时。下文描述的方法和***使得能够基于来源于以下考虑因素的每个元件的优先级来选择类别、资源、服务、应用程序以及待配置的硬件实例,所述考虑因素诸如:装置特征、装置的预期用途、装置的早先用途、请求的功能性、有关装置功能性/初始化例程/应用程序的元件的关键性/相关性等。以此方式,可以智能地选择特征的加载/初始化,以缩短初始化时间而无需牺牲计算装置的功能性。
图1示出一种类型环境的示例部分视图:车辆102的车厢100的内部,其中可能乘坐了驾驶员和/或一名或多名乘客。图1的车辆102可以是包括驱动轮(未示出)和内燃机104的机动车。内燃机104可以包括一个或多个燃烧室,所述一个或多个燃烧室可以通过进气通道接收进入的空气并且通过排气通道排放燃烧气体。车辆102可以是公路汽车,以及其他类型的车辆。在一些实例中,车辆102可以包括混合推进***,所述混合推进***包括能量转换装置,所述能量转换装置可操作来从车辆运动和/或发动机吸收能量并且将所吸收的能量转换成适合于由能量存储装置存储的能量形式。车辆102可以包括完全电动车辆,合并式燃料电池、太阳能捕获元件和/或用于为车辆提供动力的其他能量存储***。
如图所示,仪表板106可以包括车辆102的驾驶员(也称为用户)可接近的各种显示器和控制件。例如,仪表板106可以包括车载计算***109(例如,信息娱乐***)的触摸屏108、音频***控制面板和仪表组110。虽然图1所示的示例***包括可以通过车载计算***109的用户界面执行的音频***控制件,诸如无单独音频***控制面板的触摸屏108,但是在其他实施方案中,车辆可以包括音频***控制面板,所述音频***控制面板可以包括用于诸如收音机、光盘播放器、MP3播放器等常规车辆音频***的控制件。音频***控制件可以包括用于控制通过车辆扬声器***的扬声器112输出的音频的一个或多个方面的特征。例如,车载计算***或音频***控制件可以控制:音频输出的音量;车辆扬声器***的个别扬声器当中的声音分布;音频信号的均衡化;和/或音频输出的任何其他方面。在另外的实例中,车载计算***109可以基于直接通过触摸屏108接收的用户输入或者基于通过外部装置150和/或移动装置128接收的有关用户(诸如用户的身体状态和/或环境)的数据来调节无线电台选择、播放列表选择、音频输入的来源(例如,来自收音机或CD或MP3)等。
在一些实施方案中,车载计算***109的一个或多个硬件元件,诸如触摸屏108、显示屏、各种控制拨轮、旋钮和按钮、存储器、处理器以及任何接口元件(例如,连接器或端口),可以形成安装在车辆的仪表板106中的集成音响本体(integrated head unit)。音响本体可以固定地或可移除地附接在仪表板106中。在附加或替代实施方案中,车载计算***的一个或多个硬件单元可以是模块化的,并且可以安装在车辆的多个位置处。车载计算***109可以包括处理器和存储器(例如,存储装置),所述存储器存储可由处理器执行的指令以执行各种动作、任务等。例如,车载计算***109的存储器可以存储用于管理车载计算***的应用程序以及由车载计算***执行的其他数据处理、控制和动作的操作***。
仪表组110可以包括诸如燃油表、转速表、速度计和里程表等各种计量器以及指示器和警告灯。方向盘114可以在仪表组110下方从仪表板突出。任选地,方向盘114可以包括控制件116,所述控制件116可以与触摸屏108结合使用来操纵车载计算***的特征并且控制车载计算***。除了图1所描画的组件之外,应了解,仪表板106还可以包括附加组件,诸如门窗控制件、也可以用作低压电源插座的点烟器、置物箱和/或任何其他合适的元件。在一个或多个实施方案中,通过气候控制***通风口118对车载气候(诸如,车厢温度)进行控制可以使用触摸屏108来执行,并且因此仪表板106中可能不包括单独的气候控制接口。然而,在替代实施方案中,可以提供单独的气候控制接口。
车厢100可以包括用于监测车辆、用户和/或环境的一个或多个传感器。例如,车厢100可以包括一个或多个座椅安装式压力传感器120,所述一个或多个座椅安装式压力传感器120被配置来测量施加至座椅的压力以确定用户的存在。车厢100可以包括一个或多个门传感器122,所述一个或多个门传感器122被配置来监测门活动,诸如门的打开和/或关闭、门的上锁、门的窗户的操作和/或任何其他合适的门活动事件。湿度传感器124可以被包括来测量车厢的含水量。麦克风126可以被包括来接收呈语音命令形式的用户输入,以使得用户能够进行电话呼叫和/或测量车厢100中的环境噪声。应理解,图1所示的传感器的放置是示例性的,并且一个或多个附加或可替代的传感器可以定位在车辆的任何合适的位置处。例如,附加传感器可以定位在发动机舱中、车辆的外表面上和/或其他合适的位置处,以便提供有关车辆的操作、车辆的环境条件、车辆的用户等的信息。有关车辆的环境条件、车辆状况或车辆驾驶员的信息也可以从位于车辆外部/与所述车辆分开(也就是说,不为车辆***的一部分)的传感器接收,诸如从耦合至外部装置150和/或移动装置128的传感器接收。
车厢100还可以包括在行进之前、在行进期间和/或在行进之后存储在车辆中的一个或多个用户对象,诸如移动装置128。移动装置可以包括智能手机、平板计算机、膝上型计算机、便携式媒体播放器和/或任何合适的移动计算装置。移动装置128可以通过通信链路130连接至车载计算***。通信链路130可以是有线的(例如,通过通用串行总线[USB]、移动高清链路[MHL]、高清多媒体接口[HDMI]等)或者无线的(例如,通过BLUETOOTH、WI-FI、近场通信[NFC]、蜂窝连接等),并且被配置来在移动装置与车载计算***之间提供双向通信。例如,通信链路130可以从各种车辆***(诸如车辆音频***、气候控制***等)和触摸屏108向移动装置128提供传感器和/或控制信号,并且可以从移动装置128向车载***和触摸屏108提供控制和/或显示信号。通信链路130还可以从车载电源向移动装置128提供电力,以便于为移动装置的内置电池充电。
虽然移动装置128被示出为在空间上与车载计算***分离并且通过大致外部通信链路(例如,电缆或射频信号)来连接,但是应理解,插槽132或其他存储结构可以形成在车辆的仪表板106中或其他位置处,以将移动装置固持在特定位置处。存储结构可以包括集成连接器134,所述集成连接器134可以附接或“对接”移动装置128,以便在移动装置与计算***之间提供大致内部通信链路。
车载计算***109还可以通信地耦合至由用户操作的但位于车辆102外部的附加装置,诸如一个或多个外部装置150。在所描画的实施方案中,外部装置150位于车辆102的外侧,但是将了解,在替代实施方案中,外部装置可以位于车厢100内侧。外部装置可以包括服务器计算***、个人计算***、便携式电子装置、电子手环、电子头带、便携式音乐播放器、电子活动跟踪装置、计步器、智能手表、GPS***等。外部装置150可以通过通信链路136来连接至车载计算***,所述通信链路136如参考通信链路130所讨论可以是有线的或无线的,并且被配置来在外部装置与车载计算***之间提供双向通信。例如,外部装置150可以包括一个或多个传感器,并且通信链路136可以从外部装置150向车载计算***109和触摸屏108传输传感器输出。外部装置150还可以存储和/或接收有关上下文数据、用户行为/偏好、操作规则等的信息,并且可以从外部装置150向车载计算***109和触摸屏108传输这类信息。
车载计算***109可以分析从外部装置150、移动装置128和/或其他输入源接收的输入,并且为各种车载***(诸如气候控制***或音频***)选择设定,通过触摸屏108和/或扬声器112提供输出,与移动装置128和/或外部装置150通信,和/或基于评估来执行其他动作。在一些实施方案中,所述评估的全部或一部分可以由移动装置128和/或外部装置150执行。
在一些实施方案中,外部装置150的一个或多个可以间接地通过移动装置128和/或外部装置150中的另一个通信地耦合至车载计算***109。例如,通信链路136可以将外部装置150通信地耦合至移动装置128,以使得来自外部装置150的输出被转送至移动装置128。然后,可以将从外部装置150接收的数据与由移动装置128收集的数据聚集在移动装置128处,所述聚集的数据之后通过通信链路130传输至车载计算***109和触摸屏108。类似数据聚集可以在服务器***处发生,并且然后通过通信链路136/130传输至车载计算***109和触摸屏108。
图2是加速诸如图1的车载计算***109的计算装置上的应用虚拟机的初始化的方法200的流程图。例如,方法200可以被利用作为用于ANDROID操作***初始化的Zygote进程的一部分。在202处,方法200包括初始化应用虚拟机(例如,用于ANDROID操作***的Dalvik)。例如,这种初始化可以通过为计算装置通电或以其他方式指导计算装置开始操作来触发。在204处,所述方法包括使用CPU线程池来加载选自pre-system_server类别列表的类别。如206处所指示,CPU线程池中的线程的数目是基于CPU内核的数目乘以二。每个线程可以用于加载类别、加载资源和/或执行任何其他合适的任务。
在一些***中,可以在预加载所有类别和资源之后加载system_server进程,以便于开始加载其他服务来操作计算装置。system_server进程可以是服务加载进程,所述服务加载进程被配置来将操作***的初始化期间使用的服务初始化,并且向服务管理器注册所述服务。system_server进程还可以起始活动管理器,以管理操作***的其他活动。通过仅加载pre-system_server类别列表中的类别而不是所有类别,***可以通过减少预加载的类别的数目来减少专门用于预加载类别的时间量。pre-system_server类别列表可以基于以下各项来生成:每个类别的加载时间、使用每个类别的进程的数目和/或指示每个类别的优先级的任何其他参数。例如,pre-system_server类别列表内的类别可以具有小于阈值加载时间(例如,在一个非限制性实例中是1250μs)的加载时间,并且可能被超过阈值数目的进程(例如,在一个非限制性实例中是10个进程)使用。pre-system_server类别列表可以包括用以实现对system_server的加载的system_server进程。在一些实例中,system_server可以是在pre-system_server类别列表中的所有其他类别都被加载之后加载的最后一个进程。下文在附录I中提供了用于ANDROID操作***的pre-system_server类别的示例列表。所述示例列表可能不是穷举的,并且基于诸如计算装置上的操作***/软件、计算装置/硬件、计算装置的用途/环境等因素,可以包括附加类别或替代类别,或者从所述列表去除附加类别或替代类别。应理解,可以在不脱离本公开的范围的情况下利用任何合适的阈值加载时间和阈值数目的进程来生成pre-system_server类别列表。
在208处,方法200包括使用线程池来加载资源。资源可以包括应用程序或其他软件利用的附加文件和内容,诸如布局定义、动画指令、位图、用户界面字符串等。在一些实例中,可以在208处加载初始化期间加载的所有资源。在其他实例中,可以与如上所述的类别类似的方式分阶段加载资源(例如,在pre-system_server阶段加载的资源的子集,以及在post-system_server阶段加载的资源的子集)。在210处,所述方法进行到将system_server进程分叉,以便于加载system_server。分叉可以包括复制现有进程,并且将待加载的新进程覆盖在现有进程的副本上。system_server进程可以根据需要用于对其他应用程序进行分叉。因此,方法200进行到212,以等待进程间通信套接字(inter-process communicationsocket),从而接收将应用程序分叉(例如,基于启动应用程序的请求)的命令。在接收到将应用程序分叉的这种命令之后,system_server进程可以创建其自身的副本,并且将所请求的应用程序覆盖在所述副本上以加载所请求的应用程序。
如214处所指示,可以在将system_server进程分叉之后从post-system_server类别列表加载类别。post-system_server类别列表可以基于上文相对于pre-system_server类别列表所描述的加载时间阈值和/或进程阈值来生成。例如,post-system_server类别列表可以包括以下类别,所述类别将被加载作为初始化程序的一部分但是具有超过上文描述的加载时间阈值(例如,在一个非限制性实例中是1250μs)的加载时间,并且被超过阈值数目的进程(例如,在一个非限制性实例中是10个进程)利用。下文在附录II中提供了用于ANDROID操作***的post-system_server类别的示例列表。所述示例列表可能不是穷举的,并且基于诸如计算装置上的操作***/软件、计算装置/硬件、计算装置的用途/环境等因素,可以包括附加类别或替代类别,或者可以从所述列表去除附加类别或替代类别。应理解,可以在不脱离本公开的范围的情况下利用任何合适的阈值加载时间和阈值数目的进程来生成post-system_server类别列表。在一些实例中,可以利用附加加载阶段。例如,pre-system_server类别列表和/或post-system_server类别列表可以被划分成附加列表,以便在初始化例程期间的不同阶段进行加载。
图3示出在车辆301内配置和/或集成在所述车辆301内的车载计算***300的方框图。车载计算***300可以是图1的车载计算***109的实例,和/或可以执行本文描述的方法中的一种或多种,诸如在一些实施方案中为图2的方法200。在一些实例中,车载计算***可以是车辆信息娱乐***,所述信息娱乐***被配置来向车辆用户提供基于信息的媒体内容(音频和/或视觉媒体内容,包括娱乐内容、导航服务等),从而增强操作人员的车载体验。车辆信息娱乐***可以包括或者耦合至各种车辆***、子***、硬件组件以及集成在或可集成到车辆301中的软件应用程序和***,以便于增强驾驶员和/或乘客的车载体验。
车载计算***300可以包括一个或多个处理器,所述一个或多个处理器包括操作***处理器314和接口处理器320。操作***处理器314可以在车载计算***上执行操作***,并且控制车载计算***的输入/输出、显示、播放以及其他操作。接口处理器320可以通过车辆***间通信模块322与车辆控制***330对接。
车辆***间通信模块322可以向其他车辆***331和车辆控制元件361输出数据,同时还例如借助于车辆控制***330从其他车辆组件和***331、361接收数据输入。当输出数据时,车辆***间通信模块322可以通过总线提供对应于以下各项的信号:车辆的任何状态、车辆周围环境或连接至车辆的任何其他信息源的输出。车辆数据输出可以包括例如模拟信号(诸如,电流速度);由个别信息源(诸如,时钟、温度计、诸如全球定位***[GPS]传感器的位置传感器等)提供的数字信号;通过车辆数据网络(诸如,发动机控制器局域网[CAN]总线,发动机相关信息可以通过所述总线来传递;气候控制CAN总线,气候控制相关信息可以通过所述总线来传递;以及多媒体数据网路,多媒体数据通过所述网络在车辆中的多媒体组件之间传递)传播的数字信号。例如,车载计算***可以从发动机CAN总线取回以下信息:由车轮传感器估计的车辆的当前速度;由电池供电的车辆和/或车辆的功率分布***的功率状态;车辆的点火状态等。除此之外,在不脱离本公开的范围的情况下,还可以使用诸如以太网等其他对接手段。
非易失性存储装置308可以被包括在车载计算***300中以存储呈非易失性形式的数据,诸如可由处理器314和320执行的指令。存储装置308可以存储应用程序数据,以使得车载计算***300能够运行应用程序以便连接至基于云的服务器,和/或收集用于传输至基于云的服务器的信息。所述应用程序可以取回由以下各项收集的信息:车辆***/传感器;输入装置(例如,用户接口318);与车载计算***通信的装置(例如,通过蓝牙链路连接的移动装置)等。车载计算***300还可以包括易失性存储器316。易失性存储器316可以是随机存取存储器(RAM)。诸如非易失性存储装置308和/或易失性存储器316等非暂态存储装置可以存储指令和/或代码,所述指令和/或代码在由处理器(例如,操作***处理器314和/或接口处理器320)执行时控制车载计算***300以执行本公开中所描述的动作中的一个或多个。
麦克风302可以被包括在车载计算***300中,以从用户接收语音命令,测量车辆中的环境噪声,确定是否根据车辆的声学环境对来自车辆的扬声器的音频进行调谐等。语音处理单元304可以处理语音命令,诸如从麦克风302接收的语音命令。在一些实施方案中,车载计算***300可能也能够接收语音命令,并且使用包括在车辆的音频***332中的麦克风来对环境车辆噪声进行取样。
一个或多个附加传感器可以被包括在车载计算***300的传感器子***310中。例如,传感器子***310可以包括摄像头,诸如用于协助用户停靠车辆的后视摄像头和/或用于识别用户(例如,使用面部识别和/或用户姿势)的车厢摄像头。车载计算***300的传感器子***310可以与各种车辆传感器通信并且从其接收输入,并且可以进一步接收用户输入。例如,由传感器子***310接收的输入可以包括:变速箱齿轮位置、变速箱离合器位置、气动踏板输入、制动器输入、变速箱选择器位置、车辆速度、发动机速度、经过发动机的空气质量流量、环境温度、进入的空气温度等,以及来自以下各项的输入:气候控制***传感器(诸如,传热流体温度、防冻剂温度、风扇速度、乘客舱温度、所需的乘客舱温度、环境湿度等)、检测由用户发出的语音命令的音频传感器、从车辆的小型终端(fob)接收命令且任选地跟踪所述小型终端的地理位置/接近度的小型终端传感器等。虽然某些车辆***传感器可以单独与传感器子***310通信,但是其他传感器可以与传感器子***310和车辆控制***330两者通信,或者可以间接地通过车辆控制***330与传感器子***310通信。车载计算***300的导航子***311可以生成和/或接收导航信息,诸如位置信息(例如,通过GPS传感器和/或来自传感器子***310的其他传感器)、路线引导、交通信息、兴趣点(POI)识别和/或为驾驶员提供其他导航服务。
车载计算***300的外部装置接口312可能可耦合至位于车辆301外部的一个或多个外部装置340,和/或与所述一个或多个外部装置340通信。虽然所述外部装置被示出为位于车辆301的外部,但是应理解,所述外部装置可以临时地容纳在车辆301中,诸如当用户在操作车辆301的同时操作外部装置时。换句话说,外部装置340不与车辆301形成一体。外部装置340可以包括移动装置342(例如,通过蓝牙连接来连接)或替代的启用蓝牙的装置352。移动装置342可以是移动电话、智能手机、可以通过有线和/或无线通信与车载计算***通信的佩戴式装置/传感器或者其他便携式电子装置。其他外部装置包括外部服务346。例如,外部装置可以包括与车辆分开且位于车辆外部的额外车辆装置。其他外部装置包括外部存储装置354,诸如固态驱动器、笔式驱动器、USB驱动器等。在不脱离本公开的范围的情况下,外部装置340可以无线地或者通过连接器而与车载计算***300通信。例如,外部装置340可以通过外部装置接口312经由网络360、通用串行总线(USB)连接、直接有线连接、直接无线连接和/或其他通信链路来与车载计算***300通信。外部装置接口312可以提供通信接口,以使得车载计算***能够与同驾驶员的联系人相关联的移动装置通信。例如,外部装置接口312可以针对与驾驶员的联系人相关联的移动装置实现待建立的电话呼叫和/或待发送(例如,通过蜂窝通信网络)的文本消息(例如,SMS、MMS等)(例如,SMS服务、电话服务和/或电子邮件服务)。
一个或多个应用程序344可能可在移动装置342上操作。举例来说,移动装置应用程序344可以***作来聚集有关用户与移动装置的交互的用户数据。例如,移动装置应用程序344可以聚集有关以下各项的数据:由用户在移动装置上收听的音乐播放列表、电话通话记录(包括由用户接听的电话通话的频率和持续时间)、包括用户频繁光顾的位置以及在每个位置处花费的时间量的位置信息等。收集的数据可以由应用程序344通过网络360传送至外部装置接口312。除此之外,可以在移动装置342处通过外部装置接口312从车载计算***300接收特定用户数据请求。特定数据请求可以包括有关以下各项的请求:确定用户所处地理位置;用户的位置处的环境噪声级和/或音乐类型;用户的位置处的环境天气条件(温度、湿度等)等。移动装置应用程序344可以向移动装置342的组件(例如,麦克风等)或其他应用程序(例如,导航应用程序)发送控制指令,以使得所请求的数据能够被收集到移动装置上。移动装置应用程序344然后可以将收集的信息转送回到车载计算***300。
类似地,一个或多个应用程序348可能可在外部服务346上操作。举例来说,外部服务应用程序348可以***作来聚集和/或分析来自多个数据源的数据。例如,外部服务应用程序348可以聚集来自用户的一个或多个社交媒体账户的数据、来自车载计算***的数据(例如,传感器数据、日志文件、用户输入等)、来自互联网查询的数据(例如,天气数据、POI数据)等。收集的数据可以传输至另一装置和/或由应用程序分析来确定驾驶员、车辆和环境的情况并且基于所述情况来执行动作(例如,向其他装置请求数据/发送数据)。
车辆控制***330可以包括用于控制不同车载功能中所涉及的各种车辆***331的多个方面的控制件。这些可以包括例如控制以下各项:用于向车辆乘员提供音频娱乐的车辆音频***332的方面;用于满足车辆乘员的车厢制冷或供暖需求的气候控制***334的方面;以及用于使得车辆乘员能够与他人建立电信链接的电信***336的方面。
音频***332可以包括一个或多个声音再现装置,所述声音再现装置包括诸如扬声器等电磁换能器。车辆音频***332可以是无源的或诸如通过包括功率放大器而变为有源的。在一些实例中,车载计算***300可以是用于声音再现装置的唯一音频源,或者可能存在连接至音频再现***的其他音频源(例如,外部装置诸如移动电话)。任何此类外部装置到音频再现装置的连接可以是模拟的、数字的或模拟技术和数字技术的任何组合。
气候控制***334可以被配置来在车辆301的车厢或乘客舱内提供舒适的环境。气候控制***334包括实现受控的通风的组件,诸如通风口、取暖器、空调、集成取暖器以及空调***等。链接至供暖和空调设置的其他组件可以包括:挡风玻璃除霜和除雾***,其能够清洁挡风玻璃;以及通风空气过滤器,其用于净化通过新鲜空气入口进入乘客舱的外部空气。
车辆控制***330还可以包括用于调节各种车辆控制件361(或车辆***控制元件)的与车辆的车厢内的发动机和/或辅助元件有关的设定的控制件,所述控制件诸如方向盘控制件362(例如,方向盘安装式音频***控制件、巡航控制件、挡风玻璃雨刮器控制件、顶灯控制件、转向灯控制件等)、仪表板控制件、麦克风、加速器/制动器/离合器踏板、变速装置、定位在驾驶员或乘客车门中的门/窗控制件、座椅控制件、车厢灯控制件、音频***控制件、车厢温度控制件等。控制信号还可以控制车辆的音频***332的一个或多个扬声器处的音频输出。例如,控制信号可以调节音频输出特征,诸如音量、均衡化、音频图像(例如,用以产生在用户看来是源自一个或多个限定位置的音频输出的音频信号的配置)、多个扬声器当中的音频分布等。类似地,控制信号可以控制气候控制***334的通风口、空调和/或取暖器。例如,控制信号可以增加对车厢的特定部段的冷空气的递送。
定位在车辆的外侧上的控制元件(例如,用于安全***的控制件)也可以诸如通过通信模块322连接至计算***300。车辆控制***的控制元件可以物理地且永久地定位在车辆上和/或车辆中,以便接收用户输入。除了从车载计算***300接收控制指令之外,车辆控制***330还可以从由用户操作的一个或多个外部装置340,诸如从移动装置342接收输入。这允许基于从外部装置340接收的用户输入来对车辆***331和车辆控制件361的多个方面进行控制。
车载计算***300还可以包括天线306。虽然天线306被示出为是单个天线,但是在一些实施方案中可以包括一个或多个天线。车载计算***可以通过天线306获得宽带无线互联网访问,并且可以进一步接收诸如收音机、电视、天气、交通等广播信号。车载计算***可以通过一个或多个天线306来接收诸如GPS信号等定位信号。车载计算***还可以通过适当的接收装置经由RF,诸如经由天线306或者经由红外线或其他手段来接收无线命令。在一些实施方案中,天线306可以被包括作为音频***332或电信***336的一部分。另外,天线306可以通过外部装置接口312来向外部装置340(诸如移动装置342)提供AM/FM无线电信号。
车载计算***300的一个或多个元件可以由用户通过用户接口318来控制。用户接口318可以包括呈现在诸如图1的触摸屏108的触摸屏上的图形用户界面和/或用户致动式按钮、开关、旋钮、拨轮、滑块等。例如,用户致动式元件可以包括方向盘控制件、门和/或窗控制件、仪表板控制件、音频***设定、气候控制***设定等。用户还可以通过用户接口318与车载计算***300和移动装置342的一个或多个应用程序交互。除了在用户接口318上接收用户的车辆设定偏好之外,还可以在用户接口318上向用户显示由车载控制***选择的车辆设定。可以在用户接口的显示器上向用户显示通知和其他消息(例如,接收的消息)以及导航辅助。用户偏好/信息和/或对呈递的消息的响应可以通过用户接口的用户输入来执行。
图4是用于在操作***中选择性地加载服务的方法400的流程图。方法400可以由诸如图1的车载计算***109等计算装置执行。在402处,所述方法包括起始system_server。例如,方法400可以在图2的方法200的210期间和/或之后执行,以初始化和操作计算装置的操作***和/或其他软件。如404处所指示,可以利用system_server来加载关键服务(例如,对于***的运行而言关键的服务,没有所述关键服务,***可能无法运行或可能运行欠佳)。例如,诸如包管理器、窗口管理器、输入管理器和安装服务等服务是对于ANDROID操作***的运行而言可能关键的服务的实例。如404处所指示的加载关键服务可以包括仅加载关键服务,而不加载任何其他服务(例如,不加载非关键服务,没有所述非关键服务,***仍然能够运行)。非关键服务(可以在稍后时间加载,和/或可以仅响应于使用服务的请求而被加载)的实例可以包括UI语音服务(用于语音识别)、BLUETOOTH管理器、调谐器服务(用于调节车辆无线电控制件)等。
在406处,所述方法包括启动人机接口(HMI)。例如,人机接口可以包括使得用户能够与计算装置和/或正被初始化的操作***交互的用户界面(UI)和/或图形用户界面(GUI)。可以利用HMI来启动应用程序,包括最后一次使用的应用程序,如408处所指示。例如,计算装置可以是车载计算装置,并且最后一次使用的应用程序可以是在车辆和/或车载计算***被关闭之前活跃的,至此之后未使用任何其他应用程序直到当前启动为止的最后一个应用程序(例如,导航应用程序)。如410处所指示,启动最后一次使用的应用程序可以包括启动和/或初始化任何依赖***(dependent service(s))、应用程序、资源、类别等。例如,导航应用程序可以利用诸如用于定位车辆的GPS服务等依赖***。因此,导航可以请求在410处启动GPS服务,以确保导航应用程序在启动时的正确操作。在一些实施方案中,可以在启动所有依赖***等之后启动最后一次使用的应用程序。在其他实施方案中,可以连同依赖***等一起(例如,与依赖***同时)启动最后一次使用的应用程序。在412处,所述方法包括响应于请求而启动其余服务。以此方式,当请求时,可以动态地启动服务和相关联的依赖***/应用程序,以实现高效、请求驱动的初始化进程。
图5是在计算装置中管理操作***的服务的方法500的流程图。例如,方法500可以由图1的车载计算***109执行,以处理由车载计算***处正尝试加载的应用程序发出的服务请求。在502处,所述方法包括在计算装置的服务管理器处接收对服务的请求。可以从利用服务的应用程序接收所述请求,如504处所指示。例如,可以如参考图4中的方法400的410所描述执行方法500以便于启动正在尝试启动的应用程序的依赖***。在506处,方法500包括确定所请求的服务是否已经在计算装置上运行。如果服务尚未运行(例如,506处为“否”),那么方法进行到508以通知system_service进程来起始所请求的服务,并且进行到510以等待服务起始。在起始服务(或者如果服务已经在运行,506处为“是”)之后,所述方法进行到512,以将服务句柄返回至服务的请求者(例如,请求所述服务的应用程序)。服务句柄可以充当以下确认:服务正在/已经起始,和/或所述服务可以由应用程序利用来调用服务。
图6是示出可能会在不同阶段处加载的驱动程序与相关联的硬件实例之间的关系的方框图。类似于如上文相对于图2所描述的可能会在不同阶段(例如,pre-system_server阶段和post-system_server阶段)中加载的类别,可以通过基于用途特征分阶段加载驱动程序和相关联的硬件实例来加速计算装置/操作***初始化。例如,第一驱动程序Driver1可以支持第一组硬件实例602,并且第二驱动程序Driver2可以支持第二组硬件实例604。每个硬件实例可以被指定成在初始化的特定阶段中使用,这由硬件实例602a-602d和604a-604c中的每一个内部的编号示出。例如,基于这些硬件实例的优先级,硬件实例602b(由Driver1支持)和硬件实例604a(由Driver2支持)可以与阶段1相关联。阶段1硬件实例可以是用于***的最关键的硬件实例。换句话说,阶段1硬件实例可能会影响***的操作,和/或可以被在操作***初始化期间或之后不久起始的应用程序或其他进程所利用。例如,阶段1硬件实例可以被利用来加载关键服务,和/或可以被图4的方法400中的404处提及的关键服务所利用。
如图6所示,对于每个阶段,阴影硬件实例表示在所述阶段期间被初始化和/或在进入所述阶段时已经被初始化的硬件实例。例如,在阶段1中,被指定为阶段1的所有硬件实例都已被初始化(例如,硬件实例602b和604a)。在阶段2中,被指定为阶段1的硬件实例已经被初始化,并且被指定为阶段2的硬件实例(例如,硬件实例602c和604c)刚被初始化。在阶段3中,所有硬件实例已经被初始化(阶段1实例和阶段2实例)或刚被初始化(例如,阶段3硬件实例602a、602d和604b)。一些操作***可以利用装置树来告知与***中可用的硬件组件相关联的内核。可以将对每个硬件实例的初始化阶段的指示添加作为装置树的新条目,以使得内核能够根据阶段来选择性地加载硬件实例。
图7是选择性地对初始化的驱动程序的硬件实例进行初始化的方法700的流程图。方法700可以由诸如图1的车载计算***109等车载计算***执行,以实现装置的提高的启动速度。在702处,方法700包括接收识别将***作***使用的驱动程序的通知。应用程序和/或进程可以请求使用驱动程序,如704处所指示。例如,system_server进程和/或其他初始化应用程序/进程可以在启动期间请求使用支持快闪存储器硬件的驱动程序。在706处,所述方法包括将在702的通知中识别的驱动程序初始化。继续上文描述的实例,快闪存储器可以由计算装置中的多个存储器管理电路控制器(MMC控制器)中的一个来控制。由于单个驱动程序支持所有MMC控制器,所以可以请求所述驱动程序并且随后响应于使用快闪存储器的请求而将所述驱动程序初始化。
在708处,所述方法包括调用驱动程序的硬件初始化例程。对于由驱动程序支持的每个硬件实例,硬件初始化例程包括确定是否将在第一阶段中初始化所述硬件实例,如710处所指示。例如,如上文相对于图6所描述,每个硬件实例可以与特定阶段相关联,从而指示硬件实例将被***使用(并且因此将被初始化)所处的相对时间。如712处所指示,如果给定硬件实例不与第一阶段相关联,那么所述方法包括在相关联的阶段列表中添加所述硬件实例的条目(例如,如果硬件实例与第二阶段相关联,则在第二阶段列表中添加所述硬件实例的条目等)。相反地,如714处所指示,如果给定硬件实例与第一阶段相关联,则所述方法包括初始化所述硬件实例。以此方式,可以对由驱动程序支持的每个硬件实例进行评估,并且仅加载将在第一阶段中利用的硬件实例,以便于缩短初始化加载时间。
继续上文描述的实例,由于同一个驱动程序支持所有MMC控制器,所以初始化支持快闪存储器的MMC控制器的驱动程序可能会引起对每个MMC控制器(和相关联的硬件)进行评估。例如,另一个MMC控制器可以控制可能与第三阶段相关联的联网硬件,诸如WiFi芯片(例如,直到初始化进程中比快闪存储器晚得多的时间或者在初始化进程已经完成之后才可能需要/请求所述WiFi芯片)。因此,当加载MMC控制器驱动程序时,可以初始化快闪存储器的MMC控制器(与第一阶段相关联),同时可以将WiFi卡的MMC控制器(与第三阶段相关联)添加至第三阶段列表,从而在到达第三阶段时进行初始化。以此方式,即使已经加载了支持多个硬件实例的驱动程序,也可以仅加载所请求的硬件实例,从而缩短初始化加载时间。
在716处,所述方法包括确定所有驱动程序是否已经完成。例如,可以针对请求使用的所有驱动程序重复706-714处所描述的过程。在一些实施方案中,可以通过步骤706-714来评估***的所有驱动程序。在任一个实例中,如果所有驱动程序(请求使用的驱动程序和/或***的所有驱动程序)尚未完成(例如,716处为“否”),则所述方法返回至706以初始化下一个驱动程序并且进行所述下一个驱动程序的硬件初始化例程。如果所有驱动程序(请求使用的驱动程序和/或***的所有驱动程序)已经完成(例如,716处为“是”),则所述方法进行到718以起始应用程序/进程(例如,在702/704处请求使用驱动程序/硬件实例的应用程序/进程)。在第一初始化阶段期间,可能已经通过操作***的内核完成了方法700的先前步骤。在起始应用程序之后,***可以管理/监测车辆、计算装置和/或用户输入的状态,并且向内核通知阶段过渡在720处,所述方法包括等待阶段变更通知(例如,从初始化的第一阶段变更为第二阶段)。例如,可以响应于完成当前阶段的所有加载和其他任务或者响应于新的应用程序加载请求而提供阶段变更通知。响应于阶段变更,所述方法包括如722处所指示取回与所述通知中识别的阶段相关联的硬件实例的列表。例如,在712处将在第一阶段中未立即初始化的每个硬件实例添加到相关联的阶段列表使得能够生成和更新可能在722处提及的每个阶段的硬件实例的列表。在724处,初始化所取回的列表中的所有硬件实例。
响应于初始化给定阶段的每个硬件实例,所述方法进行到726以评估是否已经完成所有阶段。例如,***可以确定尚未被初始化的附加硬件实例是否存在于另外的阶段列表中。如果所有阶段尚未完成(例如,726处为“否”),则所述方法返回至720以等待阶段变更为下一阶段。如果所有阶段已经完成(例如,726处为“是”),则所述方法结束或者返回以等待另外的初始化请求。
除了上文针对MMC控制器和相关联的硬件元件(例如,快闪存储器和WiFi芯片)所描述的实例之外,还可以评估其他驱动程序/硬件元件组合并且将其初始化作为方法700的一部分。作为附加的非限制性实例,计算装置可以包括内置集成电路控制器(I2C控制器)的三个实例,每个实例连接至触摸屏传感器、无线电调谐控制件和功率管理芯片中的一个。计算装置可以包括串行总线接口(例如,通用异步接收器/发射器-UART)的四个实例,所述实例可以用于连接至BLUETOOTH芯片、车辆接口处理芯片等。类似于上文描述的MMC控制器实例,可以基于启动的阶段来实现控这类制器的实例。在其他实例中,硬件元件(例如,USB接口/芯片、显示器等)可以存在作为与可以在相关联的阶段加载的单个驱动程序相关联的单个实例。例如,显示器可以与显示器驱动程序相关联,所述显示器驱动程序仅支持一个硬件实例(所述显示器)。因此,如果显示器与(例如)阶段2相关联,则可以不加载/初始化显示器驱动程序直到阶段2为止。在初始化驱动程序时,由于驱动程序仅支持一个硬件实例,所以可以响应于初始化所述驱动程序而将所述硬件实例初始化。
图8是用于在计算装置上加载最后一次使用的应用程序的方法800的流程图。例如,方法800可以由诸如图1的车载计算***109等车载计算装置执行。在802处,方法800包括启动计算装置。在804处,所述方法包括确定导航应用程序是否是计算装置上最后一次使用的应用程序。例如,导航应用程序可能是在计算装置的最后关机事件时正在运行的最后一个应用程序,和/或可能是在计算装置的关机事件之前接收用户输入和/或执行动作的最后一个应用程序。在806处,所述方法包括接收对由导航应用程序所使用的服务的请求。如808处所指示,可以加载来自所述请求的尚未在计算装置上运行的任何服务。在810处,将每个请求的服务的服务句柄返回给导航应用程序。在812处,所述方法包括接收对使用GPS传感器的驱动程序的请求。例如,导航应用程序可以利用GPS传感器来操作,因此所述应用程序可以请求加载GPS传感器的驱动程序,以允许访问这个元件。
在814处,所述方法包括调用与支持GPS传感器的任何驱动程序相关联的硬件初始化例程。在816处初始化GPS传感器,并且在818处加载与当前(或先前)初始化阶段相关联的且由驱动程序支持的任何其余硬件实例。例如,如果初始化例程处于阶段1,并且支持GPS传感器的驱动程序也支持与阶段1相关联(例如,被指定成在所述阶段1期间初始化/使用)的其他硬件实例,则在818处加载这类硬件实例。在820处,所述方法包括将条目添加至由驱动程序支持的但是与当前或先前初始化阶段不相关联的硬件实例的相关联阶段列表。在初始化GPS传感器和依赖***之后,在822处可以通过HMI启动导航应用程序。
上文描述的***和方法提供用于车载计算装置,所述车载计算装置包括处理器和存储装置,所述存储装置存储用于初始化车载计算装置的操作***的指令,所述指令可被处理器执行来起始服务加载进程,通过服务加载进程加载关键服务,启动人机接口,通过人机接口启动最后一次使用的应用程序,并且响应于使用其余服务的请求而启动其余服务。在车载计算装置的第一实例中,通过人机接口启动最后一次使用的应用程序可以另外地或可替代地包括启动最后一次使用的应用程序的依赖***和/或应用程序。车载计算装置的第二实例任选地包括第一实例,并且还包括其中指令可被进一步执行来初始化虚拟机,从第一类别列表加载类别,并且在起始服务加载进程之前选择性地加载车载计算装置的资源,第一类别列表中的类别的每一个具有小于加载时间阈值的加载时间并且被多于进程阈值的多个进程所利用。车载计算装置的第三实例任选地包括第一实例和第二实例中的一个或多个,并且还包括其中指令可被进一步执行来在起始服务加载进程之后从第二类别列表加载类别,第二类别列表中的每个类别具有大于加载时间阈值的加载时间并且被多于进程阈值的多个进程所利用。车载计算装置的第四实例任选地包括第一实例至第三实例中的一个或多个,并且还包括其中指令可被进一步执行来通过进程间通信套接字接收将人机接口分叉的命令。车载计算装置的第五实例任选地包括第一实例至第四实例中的一个或多个,并且还包括其中指令可被进一步执行来在计算装置的服务管理器处从应用程序接收对请求的服务的请求,确定所请求的服务是否已经在计算装置上运行,如果所请求的服务尚未运行则起始所请求的服务。车载计算装置的第六实例任选地包括第一实例至第五实例中的一个或多个,并且还包括其中指令可被进一步执行来在所请求的服务正在运行的情况下将与所请求的服务相关联的服务句柄返回至应用程序。车载计算装置的第七实例任选地包括第一实例至第六实例中的一个或多个,并且还包括其中指令可被进一步执行来接收将被使用的驱动程序的通知、初始化驱动程序并且选择性地初始化由驱动程序支持的硬件实例。车载计算装置的第八实例任选地包括第一实例至第七实例中的一个或多个,并且还包括其中选择性地初始化由驱动程序支持的硬件实例包括:确定与由驱动程序支持的每个硬件实例相关联的初始化阶段,并且针对与第一初始化阶段相关联的每个硬件实例,初始化所述硬件实例。车载计算装置的第九实例任选地包括第一实例至第八实例中的一个或多个,并且还包括其中选择性地初始化由驱动程序支持的硬件实例还包括:对于不与第一初始化阶段相关联的每个硬件实例,将所述硬件实例的条目添加在同与硬件实例相关联的阶段匹配的相关联的阶段列表中。车载计算装置的第十实例任选地包括第一实例至第九实例中的一个或多个,并且还包括其中指令可被进一步执行来针对第一初始化阶段之后的每个初始化阶段,检索与所述初始化阶段相关联的阶段列表,并且初始化包括在与所述初始化阶段相关联的阶段列表中的每个硬件实例。车载计算装置的第十一实例任选地包括第一实例至第十实例中的一个或多个,并且还包括其中所述人机接口包括在车载计算装置的显示装置上显示的图形用户界面。
以上***和方法提供用于一种用于初始化计算装置的操作***中的应用程序的方法,所述方法包括:起始服务加载进程,通过服务加载进程加载关键服务,启动人机接口,通过人机接口启动最后一次使用的应用程序,以及响应于使用其余服务的请求而启动其余服务。所述方法的第一实例还包括另外地或可替代地初始化虚拟机,加载选自第一类别列表的类别,以及在起始服务加载进程之前加载计算装置的资源,所述第一类别列表中的每个类别具有小于加载时间阈值的加载时间并且被多于进程阈值的多个进程所利用。所述方法的第二实例任选地包括所述第一实例,并且还包括在起始服务加载进程之后加载选自第二类别列表的类别,所述第二类别列表中的每个类别具有大于加载时间阈值的加载时间并且被多于进程阈值的多个进程所利用。所述方法的第三实例任选地包括第一实例和第二实例中的一个或多个,并且还包括其中所述服务加载进程被配置来初始化操作***的服务,并且向服务管理器注册所述服务。所述方法的第四实例任选地包括第一实例至第三实例中的一个或多个,并且还包括其中所述虚拟机是Dalvik虚拟机,并且其中所述方法还包括调用Zygote进程来加载选自所述第一类别列表的类别。
以上***和方法还提供用于一种车载计算装置,所述车载计算装置包括处理器和存储装置,所述存储装置存储用于初始化车载计算装置的操作***的指令,所述指令可由处理器执行来起始服务加载进程,通过服务加载进程加载关键服务,启动人机接口,通过人机接口启动最后一次使用的应用程序,在服务管理器处接收对由最后一次使用的应用程序所使用的服务的请求,起始包括在所述请求中的尚未在计算装置上运行的任何服务,并且针对包括在请求中的每一项服务将服务句柄返回给最后一次使用的应用程序。在车载计算装置的第一实例中,所述指令可以另外地或可替代地可被进一步执行来初始化虚拟机,加载选自第一类别列表的类别,并且在起始服务加载进程之前加载计算装置的资源,所述第一类别列表中的每个类别具有小于加载时间阈值的加载时间并且被多于进程阈值的多个进程所利用。车载计算装置的第二实例任选地包括第一实例,并且还包括其中指令可被进一步执行来接收将被使用的驱动程序的通知、初始化驱动程序并且选择性地初始化由驱动程序支持的硬件实例。
出于说明和描述的目的,已经呈现了对实施方案的描述。对实施方案的合适的修改和变化可以根据以上描述来执行,或者可以通过实践所述方法来获得。例如,除非另有说明,否则所描述的方法中的一种或多种可以由诸如参考图1所描述的车载计算***109等合适的装置和/或装置的组合执行。所述方法可以通过以下方式来执行:用一个或多个逻辑装置(例如,处理器)与一个或多个附加硬件元件的组合来执行存储的指令,所述一个或多个附加硬件元件诸如存储装置、存储器、硬件网络接口/天线、开关、致动器、时钟电路等。所描述的方法和相关联的动作还可以除了本申请中所描述的次序之外的各种次序、并行地和/或同时执行所描述的***在本质上是示例性的,并且可以包括附加外元件和/或省略元件。例如,虽然参考ANDROID操作***和车载计算装置描述了许多说明性实例,但是应理解,上文描述的方法和***可以被包括在任何合适的硬件(例如,便携式计算装置、智能手机、平板计算机、漆上型计算机、台式计算装置、服务器计算***等)和/或操作***中,和/或被其所利用。本公开的主题包括各种***和配置,以及所公开的其他特征、功能和/或特性的所有新颖的和非显而易见的组合和子组合。
如本申请中所使用,以单数形式叙述且用措词“一个”或“一种”修饰的元件或步骤应理解为不排除多个所述元件或步骤,除非陈述这种排除。另外,对本公开的“一个实施方案”或“一个实例”的提及并不意在被解释成排除也合并有所叙述的特征的附加实施方案的存在。术语“第一”、“第二”和“第三”等仅用作标记,而并非意在对其客体施加数值要求或特定位置次序。以下权利要求具体指明以上公开的被视为是新颖的和非显而易见的主题。

Claims (18)

1.一种车载计算装置,所述车载计算装置包括:
处理器;以及
存储装置,所述存储装置存储用于初始化所述车载计算装置的操作***的指令,所述指令由所述处理器执行来:
启动服务加载进程;
通过所述服务加载进程加载关键服务;
在加载所述关键服务之后启动人机接口;
通过所述人机接口启动最后一次使用的应用程序,其中所述最后一次使用的应用程序是在车载计算装置最后关机事件之前活跃的最后一个应用程序,所述最后一次使用的应用程序是在所述车载计算装置的最后关机事件之前接收用户输入和/或执行动作的最后一个应用程序;并且
仅响应于使用其余服务的请求而启动所述其余服务;
其中所述指令被进一步执行来接收将被使用的驱动程序的通知、初始化所述驱动程序并且基于与所述驱动程序支持的每个硬件实例相关联的初始化阶段初始化由所述驱动程序支持的硬件实例,所述初始化阶段指示硬件实例将被所述操作***初始化所处的相对时间;
其中所述关键服务是对操作***的运行至关重要的服务。
2.如权利要求1所述的车载计算装置,其中通过所述人机接口启动所述最后一次使用的应用程序包括启动所述车载计算装置的导航应用程序和所述导航应用程序的一个或多个依赖***,并且其中所述最后一次使用的应用程序的所述一个或多个依赖***包括全球定位***GPS服务。
3.如权利要求1所述的车载计算装置,其中所述指令被进一步执行来初始化虚拟机,从第一类别列表加载类别,并且在启动所述服务加载进程之前加载所述车载计算装置的资源,所述第一类别列表中的所述类别的每一个具有小于加载时间阈值的加载时间并且被多于进程阈值的多个进程所利用。
4.如权利要求3所述的车载计算装置,其中所述指令被进一步执行来在启动所述服务加载进程之后从第二类别列表加载类别,所述第二类别列表中的每个类别具有大于所述加载时间阈值的加载时间并且被多于所述进程阈值的多个进程所利用。
5.如权利要求1所述的车载计算装置,其中所述指令被进一步执行来在所述车载计算装置的服务管理器处从应用程序接收对请求的服务的请求,确定所述请求的服务是否已经在所述车载计算装置上运行,并且如果所述请求的服务尚未运行则启动所述请求的服务。
6.如权利要求5所述的车载计算装置,其中所述指令被进一步执行来在所述请求的服务正在运行的情况下将与所述请求的服务相关联的服务句柄返回至所述应用程序。
7.如权利要求1所述的车载计算装置,其中初始化由所述驱动程序支持的硬件实例包括:确定与由所述驱动程序支持的每个硬件实例相关联的所述初始化阶段,并且针对与第一初始化阶段相关联的每个硬件实例,初始化所述硬件实例。
8.如权利要求7所述的车载计算装置,其中初始化由所述驱动程序支持的硬件实例包括:对于不与所述第一初始化阶段相关联的每个硬件实例,将所述硬件实例的条目添加在相关联的阶段列表中,该阶段列表与所述硬件实例所关联的所述初始化阶段匹配。
9.如权利要求8所述的车载计算装置,其中所述指令被进一步被执行来针对所述第一初始化阶段之后的每个初始化阶段,取回与所述初始化阶段相关联的阶段列表,并且初始化包括在与所述初始化阶段相关联的所述阶段列表中的每个硬件实例。
10.如权利要求1所述的车载计算装置,其中所述人机接口包括在所述车载计算装置的显示装置上显示的图形用户界面。
11.一种用于初始化计算装置的操作***中的应用程序的方法,所述方法包括:
启动服务加载进程;
通过所述服务加载进程加载关键服务;
在加载所述关键服务之后启动人机接口;
通过所述人机接口启动最后一次使用的应用程序,其中所述最后一次使用的应用程序是在车载计算装置最后关机事件之前活跃的最后一个应用程序,所述最后一次使用的应用程序是在所述车载计算装置的最后关机事件之前接收用户输入和/或执行动作的最后一个应用程序,并且其中通过所述人机接口启动最后一次使用的应用程序包括在启动所述最后一次使用的应用程序之前或者与其同时启动所述最后一次使用的应用程序的所述一个或多个依赖***;以及
仅响应于使用其余服务的请求而启动所述其余服务;
其中所述方法进一步包括接收将被使用的驱动程序的通知、初始化所述驱动程序并且基于与所述驱动程序支持的每个硬件实例相关联的初始化阶段初始化由所述驱动程序支持的硬件实例,所述初始化阶段指示硬件实例将被所述操作***初始化所处的相对时间;
其中所述关键服务是对操作***的运行至关重要的服务。
12.如权利要求11所述的方法,其还包括初始化虚拟机,加载选自第一类别列表的类别,以及在启动所述服务加载进程之前加载所述计算装置的资源,所述第一类别列表中的每个类别具有小于加载时间阈值的加载时间并且被多于进程阈值的多个进程所利用。
13.如权利要求11所述的方法,其还包括:在启动所述服务加载进程之后加载选自第二类别列表的类别,所述第二类别列表中的每个类别具有大于所述加载时间阈值的加载时间并且被多于所述进程阈值的多个进程所利用。
14.如权利要求12所述的方法,其中所述服务加载进程被配置来初始化所述操作***的服务并且向服务管理器注册所述服务。
15.如权利要求12所述的方法,还包括调用进程来加载选自所述第一类别列表的所述类别。
16.一种车载计算装置,所述车载计算装置包括:
处理器;以及
存储装置,所述存储装置存储用于初始化所述车载计算装置的操作***的指令,所述指令由所述处理器执行来:
启动服务加载进程;
通过所述服务加载进程加载关键服务;
启动人机接口;
通过所述人机接口启动最后一次使用的应用程序,所述最后一次使用的应用程序是在所述车载计算装置的最后关机事件之前接收用户输入的最后一个应用程序,且其中通过所述人机接口启动最后一次使用的应用程序包括在启动所述最后一次使用的应用程序之前或者与其同时启动所述最后一次使用的应用程序的所述一个或多个依赖***;
在服务管理器处接收对由所述最后一次使用的应用程序所使用的服务的请求;
启动包括在所述请求中的尚未在所述车载计算装置上运行的任何服务;
针对包括在所述请求中的每一项服务将服务句柄返回给所述最后一次使用的应用程序;并且
仅响应于使用其余服务的相应请求而启动所述其余服务;
其中所述指令被进一步执行来接收将被使用的驱动程序的通知、初始化所述驱动程序并且基于与所述驱动程序支持的每个硬件实例相关联的初始化阶段初始化由所述驱动程序支持的硬件实例,所述初始化阶段指示硬件实例将被所述操作***初始化所处的相对时间;
其中所述关键服务是对操作***的运行至关重要的服务。
17.如权利要求16所述的车载计算装置,其中所述指令被进一步执行来初始化虚拟机,加载选自第一类别列表的类别,并且在启动所述服务加载进程之前加载所述车载计算装置的资源,所述第一类别列表中的每个类别具有小于加载时间阈值的加载时间并且被多于进程阈值的多个进程所利用。
18.如权利要求17所述的车载计算装置,其中进一步执行指令来调用进程以便加载选自所述第一类别列表的所述类别。
CN201580037813.0A 2014-07-10 2015-07-09 操作***启动加速 Active CN106537335B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN3426/CHE/2014 2014-07-10
IN3426CH2014 2014-07-10
PCT/US2015/039746 WO2016007744A1 (en) 2014-07-10 2015-07-09 Operating system startup acceleration

Publications (2)

Publication Number Publication Date
CN106537335A CN106537335A (zh) 2017-03-22
CN106537335B true CN106537335B (zh) 2021-06-22

Family

ID=53758530

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580037813.0A Active CN106537335B (zh) 2014-07-10 2015-07-09 操作***启动加速

Country Status (6)

Country Link
US (1) US10423430B2 (zh)
EP (1) EP3167364B1 (zh)
JP (1) JP6567642B2 (zh)
KR (1) KR102388836B1 (zh)
CN (1) CN106537335B (zh)
WO (1) WO2016007744A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10632852B2 (en) * 2015-11-13 2020-04-28 Nio Usa, Inc. Electric vehicle optical charging system and method of use
EP3662368B1 (en) * 2017-08-16 2022-07-20 Samsung Electronics Co., Ltd. Method and apparatus for managing scheduling of services during boot-up
KR102372644B1 (ko) * 2017-08-23 2022-03-17 삼성전자주식회사 운영 체제의 운용 방법 및 이를 지원하는 전자 장치
CN107943616A (zh) * 2017-11-10 2018-04-20 惠州市德赛西威汽车电子股份有限公司 一种车载Android开机源恢复的方法
CN107831887B (zh) * 2017-12-21 2021-03-23 青岛海信移动通信技术股份有限公司 一种应用启动方法及装置
DE112018007074T5 (de) * 2018-03-16 2020-10-29 Mitsubishi Electric Corporation Anwendungsmanagementeinrichtung, fahrzeuginternes system, anwendungsmanagementverfahren und anwendungsmanagementprogramm
KR102115738B1 (ko) * 2018-07-31 2020-05-27 아주대학교산학협력단 가상화된 시스템에서의 중요한 서비스 가속화 방법 및 장치
US11571987B2 (en) 2020-01-02 2023-02-07 Nio Technology (Anhui) Co., Ltd. Optimization of battery pack size using swapping
CN112224205A (zh) * 2020-10-16 2021-01-15 宝能(广州)汽车研究院有限公司 车辆及其控制***的模式切换方法、装置及存储介质
TWI806040B (zh) * 2021-04-23 2023-06-21 研能科技股份有限公司 車內空汙防治系統

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3278885B2 (ja) 1992-03-06 2002-04-30 富士通株式会社 コンピュータシステム
JP2742394B2 (ja) * 1994-12-02 1998-04-22 株式会社ナムコ ゲームプログラムおよびデータの読込み方法、ならびにこれを用いたゲーム装置
JP2003196122A (ja) * 2001-12-26 2003-07-11 Matsushita Electric Ind Co Ltd アプリケーションマネージャシステム及びプログラム
JP2006172305A (ja) * 2004-12-17 2006-06-29 Nec Corp 無線基地局装置及びプログラムダウンロード方法並びにそのプログラム
US7461247B2 (en) * 2005-06-03 2008-12-02 Qnx Software Systems Gmbh & Co. Kg Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US20090199132A1 (en) * 2006-07-10 2009-08-06 Devicevm, Inc. Quick access to virtual applications
EP1944690A3 (de) 2006-12-19 2009-05-20 Continental Automotive GmbH Verfahren, Vorrichtung und System
US7996666B2 (en) 2007-09-04 2011-08-09 Apple Inc. User influenced loading sequence of startup applications
US20090089396A1 (en) * 2007-09-27 2009-04-02 Yuxi Sun Integrated Method of Enabling a Script-Embedded Web Browser to Interact with Drive-Based Contents
JP2009217711A (ja) 2008-03-12 2009-09-24 Mitsubishi Electric Corp 情報処理装置
JP2010079566A (ja) * 2008-09-25 2010-04-08 Alpine Electronics Inc 情報処理装置およびアプリケーション起動方法
JP5391918B2 (ja) 2009-08-10 2014-01-15 株式会社リコー 情報処理装置、情報処理方法、及び情報処理プログラム
JP2011043932A (ja) 2009-08-20 2011-03-03 Ricoh Co Ltd 情報処理装置
JP2011096145A (ja) * 2009-10-30 2011-05-12 Pioneer Electronic Corp 情報処理装置、起動制御方法、起動制御プログラムおよび記録媒体
JP2011186657A (ja) 2010-03-05 2011-09-22 Aisin Aw Co Ltd 車載機器制御装置、車載機器制御方法、及び車載機器制御プログラム
US9003175B2 (en) * 2011-04-29 2015-04-07 Lenovo (Singapore) Pte. Ltd. System and method for accelerated boot performance
JP5385347B2 (ja) * 2011-08-02 2014-01-08 レノボ・シンガポール・プライベート・リミテッド メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
US20130054945A1 (en) * 2011-08-24 2013-02-28 Microsoft Corporation Adaptive sensing for early booting of devices
US9008853B2 (en) * 2011-12-07 2015-04-14 GM Global Technology Operations LLC Vehicle operator identification and operator-configured services
US9262178B2 (en) * 2012-01-30 2016-02-16 Intel Corporation Method for reducing platform boot times by providing lazy input/output abstractions
US20130311762A1 (en) 2012-05-17 2013-11-21 International Business Machines Corporation Providing user access to specific programs and documents before the booting process is completed
CN103092656B (zh) * 2013-01-23 2016-09-14 深圳市航盛电子股份有限公司 一种导航***及导航方法
CN103324506A (zh) 2013-06-24 2013-09-25 上海天奕达电子科技有限公司 一种控制Android应用程序安装的方法及手机
US9910660B2 (en) * 2013-08-05 2018-03-06 Harman International Industries, Incorporated Operating system replacement for in-vehicle computing system
CN103488478A (zh) * 2013-09-03 2014-01-01 厦门雅迅网络股份有限公司 基于android平台的设备管理框架
CN103645916A (zh) * 2013-11-29 2014-03-19 惠州华阳通用电子有限公司 一种基于qnx的***上电启动方法

Also Published As

Publication number Publication date
KR20170028930A (ko) 2017-03-14
WO2016007744A1 (en) 2016-01-14
US10423430B2 (en) 2019-09-24
US20170206101A1 (en) 2017-07-20
JP2017521785A (ja) 2017-08-03
CN106537335A (zh) 2017-03-22
KR102388836B1 (ko) 2022-04-20
EP3167364A1 (en) 2017-05-17
JP6567642B2 (ja) 2019-08-28
EP3167364B1 (en) 2023-03-15

Similar Documents

Publication Publication Date Title
CN106537335B (zh) 操作***启动加速
CN108284840B (zh) 结合乘员偏好的自主车辆控制***和方法
US9910660B2 (en) Operating system replacement for in-vehicle computing system
US9610957B2 (en) Controlling vehicle systems with mobile devices
US10379871B2 (en) Operating system startup acceleration
JP2015129753A (ja) 車内通知提示のスケジューリング
JP2015032314A5 (zh)
US11340891B2 (en) Control device, control method, and computer program
KR102262926B1 (ko) 차량용 소프트웨어 제어 장치
CN106663009B (zh) 操作***启动加速
CN113886437A (zh) 使用设备上缓存的混合提取
EP4369186A1 (en) Control method and apparatus, device, and storage medium
WO2023096659A1 (en) Method for power states in vehicles

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant