CN106537341A - 操作系统启动加速 - Google Patents

操作系统启动加速 Download PDF

Info

Publication number
CN106537341A
CN106537341A CN201580037826.8A CN201580037826A CN106537341A CN 106537341 A CN106537341 A CN 106537341A CN 201580037826 A CN201580037826 A CN 201580037826A CN 106537341 A CN106537341 A CN 106537341A
Authority
CN
China
Prior art keywords
service
loading
species
computing device
list
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.)
Pending
Application number
CN201580037826.8A
Other languages
English (en)
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
Crown Audio Inc
Original Assignee
Crown Audio 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 Crown Audio Inc filed Critical Crown Audio Inc
Publication of CN106537341A publication Critical patent/CN106537341A/zh
Pending legal-status Critical Current

Links

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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

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)
  • Navigation (AREA)
  • Compositions Of Oxide Ceramics (AREA)
  • Valve Device For Special Equipments (AREA)
  • Earth Drilling (AREA)

Abstract

本发明公开了针对用于选择性地初始化计算装置的操作系统的元件的方法和系统的实施方案。在一些实施方案中,一种在计算装置的操作系统的初始化期间选择性地加载种类的方法包括:初始化虚拟机、加载选自第一种类列表的种类,以及加载资源。所述方法还包括:加载服务加载进程,所述服务加载进程被配置来初始化所述操作系统的服务并且向服务管理器登记所述服务;以及在加载所述服务加载进程之后加载选自第二种类列表的种类。

Description

