聚集循环调度以优化资源消耗的制作方法

文档序号:6593242阅读:247来源:国知局
专利名称:聚集循环调度以优化资源消耗的制作方法
聚集循环调度以优化资源消耗背景近年来,诸如移动电话和个人数字助理(PDA)之类的移动计算设备变得越来越流 行。随着设备变得越来越小,对诸如存储器、带宽,以及电池之类的资源的限制就越大。另 外,越来越多的应用现在需要这样的资源的级别越来越高。例如,许多应用执行诸如与服务 器同步之类的重复的任务和需要频繁地使用无线装置来保持连接的实时内容更新。在无线 装置开启以发送数据之后,无线装置要花几秒才可断电(例如,在2. 5G网络上大约3秒,而 在3G网络上大约20秒)。无线装置“尾巴”吸收电量,并缩短设备电池寿命。概述本发明的各实施例调整循环调度的激活时间,以机会主义地利用诸如受限资源之 类的资源。每一调度都被定义为在循环激活时间激活,但可以在容限因子内较早执行。在 接收到诸如资源可用性之类的事件的通知之后,基于接收到的通知、激活时间,以及容限因 子来标识调度。例如,将基于容限因子来将某些调度标识为较早激活以利用可用资源。聚 集并激活所标识的调度。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定 所要求保护的主题的范围。附图简述