操作系统启动加速
相关申请的交叉引用
本申请要求2014年7月10日提交的标题为“操作系统启动加速(OPERATING SYSTEMSTARTUP ACCELERATION)”的印度专利申请号3427/CHE/2014的优先权,所述申请的全部内容出于所有目的以引用的方式并入本文。
领域领域
本公开涉及加速用于计算装置的操作系统的初始化例程。
背景技术
用于计算装置的操作系统可执行初始化例程来启动必需的服务、资源和驱动程序以便使用计算装置的硬件部件。初始化例程速度可以基于加载的服务、资源和驱动程序的数量,并且在初始化例程完成以前,计算装置的某种功能可能无法使用。
发明内容
基于计算装置的环境和/或用途,在给计算装置通电与初始化计算装置的操作系统/应用程序之间的可接受延迟量可以改变。例如,在车辆内使用的计算装置的延迟考虑因素(例如,较小的可接受延迟量)可能比个人计算装置更严格,因为车内计算装置的功能可能影响车辆、安全特征等的功能。针对用于加速用于计算装置的初始化例程的方法和系统实施方案。在一些实施方案中,在计算装置的操作系统的初始化期间选择性地加载种类的方法包括:初始化虚拟机、加载选自第一种类列表的种类,以及加载所述计算装置的资源。所述方法还包括:加载服务加载进程,所述服务加载进程被配置来初始化所述操作系统的服务并且向服务管理器登记所述服务;以及在加载所述服务加载进程之后加载选自第二种类列表的种类。
在一些实施方案中,用于初始化操作系统的计算装置可包括处理器和存储装置,所述存储装置存储指令,所述指令可由所述处理器执行以:初始化虚拟机、加载选自第一种类列表的种类,并且加载所述计算装置的资源。所述指令还可被执行以:加载服务加载进程,所述服务加载进程被配置来初始化所述操作系统的服务并且向服务管理器登记所述服务;并且在加载所述服务加载进程之后加载选自第二种类列表的种类。
在一些实施方案中,车内计算装置包括:处理器,其包括一个或多个处理核心;以及存储装置,其存储用于初始化所述车内计算装置的操作系统的指令,所述指令可由所述处理器执行以:初始化虚拟机;使用处理器线程池加载第一种类列表的每个种类,所述处理器线程池中的线程的数量基于所述处理器中所包括的处理器核心的数量;并且使用所述处理器线程池加载所述车内计算装置的资源。所述指令还可被执行以:加载服务加载进程,所述服务加载进程被配置来初始化所述操作系统的服务并且向服务管理器登记所述服务;并且在使用所述处理器线程池加载所述服务加载进程之后加载选自第二种类列表的种类。
附图简述
阅读以下参考附图对非限制性实施方案的描述后,可更好地理解本公开,其中以下:
图1展示根据本公开的一个或多个实施方案的车辆的车厢的内部的示例性部分视图;
图2是根据本公开的一个或多个实施方案的加速在计算装置上初始化应用程序虚拟机的示例性方法的流程图;
图3展示根据本公开的一个或多个实施方案的示例性车内计算系统的框图;
图4是根据本公开的一个或多个实施方案的用于选择性地加载操作系统中的服务的示例性方法的流程图;
图5是根据本公开的一个或多个实施方案的用于管理计算装置中的操作系统的服务的示例性方法的流程图;
图6展示根据本公开的一个或多个实施方案的可在不同阶段加载的示例性驱动程序和相关联硬件实例;
图7是根据本公开的一个或多个实施方案的用于选择性地初始化用于初始化的驱动程序的硬件实例的示例性方法的流程图;以及
图8是根据本公开的一个或多个实施方案的用于在计算装置上加载应用程序的示例性方法的流程图。
具体实施方式
如上文所描述,初始化例程的速度可以定义在启动计算装置与启用计算装置的功能之间的延迟。例如,车辆内的计算装置(例如,车内计算装置)可以响应于启动车辆而被启动,然而在计算装置完成初始化例程以前,诸如导航系统、音频控制等功能可能无法使用。本公开认识到,一些初始化例程可以加载与并不是计算装置的初始操作所必需的特定硬件驱动程序相关联的种类、资源、服务/应用程序和硬件实例。因为加载这些要素中的每一个增加了计算装置的初始化时间,所以选择性地加载这些要素可以允许更高效地初始化计算装置,从而减少装置可用性的延迟。以下描述的方法和系统使得种类、资源、服务、应用程序和硬件实例的选择能够基于每个要素的优先级来配置,所述优先级是从关于装置/初始化例程/应用程序等的诸如以下考虑因素得出的:装置特性、装置的预期用途、装置的先前用途、所请求功能、要素的关键性/相依性。以这种方式,可以智能地选择特征的加载/初始化以减少初始化时间而不牺牲计算装置的功能。
图1展示一种类型的环境的示例性部分视图:车辆102的车厢100的内部,驾驶员和/或一个或多个乘客可坐在所述车厢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中的集成头部单元。头部单元可以固定地或可移除地附接在仪表板106中。在另外的或替代的实施方案中,车内计算系统的一个或多个硬件元件可以是模块化的并且可以安装在车辆的多个位置中。车内计算系统109可包括处理器和存储器(例如,存储装置),所述存储器存储指令,所述指令可由所述处理器执行以执行各种动作、任务等。例如,车内计算系统109的存储器可以存储操作系统,所述操作系统用于管理车内计算系统的应用程序以及由车内计算系统执行的其他数据处理、控制和动作。
仪表组110可包括诸如燃油表、转速计、速度计和里程计的各种量表,以及指示器和警示灯。方向盘114可在仪表组110下方从仪表板伸出。任选地,方向盘114可包括控制件116,所述控制件116可结合触摸屏108来使用以巡览车内计算系统的特征并且控制车内计算系统。除了图1中描绘的部件,应了解,仪表板106可包括额外的部件,诸如车门和车窗控制件、点烟器(也可用作低电压电源插座)、手套箱和/或任何其他合适的元件。在一个或多个实施方案中,可使用触摸屏108执行经由气候控制系统通风孔118对车内气候(诸如车厢温度)的控制,且因此仪表板106中可能不包括单独的气候控制界面。然而在替代的实施方案中,可以提供单独的气候控制界面。
车厢100可包括用于监测车辆、用户和/或环境的一个或多个传感器。例如,车厢100可包括一个或多个装载在座椅中的压力传感器120,其被配置来测量施加到座椅的压力以确定用户的存在。车厢100可包括一个或多个车门传感器122,其被配置来监测车门活动,诸如车门的打开和/或关闭、车门的上锁、车门的车窗的操作和/或任何其他合适的车门活动事件。可包括湿度传感器124以测量车厢的湿度含量。可包括麦克风126以接收呈语音命令形式的用户输入以使得用户能够进行电话呼叫,且/或测量车厢100中的环境噪声。应理解,图1中示出的传感器的放置是示例性的,并且一个或多个额外的或替代的传感器可定位在车辆的任何合适的位置中。例如,额外的传感器可定位在发电机舱中、车辆的外表面上和/或其他合适的位置中,以便提供关于车辆的操作、车辆的环境条件、车辆的用户的信息。关于车辆的环境条件、车辆状态或车辆驾驶员的信息也可以从在车辆外部/与车辆分离(即,不是车辆系统的部分)的传感器接收到,诸如从耦接到外部装置150和/或移动装置128的传感器接收到。
车厢100还可包括在行进之前、行进期间和/或行进之后存放在车辆中的一个或多个用户物件,诸如移动装置128。移动装置可包括智能电话、平板计算机、便携式计算机、便携式媒体播放器和/或任何合适的移动计算装置。移动装置128可经由通信链路130连接到车内计算系统。通信链路130可以是有线的(例如,经由通用串行总线[USB]、移动高清链路[MHL]、高清多媒体接口[HDMI]等)或无线的(例如,经由蓝牙、WI-FI、近场通信[NFC]、蜂窝连接性等),并且被配置来在移动装置与车内计算系统之间提供双向通信。例如,通信链路130可从各种车辆系统(诸如车辆音频系统、气候控制系统等)和触摸屏108提供传感器和/或控制信号到移动装置128,并且可从移动装置128提供控制和/或显示信号到车内系统和触摸屏108。通信链路130也可从车内电源提供电力到移动装置128,以便对移动装置的内部电池充电。
虽然移动装置128被示出为与车内计算系统在空间上分离并且经由大致外部的通信链路(例如,电缆或射频信号)加以连接,但是应理解,可在仪表板106或车辆中的其他位置中形成槽132或其他存储结构以将移动装置保持在特定位置中。存储结构可包括集成连接器134,移动装置128可附接或“对接”到所述集成连接器134以便在移动装置与计算系统之间提供大致内部的通信链路。
车内计算系统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。随后可在移动装置128处将从外部装置150接收到的数据与移动装置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核心的数量乘以2。每个线程可用来加载种类,加载资源,且/或执行任何其他合适的任务。
在一些系统中,可在预加载所有种类和资源之后加载system_server进程以便开始加载用于操作计算装置的其他服务。system_server进程可以是被配置来初始化在操作系统的初始化期间使用的服务并且向服务管理器登记所述服务的服务加载进程。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以等待进程间通信套接字以接收使应用程序分叉的命令(例如,基于启动所述应用程序的请求)。在接收到这种使应用程序分叉的命令后,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内部的车内计算系统300的框图。车内计算系统300可以是图1的车内计算系统109的实例且/或可执行本文中描述的方法中的一个或多个,诸如,在一些实施方案中是图2的方法200。在一些实例中,车内计算系统可以是车辆信息娱乐系统,其被配置来向车辆用户提供基于信息的媒体内容(音频和/或视觉媒体内容,包括娱乐内容、导航服务等)以增强操作者的车内体验。车辆信息娱乐系统可包括或耦接到各种车辆系统、子系统、硬件部件以及集成在车辆301中或可集成到车辆301中的软件应用程序和系统,以便增强驾驶员和/或乘客的车内体验。
车内计算系统300可包括一个或多个处理器,所述处理器包括操作系统处理314和接口处理器320。操作系统处理314可在车内计算系统上执行操作系统,并且控制车内计算系统的输入/输出、显示、回放和其他操作。接口处理器320可经由车辆系统间通信模块322与车辆控制系统330对接。
车辆系统间通信模块322可向其他车辆系统331和车辆控制元件361输出数据,同时也例如通过车辆控制系统330从其他车辆部件和系统331、361接收数据输入。在输出数据时,车辆系统间通信模块322可经由总线提供信号,所述信号对应于车辆的任何状态、车辆环境,或连接到车辆的任何其他信息源的输出。车辆数据输出可包括例如模拟信号(诸如当前速度)、由各个信息源(诸如时钟、温度计、诸如全球定位系统[GPS]传感器的位置传感器等)提供的数字信号、通过车辆数据网络(诸如发动机控制器局域网[CAN]总线,可通过其传达发动机相关信息;气候控制CAN总线,可通过其传达气候控制相关信息;以及多媒体数据网络,可通过其在车辆中的多媒体部件之间传达多媒体数据)传播的数字信号。例如,车内计算系统可从发动机CAN总线检索由车轮传感器估计的车辆当前速度、经由车辆的电池和/或电力分布系统的车辆电力状态、车辆的点火状态等。另外,在不背离本公开的范围的情况下,同样可使用其他对接手段,诸如以太网。
车内计算系统300中可包括非易失性存储装置308,用来以非易失性形式存储数据,诸如可由处理器314和320执行的指令。存储装置308可存储应用程序数据以使得车内计算系统300能够运行应用程序以便连接到基于云的服务器且/或收集用于发射到基于云的服务器的信息。应用程序可检索由车辆系统/传感器、输入装置(例如,用户界面318)、与车内计算系统通信的装置(例如,经由蓝牙链路连接的移动装置)等收集的信息。车内计算系统300还可包括易失性存储器316。易失性存储器316可以是随机存取存储器(RAM)。诸如非易失性存储装置308的非暂时性存储装置和/或易失性存储器316可存储指令和/或代码,所述指令和/或代码在由处理器(例如,操作系统处理314和/或接口处理器320)执行时控制车内计算系统300来执行本公开中描述的动作中的一个或多个。
车内计算系统300中可包括麦克风302,用来接收来自用户的语音命令,测量车辆中的环境噪声,确定是否根据车辆的声环境调谐来自车辆扬声器的音频等。语音处理单元304可处理语音命令,诸如从麦克风302接收的语音命令。在一些实施方案中,车内计算系统300可能还能够使用车辆的音频系统332中所包括的麦克风来接收语音命令和范例环境车辆噪声。
车内计算系统300的传感器子系统310中可包括一个或多个额外的传感器。例如,传感器子系统310可包括摄像头,诸如用于帮助用户停放车辆的后视摄像头和/或用于识别用户(例如,使用面部辨识和/或用户示意动作)的车厢摄像头。车内计算系统300的传感器子系统310可与各种车辆传感器通信且从各种车辆传感器接收输入,并且还可以接收用户输入。例如,传感器子系统310所接收的输入可包括变速箱齿轮位置、变速箱离合器位置、油门踏板输入、刹车输入、变速箱选择器位置、车辆速度、发动机速度、穿过发动机的大规模气流、环境温度、进入空气温度等,以及来自以下各项的输入:气候控制系统传感器(诸如传热流体温度、防冻剂温度、风速速度、乘客舱温度、所需乘客舱温度、环境湿度等)、检测由用户发出的语音命令的音频传感器、从车辆的遥控钥匙接收命令且任选地跟踪遥控钥匙的地理位置/接近度的遥控钥匙传感器等。虽然某些车辆系统传感器可仅仅与传感器子系统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,诸如固态硬盘、闪存盘、U盘等。在不背离本公开的范围的情况下,外部装置340可以无线地或经由连接器与车内计算系统300通信。例如,外部装置340可以经由网络360、通用串行总线(USB)连接、直接有线连接、直接无线连接和/或其他通信链路通过外部装置接口312与车内计算系统300通信。外部装置接口312可提供通信接口以使得车内计算系统能够与移动装置通信,所述移动装置与驾驶员的联系人相关联。例如,外部装置接口312可使得电话呼叫能够被建立且/或文本消息(例如SMS、MMS等)能够被发送(例如,经由蜂窝通信网)到与驾驶员的联系人相关联的移动装置(例如,经由SMS服务202、电话服务204和/或图2的电子邮件服务206)。
一个或多个应用程序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(或车辆系统控制元件)的设置的控制件,所述车辆控制件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。例如,可在图2的方法200的210期间和/或之后执行方法400以初始化且操作计算装置的操作系统和/或其他软件。可利用system_server来加载关键服务(例如,对系统的运作来说很关键的服务,没有这些服务,系统就可能无法运作或可能运作较差),如404处所指示。例如,诸如程序包管理器、窗口管理器、输入管理器和装载服务的服务是可能对ANDROID操作系统的运作来说很关键的服务的实例。如404处所指示加载关键服务可包括仅加载关键服务,而不加载任何其他服务(例如,不加载非关键服务,没有这些非关键服务,系统仍然能够运作)。非关键服务(其可在稍后的时间加载且/或仅可响应于对于使用所述服务的请求而被加载)的实例可包括UI语音服务(用于语音辨识)、蓝牙管理器、调谐器服务(用于调整车辆收音机控制件)等。
在406处,方法包括启动人机界面(HMI)。例如,人机界面可包括用户界面(UI)和/或图形用户界面(GUI),其使得用户能够与计算装置和/或正在初始化的操作系统交互。可利用HMI来启动应用程序、包括上一次使用的应用程序,如408处所指示。例如,计算装置可以是车内计算装置,且上一次使用的应用程序可以是在车辆和/或车内计算系统被关闭之前在运行中的最后一个应用程序(例如,导航应用程序)。如410处所指示,启动上一次使用的应用程序可包括启动且/或初始化任何从属的服务、应用程序、资源、种类等。例如,导航应用程序可利用诸如GPS服务的从属服务以便定位车辆。因此,导航可请求在410处启动GPS服务以确保导航应用程序在启动时正确操作。在一些实施方案中,可以在启动所有从属服务等之后启动上一次使用的应用程序。在其他实施方案中,可与从属服务等一起(例如,与从属服务并行地)启动上一次使用的应用程序。在412处,方法包括响应于请求来启动剩余服务。以这种方式,可在请求时动态地启动服务和相关联的从属服务/应用程序以允许高效的、受请求驱动的初始化进程。
图5是管理计算装置中的操作系统的服务的方法500的流程图。例如,方法500可由图1的车内计算系统109执行以处理由试图在车内计算系统处加载的应用程序发出的服务请求。在502处,方法包括在计算装置的服务管理器处接收对于服务的请求。可以从利用所述服务的应用程序接收请求,如504处所指示。例如,可以执行方法500以便启动用于试图被启动的应用程序的从属服务,如参考图4中的方法400的410所描述。在506处,方法500包括确定所请求服务是否已经在计算装置上运行。如果服务不是已经在运行(例如,在506处为“否”),那么方法进行到508以通知system_service进程启动所请求服务并且进行到510以等待服务启动。在启动服务后(或如果服务已经在运行,在506处为“是”),方法进行到512以向服务的请求者(例如,请求所述服务的应用程序)返回服务句柄。服务句柄可以充当服务被启动/已经被启动且/或可由应用程序利用以调用所述服务的确认。
图6是展示可在不同阶段加载的驱动程序和相关联硬件实例之间的关系的框图。类似于如上文参考图2所描述可在不同阶段(例如,pre-system_server阶段和post-system_server阶段)加载的种类,计算装置/操作系统初始化可通过基于用途特性在各阶段中加载驱动程序和相关联硬件实例来加速。例如,第一驱动程序(驱动程序1)可以支持第一组硬件实例602,并且第二驱动程序(驱动程序2)可以支持第二组硬件实例604。每个硬件实例可被指定为在特定初始化阶段中使用,这是由硬件实例602a-d和604a-c中的每一个内部的数字来示出。例如,硬件实例602b(由驱动程序1支持)和硬件实例604a(由驱动程序2支持)可以基于这些硬件实例的优先级与阶段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)的四个实例,其可以用来连接到蓝牙芯片、车辆接口处理芯片等。类似于上述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进程以便加载选自第一种类列表的种类。所述计算装置的第二实例任选地包括第一实例,并且还包括:其中所述计算装置包括集成在车辆内的车内计算装置。所述计算装置的第三实例任选地包括第一和第二实例中的一个或多个,并且还包括:其中所述服务加载进程被配置成响应于经由进程间通信套接字检测到用于新应用程序的命令来加载新应用程序。所述计算装置的第四实例任选地包括第一至第三实例中的一个或多个,并且还包括:其中第一种类列表中的每个种类具有小于加载时间阈值的加载时间并且由大于进程阈值的数量的进程利用,并且第二种类列表中的每个种类具有大于加载时间阈值的加载时间并且由大于进程阈值的数量的进程利用。
上文描述的系统和方法还提供用于车内计算装置,所述车内计算装置包括:处理器,其包括一个或多个处理核心;以及存储装置,其存储用于初始化所述车内计算装置的操作系统的指令,所述指令可由所述处理器执行以:初始化虚拟机;使用处理器线程池加载第一种类列表的每个种类,所述处理器线程池中的线程的数量基于所述处理器中所包括的处理器核心的数量;使用所述处理器线程池加载所述车内计算装置的资源;加载服务加载进程,所述服务加载进程被配置来初始化所述操作系统的服务并且向服务管理器登记所述服务;以及在使用所述处理器线程池加载所述服务加载进程之后加载选自第二种类列表的种类。在所述车内计算装置的第一实例中,加载第一种类列表的每个种类可以另外或可选地包括同时加载来自第一列表的种类,其数量等于所述处理器线程池中的线程的数量乘以2。所述车内计算装置的第二实例任选地包括第一实例,并且还包括:其中所述指令还可被执行以:接收将要使用的驱动程序的通知;初始化所述驱动程序;并且选择性地初始化所述驱动程序所支持的硬件实例。所述车内计算装置的第三实例任选地包括第一和第二实例中的一个或多个,并且还包括:其中加载第一种类列表的每个种类的指令包括仅加载第一种类列表的种类而不加载第二种类列表的任何种类的指令,并且其中加载来自第二种类列表的种类的指令包括仅加载来自第二种类列表的种类而不加载第一种类列表的任何种类的指令。
已经出于说明和描述的目的呈现了实施方案的描述。对所述实施方案的合适的修改和更改可以根据以上描述来执行或者可以从实践所述方法来获取。例如,除非另外指出,所描述方法中的一种或多种可由合适的装置和/或装置组合(诸如,参考图1所描述的车内计算系统109)来执行。通过用与一个或多个额外硬件元件(诸如存储装置、存储器、硬件网络接口/天线、开关、执行器、时钟电路等)相结合的一个或多个逻辑装置(例如,处理器)执行所存储的指令,可执行所述方法。出了本说明书中描述的次序之外,还可以按各种次序(并行地和/或同时地)执行所描述的方法和相关联的动作。所描述的系统本质上是示例性的,并且可包括额外的元件且/或省略元件。例如,尽管参考ANDROID操作系统和车内计算装置描述了许多说明性实例,但是应理解,上述方法和系统可被包括在任何合适的硬件(例如,便携式计算装置、智能电话、平板计算机、台式计算装置、服务器计算系统等)和/或操作系统中且/或由所述硬件和/或操作系统利用。本公开的主题包括各种系统和配置与所公开的其他特征、功能和/或性质的所有新颖的且并非显而易见的组合和子组合。
如本说明书中所使用,以单数形式叙述并且前面有单词“一个”(“a”或“an”)的元件或步骤应被理解为不排除所述元件或步骤的复数形式,除非陈述了这种排除。此外,提到本公开的“一个实施方案”或“一个实例”并不意图被解释为排除也并入了所叙述特征的额外实施方案的存在。术语“第一”、“第二”和“第三”等仅仅用作标签,并且并不意图将数值要求或特定位置次序强加于它们的对象。以下权利要求书特别指出被认为新颖的且并非显而易见的来自以上公开的主题。

Claims (15)

1.一种在计算装置的操作系统的初始化期间选择性地加载种类的方法,所述方法包括:
初始化虚拟机;
加载选自第一种类列表的种类;
加载所述计算装置的资源;
加载服务加载进程,所述服务加载进程被配置来初始化所述操作系统的服务并且向服务管理器登记所述服务;以及
在加载所述服务加载进程之后加载选自第二种类列表的种类。
2.如权利要求1所述的方法,其中所述第一种类列表中的每个种类具有小于加载时间阈值的加载时间,并且由大于进程阈值的数量的进程利用。
3.如权利要求1或2所述的方法,其中所述第二种类列表中的每个种类具有大于所述加载时间阈值的加载时间并且由大于所述进程阈值的数量的进程利用。
4.如权利要求1-3中任一项所述的方法,其还包括:等待套接字以接收使应用程序分叉的命令,以及使所请求应用程序分叉以响应于接收到使所述所请求应用程序分叉的命令来加载所述所请求应用程序。
5.如权利要求1-4中任一项所述的方法,其中加载所述服务加载进程还包括在启动人机界面之前用所述服务加载进程仅加载关键服务。
6.如权利要求5所述的方法,其还包括启动所述人机界面以及经由所述人机界面启动上一次使用的应用程序。
7.如权利要求1-6中任一项所述的方法,其还包括响应于启动所述应用程序的请求来启动应用程序。
8.如权利要求1-7中任一项所述的方法,其还包括:在所述计算装置的服务管理器处从应用程序接收对于所请求服务的请求;确定所述所请求服务是否已经在所述计算装置上运行;如果所述所请求服务并不是已经在运行,那么启动所述所请求服务;以及如果所述所请求服务正在运行,那么向所述应用程序返回与所述所请求服务相关联的服务句柄。
9.如权利要求1-8中任一项所述的方法,其还包括:接收将要使用的驱动程序的通知;初始化所述驱动程序;以及选择性地初始化所述驱动程序所支持的硬件实例。
10.如权利要求9所述的方法,其中选择性地初始化所述驱动程序所支持的硬件实例包括:确定与所述驱动程序所支持的每个硬件实例相关联的初始化阶段;以及对于与第一初始化阶段相关联的每个硬件实例,初始化所述硬件实例。
11.如权利要求10所述的方法,其中选择性地初始化所述驱动程序所支持的硬件实例还包括:对于并不与第一初始化阶段相关联的每个硬件实例,在相关联的阶段列表中添加用于所述硬件实例的条目,所述阶段列表匹配与所述硬件实例相关联的那个阶段。
12.如权利要求11所述的方法,其还包括:对于在第一初始化阶段之后的每个初始化阶段,检索与所述初始化阶段相关联的阶段列表并且初始化与所述初始化阶段相关联的所述阶段列表中所包括的每个硬件实例。
13.一种计算装置,其包括:
处理器;以及
存储装置,其存储指令,所述指令可由所述处理器执行以:
初始化虚拟机;
加载选自第一种类列表的种类;
加载所述计算装置的资源;
加载服务加载进程,所述服务加载进程被配置来初始化所述操作系统的服务并且向服务管理器登记所述服务;并且
在加载所述服务加载进程之后,加载选自第二种类列表的种类。
14.如权利要求13所述的计算装置,其中所述虚拟机包括Dalvik虚拟机,并且所述计算装置包括集成在车辆内的车内计算装置,并且其中所述指令还可被执行来调用Zygote进程以便加载选自所述第一种类列表的所述种类。
15.如权利要求13或14所述的计算装置,其中所述服务加载进程被配置成响应于经由进程间通信套接字检测到用于新应用程序的命令来加载新应用程序。
CN201580037826.8A 2014-07-10 2015-07-09 操作系统启动加速 Pending CN106537341A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN3427/CHE/2014 2014-07-10
IN3427CH2014 2014-07-10
PCT/US2015/039735 WO2016007737A1 (en) 2014-07-10 2015-07-09 Operating system startup acceleration