图1是示出了调度器服务的操作的示例性流程图。图2是示出在计算设备上执行的调度器服务的示例性框图。图3是示出设备管理服务器对移动计算设备的控制的示例性框图。图4是示出表示调度的数据结构的示例性框图。相应的附图标记在全部附图中指示相应的部分。详细描述参考附图,本发明的各实施例提供在计算设备204上执行的控制循环调度208的 激活的调度器服务202。调度208被用户或诸如应用程序1号到应用程序M号之类的一个 或多个应用程序207定义为周期性地发生。调度208的激活包括在所定义的激活时间410的预定义的容限内采取或执行一 个或多个与调度208相关联的动作406。图1中示出了调度器服务202的示例性操作。在 102,接收事件通知。例如,通知指示受限资源可用。在104,访问多个调度208。多个调度 208中的每一个具有所定义的激活时间410和容限因子412以及其他属性(例如,调度期满 规则、最大调度运行计数,调度208是否需要使用受限资源等等)。容限因子412 —般指示 调度208在受限资源变得可用时较早运行的容限。容限因子412包括用于指示调度在不同 于其预定义激活时间410的时间执行的可用性的任何手段。例如,容限因子412包括但不 仅限于常数值(例如,以分钟或秒为单位)、百分比(例如,诸如10%之类的间隔持续时间 408的百分比),以及资源可用性之间的分钟数的移动均值。在106,根据事件通知、当前时间、所定义的激活时间410,以及每一个所访问的调度的容限因子412,来标识所访问的调度中的一个或多个。例如,调度器服务202标识对于 其事件是调度208的所定义的激活条件的调度208,或以其他方式标识事件所适用的调度 208。调度器服务202进一步从所标识的调度选择可以基于每一个调度的容限因子412来 较早激活的那些调度。例如,调度器服务202计算当前时间和每一个调度208的所定义的 激活时间410之间的差,并将计算出的差与调度208的容限因子412进行比较。对于在容 限范围内的所有差,选择对应的调度来进行激活。在元素106的示例中,评估需要受限资源的调度208在生成或接收到通知时运行 的适合性。在某些实施例中,基于当前时间是否落在排定时间和小于较早运行的容限的排 定时间之间来确定适合性。在108,激活所标识的调度。激活所标识的调度包括执行与调度相关联的动作406 中的一个或多个。动作406包括例如诸如软件安装、配置和/或更新之类的软件配置动作。 动作还可以包括访问计算设备204上的可执行文件或库。动作还可以包括修改计算设备 204上的会导致先前动作中的任一个发生的同步事件。对于移动计算设备302,最受限资源中的一个是电池,蜂窝无线电的使用是移动计 算设备302上的功耗最大的活动。在其中调度器服务202在移动计算设备302上执行或以其他方式控制移动计算设 备302的实施例中,调度器服务202的操作通过接合、组合,或以其他方式聚集循环调度208 以优化可用资源的使用,来延长电池寿命。循环调度208是基于事件来选择的。事件包括 诸如特定时间或设备条件之类的任何条件。例如,如果事件指示资源可用(例如,网络或网 络类型),标识调度208包括标识使用该资源的调度208。在另一示例中,需要蜂窝无线电 的调度208将基于容限因子412来被标识为较早激活,以便在该无线电已经为另一个任务 通电时利用该无线电。附录A列出了在本发明的各实施例的范围内的附加示例性调度208。通过使得每一调度的激活时间410在容限内变化,调度器服务202通过在资源可 用时利用资源并最小化开销来延长电池寿命。例如,当存在异步蜂窝、无线高保真(Wi-Fi) 或其他无线电发射机或接收机事件(例如,服务器向设备发送数据,或者用户发起web浏览 会话)时,调度器服务202扫描数据库210,并确定可以承载或利用无线电使用的调度。以 此方式聚集调度最小化无线电加速自旋(spin up)。在其他实施例中,调度器服务202用于 最小化将设备从空闲状态中带出的频率。在另一示例中,调度器服务202用于节省耗电资 源,诸如移动计算设备302的下列组件背光、处理器、音频放大器、全球定位系统、数字存 储器就绪(digital memory ready)、短距离无线网络适配器(例如,对于蓝牙网络),辅助 处理器、振动电动机、振铃器、照像机、加速计,以及环境光传感器。另选地或另外地,如果调度器服务202确定资源将不会在单独执行调度期间被置 于高消耗状态,则调度器服务202将单独地执行调度。尽管在某些实施例中参考移动计算设备302来进行描述,但本发明的各方面适用 于其他设备。此外,尽管在某些实施例中参考调度器服务202来进行描述,但本发明的各方 面适用于执行此处所示出和描述的功能的任何组件。在其中调度A、B和C都需要网络连接的示例中,可以基于容限因子412来将调度 B和C与与调度A成批或聚集。如果调度A的执行使无线电事件加速自旋,则将发布该事 件并且然后执行调度B和C以利用该无线电事件。如果调度A从不需要网络,则调度B和C将在其原始排定时间执行。在执行调度之后,在110,调度器服务202为每一个调度定义下一激活时间。每一 个调度208都具有与每一个调度208的循环激活之间的时间相对应的间隔持续时间408。 间隔持续时间408由应用程序207或用户在创建调度时设置。在一实施例中,每一个调度 的下一激活时间通过将间隔持续时间408加到上一激活时间来确定。由此,调度执行之间 的实际时间段可以比间隔持续时间408短,但决不会比间隔持续时间408长。或者,基于最初定义的激活时间来设置每一个调度的下一激活时间。由此,调度执 行之间的实际时间段可以比间隔持续时间408短或长,但长期平均间隔持续时间收敛到指 定间隔。在一实施例中,创建调度208的应用程序207或用户确定应该使用哪一种设置下 一激活时间的方法。在某些实施例中,许多应用程序207都使得调度208定期向服务器发送小数据分 组以使连接保持开放。开放的连接允许服务器实时地将数据推送到移动计算设备302。调 度器服务202允许应用程序207调用应用程序编程接口(API)并模拟调度208运行。结果, 基于模拟的运行来来计算下一排定时间。在这样的示例中,循环调度208被称为“心跳”,并 确保在网络超时内在计算设备204和服务器之间发送数据。例如,如果网络超时是15分钟, 则连接要求每隔15分钟在设备和服务器之间交换某些数据,否则连接将关闭。S卩,设备204 必须每隔15分钟向服务器发送一些小数据分组。然而,如果服务器向设备发送数据(例如, 在8分钟标记处),则应用程序207在8分钟标记处调用API。计算出调度的下一激活时间 在23分钟标记处(例如,8+15)而不是15分钟标记。附录B包括调度器服务202的示例性属性和状态的列表。参考图2,示例性框图示出了在计算设备204上执行的调度器服务202。计算设备 204包括,例如,诸如个人数字助理(PDA)或移动电话之类的移动设备。处理器206被配置 成执行计算机可执行指令,这些指令用于从用户、在计算设备204上执行的应用程序207、 远离计算设备204执行的应用程序207或另一个源接收每一个调度208的激活时间410、容 限因子412,以及间隔持续时间408。接收到的调度数据被存储在数据库210或其他存储器 区域中。附录C列出了在定义调度208时所涉及的示例性属性和定义。间隔持续时间408确定调度208的执行或激活之间的时间段。连续间隔持续时间 可以相同,或线性地、按指数规律地相关等等。例如,调度208中的某一些具有激活之间的 逐渐增大的间隔。在一实施例中,应用程序207或用户指定初始间隔值、渐进类型(例如, 线性或指数级),以及最大间隔值。当调度执行时,间隔从初始值开始,宾且然后在每一次执 行之后适当地增大。如果指定了最大间隔值,则间隔持续时间408决不会增大到高于最大 间隔值,但保持在其最高值。一个或多个计算机可读介质具有用于实现调度器服务202的各实施例的计算机 可执行的组件。例如,组件被存储在存储器区域212中,并包括接口组件214,条件组件216、 聚集组件218、节省组件220、扼流组件222,以及规则组件223。接口组件214接收事件的 通知(例如,计算设备204上的耗电资源的可用性的通知)。例如,事件可以是时间事件,如 相对时间间隔(例如,引导之后5分钟)或绝对时间(例如,12:00:00am)的发生。事件还 可以是状态事件,如引导,检测到诸如Wi-Fi连接或蜂窝连接之类的预定连接类型,和/或 最初丢失网络连接之后重新建立网络连接,或计算设备204的其他状态。此外,事件通知是
6从通知代理224或任何其他事件、通知或状态系统接收的。尽管图2中的通知代理224被 示为在计算设备204上执行,但通知代理224可另选地或另外地在另一计算设备(例如,经 由网络与计算设备204进行通信)上执行。在一示例中,存在供接口组件214接收蜂窝无线电正在在移动计算设备302上 传输数据的通知的若干方式。一种方式涉及无线电制造商通知无线电上方的软件层无线 电正在传输数据。另一种方式是监视网际协议(IP)栈以检查是否有正在发送或接收的数 据。在发送或接收数据时,记录时间并设置事件状态(例如,设为“true(真)”)。在所 定义的时间段(例如,十秒)之后,如果没有发送其他数据,则改变事件状态(例如,设为 "false (假)”)。调度器服务202在检测到事件状态从“false”变为“true” (在该示例中 指示无线电正在发送数据)时接合调度208。基于接口组件214接收到的事件信息,条件组件216标识存储在数据库210中的 至少一个调度208。在其中接收到的事件指示资源可用性的示例中,条件组件216标识在执 行期间消耗资源的调度208。聚集组件218基于调度的激活时间410和容限因子412来选 择由条件组件216标识的调度中要执行的一个或多个调度。例如,聚集组件218选择对于 其下一激活时间和由接口组件214接收到通知的时间之间的差在该调度的容限因子412范 围之内的调度。在一实施例中,接收到通知的时间与当前时间相对应。节省组件220执行 由聚集组件218选择的调度。例如,节省组件220执行与每一个所聚集的调度相关联的动 作406。作为示例,供聚集组件218选择调度的准则可通过下列布尔表达式来表示(当前 时间> =(NEXT_RUN_TIME (下一运行时间)-RUN_EARLY_TIME (较早运行时间))and (当前 时间< ENDjIME (结束时间))。由聚集组件218选择满足这些准则的所有调度。扼流组件222根据预定义的扼流限制值来限制由节省组件220执行的调度数量。 在一实施例中,扼流限制根据计算设备204上的资源的消耗状态来定义。例如,在节省组件 220执行由聚集组件218选择的调度之前,节省组件220经由扼流组件222确定是否已经达 到扼流限制阈值。例如,在较紧的时间邻近度内触发的大量的调度或动作可能导致严重的 资源不足。为缓解这种状况,扼流组件222在任何给定时间窗口期间只启动所定义数量的 调度或动作406。每一次成功地启动调度或动作时,计数器都递增。如果计数器值达到扼流 限制,则延迟其他调度或动作启动,直到计数器重置为零或以其他方式递减。例如,计数器 由每隔一段预定义时间执行的线程来重置为零。另选地或另外地,计数器在使用资源的调 度或动作释放资源时递减。规则组件223将调度专用属性应用到每一个调度208。例如,规则组件223确定如 何计算下一排定时间(例如,最大值或均值),何时启动调度208,何时结束调度208,重复调 度208多少次,以及什么实体可以修改调度208。某些调度208被定义为只有在计算设备204引导时执行。如果这些调度共享公共 资源(例如,无线电),则调度器服务202将这些调度的激活与共同激活时间校准,以利用资 源的可用性。类似地,调度器服务202将具有类似间隔或间隔倍数的调度与基时间零(例如,人 工时间零)校准。作为示例,两个应用程序207具有五分钟的心跳间隔,其中每一个间隔都 具有20%的容限因子412 (例如,与一分钟的较早运行容限相对应)。第一应用程序在时刻 TO (例如,启动)、T5(例如,启动之后的五分钟),以及TlO (例如,启动之后十分钟)执行心跳操作。第二应用程序在时刻T2(例如,第一应用程序启动之后两分钟)和T7(例如,启动 之后五分钟)启动并执行心跳操作。由于两个应用程序的心跳操作之间的差是两分钟或三 分钟,因此心跳操作未被调度器服务202接合。相反,调度器服务202校准第二应用程序以 在时刻Τ5启动,以使得两个应用程序的心跳操作同时发生。参考图3,示例性框图示出了设备管理服务器304对移动计算设备302的控制。在 图3中,来自图2的调度器服务202担当在设备管理客户机308内执行的客户机调度器模 块306,该模块与在设备管理服务器304或其他计算设备(例如,经由网络312连接)上执 行的服务器调度器模块310进行通信。在这样的实施例中,服务器调度器模块310指示客 户机调度器模块306激活调度208,并执行与如图2中的每一个聚集的调度相关联的动作 406。参考图4,示例性框图示出了表示调度208的数据结构。调度208被存储在可以 用可扩展标记语言(XML)格式编码的数据结构中。每一个调度208都包括预定义事件404 及相关联的动作406,以及间隔持续时间408、激活时间410,以及容限因子412的列表。预 定义事件404包括时间事件和状态事件。相关联的动作406包括要在发生预定义事件404 时执行的操作。动作406指定例如可执行文件路径和命令行参数或已命名的同步事件。示例性操作环境诸如此处所描述的计算设备或计算机具有一个或多个处理器或处理单元以及系 统存储器。计算机通常具有至少某种形式的计算机可读介质,包括计算机存储介质和通信 介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数 据的信息的任何方法或技术实现的易失性与非易失性、可移动与不可移动介质。通信介质 一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程 序模块或其它数据,并且包括任何信息传递介质。尽管结合示例性计算系统环境进行了描述,但本发明的各实施例可用于众多其它 通用或专用计算系统环境或配置。本发明的各实施例可以在由一个或多个计算机或其他设备执行的诸如程序模块 等计算机可执行指令的通用上下文中描述。本发明的各方面可以用任何数量的这些组件或 模块及其任何组织来实现。例如,本发明的各方面不限于在各附图中示出和本文中描述的 特定的计算机可执行指令或者特定的组件或模块。本发明的其他实施例可以包括具有比在 本文中示出和描述的更多或更少的功能的不同计算机可执行指令或组件。此处所示出和描述的实施例以及此处未具体描述但在本发明的各方面的范围内 的实施例构成用于聚集要激活的循环调度208的示例性手段、用于校准循环调度208的激 活的示例性手段,以及用于根据接收到的通知、通知时间、多个循环调度中的每一个的所定 义的激活时间,以及容限因子412来标识多个循环调度208中的一个或多个的示例性手段。除非另有指定,否则此处所示和所述的本发明各实施例的操作的执行或进行的次 序并不重要。即,除非另有指明,否则各操作可按照任何次序执行,且本发明的实施例可以 包括比本文所公开的更多或更少的操作。例如,构想了在另一操作之前、同时或之后执行或 进行一特定操作是在本发明各方面的范围之内的。当介绍本发明各方面或其实施例的各元素时,冠词“一”、“一个”、“该”和“所述”指 的是存在该元素的一个或多个。术语“包括”、“包含”和“具有”是指包括在内,并表示除所列元素外还可能存在其它元素、在详细描述了本发明的各方面之后,可以清楚,修改和变化是有可能的,而不背离 所附权利要求书中定义的本发明各方面的范围。不背离本发明各方面的范围的情况下,可 对以上构造、产品和方法进行各种改变,以上描述中所包含的以及在附图中所示出的所有 一切旨在应被解释为说明性并且没有限制意义。附录 A下面列出了在本发明的各实施例的范围内的示例调度。在另一示例中,应用程序具有在中午执行并使用移动设备中的无线电的调度。另 一个应用程序具有带有下午12:05的已定义的激活时间410以及五分钟的容限的调度。此 调度也需要使用无线电。然后,调度器服务聚集这两个调度以同时激活,从而允许无线电 只加速自旋一次。结果是通过避免无线电断电所需的电量吸收(例如,无线电断电一次而 不是两次)来节省电量。在此示例的变体中,在较早运行之后,重新计算调度的下一执行时 间,以使其决不会超出间隔持续时间值,或者从不重新计算下一执行时间。在另一示例中,应用程序监视诸如拍卖等具有预定义结束时间的在线数据源。所 需调度更新速率是可变的,并且期望随着结束时间的临近频繁地更新。在另一示例中,设备上的应用程序必须每隔X分钟向服务器发送数据,以使设备 和服务器之间的连接保持打开。如果服务器在下一排定时间之前发送数据,则设备应用程 序不需要在该排定时间发送数据,它只需重新计算下一排定时间(等于从服务器接收到数 据的时间+X)。附录B下面列出了根据本发明的各实施例的调度器的示例性属性和状态。
名称描述CURRENT TIME (当前时间)表示用UTC表示的系统时钟的值SERVICE_START—TIME (服务 启动时间7表示当服务启动时用UTC表示的系统时 钟的值SERVICE START TICK (服务 启动计时位)表示服务启动时的计时单位计数的值SCHEDULES (调度)系统中的所有调度的列表AGGREGATION ENABLED (启用聚集)—启用或禁用聚集功能表Bl全局状态。
名称描述CURRENT_INTERVAL(当定义被用来计算NEXT_RUN_TIME的间隔。前间隔)在服务启动之后或当调度变为活动时,该值 会重置为初始值。CURRENT RUN COUNT (当前运行计数)跟踪激发调度的次数的计数。NEXT_RUN—TIME假定发生下一排定的激发的时间。如果调度 从来没有被安排激发,则为-1。ENABLED (已启用)如果已启用,则调度可以有资格是活动的。表B2每一个调度的状态。
名称描述
权利要求
一种或多种具有用于节省移动设备(302)的电量的计算机可执行组件的计算机可读介质,所述组件包括接口组件(214),所述接口组件用于接收耗电资源在所述移动设备(302)上的可用性的通知;条件组件(216),所述条件组件用于标识存储在存储器区域中的在执行期间消耗所述资源的多个调度(208),所述多个调度(208)中的每一个都具有循环激活时间(410)和容限因子(412);聚集组件(218),所述聚集组件用于选择所标识的多个调度中的对于其所述循环激活时间(410)和所述界面组件(214)接收到所述通知的时间之间的差在所述容限因子(412)范围内的一个或多个调度;以及用于执行由所述聚集组件(218)选择的调度以使用所述耗电资源的节省组件(220)。
2.如权利要求1所述的计算机可读介质,其特征在于,还包括用于根据预定义的限制 值来限制由所述节省组件执行的调度的数量的扼流组件。
3.如权利要求1所述的计算机可读介质,其特征在于,所述耗电资源包括以下与移动 设备相关联的资源中的一个或多个射频发射机、背光、处理器、音频放大器、全球定位系 统、数字存储器就绪、短程无线网络适配器、辅助处理器、振动电动机、振铃器、照像机、加速 计、以及环境光传感器。
4.一种方法,包括接收事件通知;访问多个循环调度(208),所述多个循环调度(208)中的每一个都具有与其相关联的 所定义的激活时间(410)和容限因子(412);根据所接收到的事件通知、当前时间、所访问的每一个调度的所定义的激活时间(410) 以及所述容限因子(412)来标识所访问的调度中的一个或多个;以及激活所标识的调度。
5.如权利要求4所述的方法,其特征在于,激活所标识的调度包括执行与所标识的调 度相关联的一个或多个动作。
6.如权利要求4所述的方法,其特征在于,所述多个调度中的每一个都具有激活时间 之间的间隔持续时间,并且所述方法还包括基于每一个所激活的调度的间隔持续时间来为 该调度定义下一激活时间。
7.如权利要求6所述的方法,其特征在于,定义所述下一激活时间包括将每一个调度 的间隔持续时间加到所述当前时间,以定义所述每一个调度的下一激活时间。
8.如权利要求6所述的方法,其特征在于,所述当前时间和所定义的下一激活时间之 间的差小于所述间隔持续时间。
9.如权利要求4所述的方法,其特征在于,标识所访问的调度中的一个或多个包括计算所述当前时间和每一个调度的所定义的激活时间之间的差;将计算出的差与所述调度的容限因子进行比较;以及基于所述比较来标识所述调度中的一个或多个。
10.如权利要求4所述的方法,其特征在于,接收所述事件通知包括接收资源可用的通 知,并且其中标识所访问的调度中的一个或多个包括标识所述调度中使用所述可用资源的一个或多个调度。
11.如权利要求4所述的方法,其特征在于,所述接收、所述访问、所述标识、以及所述 激活由移动设备执行。
12.如权利要求4所述的方法,其特征在于,所述多个调度中的每一个都具有与其相关 联的至少一个动作,其中所述接收、所述访问、所述标识、以及所述激活由计算设备执行,并 且其中激活所标识的调度包括指示移动设备执行与所标识的调度中的每一个相关联的动 作。
13.如权利要求4所述的方法,其特征在于,还包括定义扼流限制,其中激活所标识的 调度包括激活小于所定义的扼流限制的数量的所标识的调度。
14.如权利要求13所述的方法,其特征在于,所标识的调度在移动设备上激活,并且其 中定义所述扼流限制包括根据资源在所述移动设备上的消耗状态来定义所述扼流限制。
15.一种系统,包括用于存储多个循环调度(208)的存储器区域,所述多个循环调度(208)中的每一个都 具有所定义的激活时间(410)、容限因子(412)、以及激活时间之间的间隔持续时间(408); 以及被配置成执行用于下列操作的计算机可执行指令的处理器(206)接收每一个循环调度(208)的所定义的激活时间(410)、容限因子(412)、以及间隔持 续时间(408);将所接收到的激活时间(410)、容限因子(412)、以及间隔持续时间(408)存储在所述 存储器区域中;在通知时间接收事件的通知;标识所述循环调度(208)中的所接收到的通知适用并且对于其所定义的激活时间 (410)和所述通知时间之间的差在所述容限因子(412)范围内的一个或多个循环调度;聚集所标识的调度以供激活;以及执行与每一个所聚集的调度相关联的一个或多个动作(406)。
16.如权利要求15所述的系统,其特征在于,所述事件包括移动设备的引导,并且其中 所述处理器还被配置成将所标识的调度的激活与共同激活时间校准。
17.如权利要求15所述的系统,其特征在于,所述存储器区域和所述处理器与移动设 备相关联。
18.如权利要求15所述的系统,其特征在于,所述存储器区域和所述处理器与设备管 理服务器相关联,并且其中所述处理器被配置成通过指示移动设备执行与每一个所聚集的 调度相关联的动作来执行所述一个或多个动作。
19.如权利要求15所述的系统,还包括用于根据所接收到的通知、所述通知时间、所述多个调度中的每一个的所定义的激活 时间以及所述容限因子来标识所述多个循环调度中的一个或多个的装置;以及用于聚集所标识的调度以供激活的装置。
20.如权利要求15所述的系统,其特征在于,还包括用于校准所述循环调度的激活的直ο
全文摘要
接合使用资源的调度以延长电池寿命。每一个调度被定义为在循环激活时间的所定义的容限内执行。在接收到事件的通知之后,访问调度以基于其激活时间和容限来标识可以较早执行的调度。聚集所标识的调度以供执行。
文档编号G06F1/32GK101981531SQ200980111814
公开日2011年2月23日 申请日期2009年2月25日 优先权日2008年3月27日
发明者A·P·特兰, A·萨佩克, C·T·吉约里, H·蒂耿, J·M·米勒, K·C·本特利, L·A·摩尔, P·G·哈坦迦迪 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1