Publications (1)

Publication Number Publication Date
CN106537341A true CN106537341A (zh) 2017-03-22

Family

ID=53761520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580037826.8A Pending CN106537341A (zh) 2014-07-10 2015-07-09 操作系统启动加速

Country Status (6)

Country Link
US (1) US10379871B2 (zh)
EP (2) EP3796159B1 (zh)
JP (1) JP6564845B2 (zh)
KR (1) KR102442181B1 (zh)
CN (1) CN106537341A (zh)
WO (1) WO2016007737A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180009316A1 (en) * 2015-01-07 2018-01-11 Green Ride Ltd. Vehicle-user human-machine interface apparatus and systems
CN107220055B (zh) * 2017-05-26 2024-03-29 上海传英信息技术有限公司 用于终端启动的方法、系统及终端
CN110780930B (zh) * 2019-09-23 2023-06-06 广州视源电子科技股份有限公司 启动Android系统的方法、装置、电子设备及存储介质
WO2021086315A1 (en) * 2019-10-29 2021-05-06 Hewlett-Packard Development Company L.P. Tracking device state transitions
KR20220109093A (ko) * 2021-01-28 2022-08-04 삼성전자주식회사 전자 장치 및 이의 제어 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060277402A1 (en) * 2005-05-18 2006-12-07 Hitachi, Ltd. System startup method
CN1964356A (zh) * 2005-11-10 2007-05-16 国际商业机器公司 数据处理方法和系统
US20070226719A1 (en) * 2006-02-23 2007-09-27 Samsung Electronics Co., Ltd. Method of providing partially isolated execution environment for multiple applications and digital information apparatus using the same
CN101159596A (zh) * 2006-10-02 2008-04-09 国际商业机器公司 用于布置服务器的方法和设备
CN101299848A (zh) * 2008-05-30 2008-11-05 宇龙计算机通信科技(深圳)有限公司 一种移动终端应急应用的启动方法、系统及移动终端
CN101350993A (zh) * 2007-07-18 2009-01-21 三星电子株式会社 用于在移动通信终端中选择性加载的设备和方法
CN102298532A (zh) * 2011-09-15 2011-12-28 奇智软件(北京)有限公司 一种基于启动项的管理方法及装置

Family Cites Families (25)

* 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 株式会社ナムコ ゲームプログラムおよびデータの読込み方法、ならびにこれを用いたゲーム装置
US6944846B2 (en) * 2001-12-14 2005-09-13 Hewlett-Packard Development Company, L.P. Algorithm for localization of a JAVA application using reflection API and a custom class loader
US7174447B2 (en) * 2003-11-14 2007-02-06 Intel Corporation Providing a pre-boot driver for use during operating system runtime of a computer system
KR101017372B1 (ko) * 2003-12-23 2011-02-28 삼성전자주식회사 작업 스케쥴러를 이용한 다수의 디바이스 초기화 방법
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
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US8141075B1 (en) * 2006-05-08 2012-03-20 Vmware, Inc. Rule engine for virtualized desktop allocation system
US7996666B2 (en) * 2007-09-04 2011-08-09 Apple Inc. User influenced loading sequence of startup applications
JP2009217711A (ja) * 2008-03-12 2009-09-24 Mitsubishi Electric Corp 情報処理装置
JP2010079566A (ja) * 2008-09-25 2010-04-08 Alpine Electronics Inc 情報処理装置およびアプリケーション起動方法
US9671241B2 (en) * 2009-02-03 2017-06-06 Telenav, Inc. Navigation system having route customization mechanism and method of operation thereof
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 車載機器制御装置、車載機器制御方法、及び車載機器制御プログラム
US9026343B2 (en) * 2010-12-29 2015-05-05 Paccar Inc Systems and methods for improving the efficiency of a vehicle
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
CN103092656B (zh) * 2013-01-23 2016-09-14 深圳市航盛电子股份有限公司 一种导航系统及导航方法
CN103324506A (zh) * 2013-06-24 2013-09-25 上海天奕达电子科技有限公司 一种控制Android应用程序安装的方法及手机
CN103488478A (zh) 2013-09-03 2014-01-01 厦门雅迅网络股份有限公司 基于android平台的设备管理框架
US9268610B2 (en) * 2013-11-01 2016-02-23 Vmware, Inc. Rapid virtual machine cloning

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060277402A1 (en) * 2005-05-18 2006-12-07 Hitachi, Ltd. System startup method
CN1964356A (zh) * 2005-11-10 2007-05-16 国际商业机器公司 数据处理方法和系统
US20070226719A1 (en) * 2006-02-23 2007-09-27 Samsung Electronics Co., Ltd. Method of providing partially isolated execution environment for multiple applications and digital information apparatus using the same
CN101159596A (zh) * 2006-10-02 2008-04-09 国际商业机器公司 用于布置服务器的方法和设备
CN101350993A (zh) * 2007-07-18 2009-01-21 三星电子株式会社 用于在移动通信终端中选择性加载的设备和方法
CN101299848A (zh) * 2008-05-30 2008-11-05 宇龙计算机通信科技(深圳)有限公司 一种移动终端应急应用的启动方法、系统及移动终端
CN102298532A (zh) * 2011-09-15 2011-12-28 奇智软件(北京)有限公司 一种基于启动项的管理方法及装置

Also Published As

Publication number Publication date
WO2016007737A1 (en) 2016-01-14
JP2017520856A (ja) 2017-07-27
US20170168848A1 (en) 2017-06-15
EP3167363B1 (en) 2020-12-16
KR20170030515A (ko) 2017-03-17
EP3796159B1 (en) 2022-08-31
US10379871B2 (en) 2019-08-13
EP3796159A1 (en) 2021-03-24
KR102442181B1 (ko) 2022-09-08
EP3167363A1 (en) 2017-05-17
JP6564845B2 (ja) 2019-08-21

Similar Documents

Publication Publication Date Title
US10423430B2 (en) Operating system startup acceleration
EP2887348B1 (en) Voice recognition query response system
US9424047B2 (en) System and methods for an in-vehicle computing system
CN106161502B (zh) 移动通信系统及其控制方法、辅助终端及车辆
CN104816687B (zh) 车辆中的自动化驾驶者动作的系统和方法
US11823594B2 (en) Methods and apparatus to develop in-vehicle experiences in simulated environments
US20170101054A1 (en) Inter-vehicle communication for roadside assistance
US20150051754A1 (en) Control device and control method for controlling function of vehicle
CN106537341A (zh) 操作系统启动加速
US20130145360A1 (en) Vehicle application store for console
CN104837666B (zh) 在车辆里创建感官体验
US20120221188A1 (en) Vehicle hmi replacement
CN104768130A (zh) 车辆内通知呈现调度
WO2013052043A1 (en) Electronic communications and control module
JP6577566B2 (ja) オペレーティングシステム起動加速
US20240198938A1 (en) Computing Systems And Methods For Generating User-Specific Automated Vehicle Actions
US20200278830A1 (en) System and method for managing multiple applications in a display-limited environment
WO2023096659A1 (en) Method for power states in vehicles
CN106716341A (zh) 用以改进车内的用户体验的自适应界面的系统和方法

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170322