应用程序的延迟启动的制作方法

文档序号:6569821阅读:196来源:国知局
专利名称:应用程序的延迟启动的制作方法
应用程序的延迟启动
些旦
NT眾
当计算机接通电源或用户登录时,计算机操作系统提供多种方法注册将要 运行的应用程序。这些启动应用程序在启动(接通电源)和登录时可能是性能 问题的主要原因。在安装时,软件应用程序通常将其自己注册为启动应用程序 而不考虑这对用户而言是否是必需的。用户经常被搞糊涂且不知道如何关闭这 一选项,结果是在普通用户的机器上出现需要花很长时间来初始化的大量启动 应用程序。在此初始化期间,虽然对用户而言它们不是立即需要或想要的且可 以慢些再启动,但是它们消耗了机器上的系统资源。因为这个问题,大量
Microsoft Windows顾客在登录之后不得不等很长时间才能开始使用其计算机。 当然,存在必要的且重要的启动应用程序,如即时消息通信应用程序、反病毒 或反间谍软件应用程序。
概述
启动某些应用程序中的延迟可以导致改善所感知的系统性能。这可通过延 迟这些进程运行的时间、和/或通过对诸如处理器、I/O或存储器资源等各系统 资源减少这些进程的优先级来完成。这允许用户更迅速地获得这些资源而不管 用户所需目的是什么,而非必须等待启动应用程序结束初始化。此外,公开了 用于允许用户调整启动优先级的用户界面。
附图


图1是可以根据权利要求来操作的计算系统的框图; 图2可以是根据权利要求的方法的一个高级说明;以及 图3可以示出根据权利要求的方法的另一实施例。
描述虽然以下文本阐明了许多不同实施例的详细描述,但是应当理解,本描述 的合法范围由本专利所附权利要求书的文字来定义。本详细描述应仅被理解为 示例性的,且不描述全部可能的实施例,因为描述全部可能的实施例是不实际 的(如果不是不可能的话)。可以使用现有技术或本专利的申请日后开发的技 术实现许多替换实施例,它们仍落入权利要求书的范围。
还应当理解,除非在此专利中使用句子"如此处所使用,术语'—,特此定 义为意指......"或类似句子明确地定义一术语,否则不存在明确地或通过暗示
将该术语的意思限制在其平常或普通意思之外的意图,并且这样的术语不应被 理解为限于基于本专利的任何章节中的任何语句(除了权利要求书的语言)的 范围中。就本专利所附的权利要求书所叙述的任何术语在本专利中按与单数意 思一致的方式被引用来说,这么做是为了清楚以至于不使读者迷惑,并且不旨 在通过暗示或其他方式将权利要求术语限于该单数意思。最后,除非通过单词 "意指"以及在没有叙述任何结构的情况下叙述功能来定义权利要求元素,否则
不旨在基于申请35 U.S.C § 112的第6段来解释任何权利要求元素的范围。
图1示出了其上可以实现用于所要求保护的方法的步骤和装置的合适计 算系统环境100的示例。计算系统环境100只是合适计算环境的一个示例,且 不旨在对权利要求的方法和装置的使用或功能的范围提出任何限制。计算环境 100也不应理解为对示例性操作环境100中示出的任何一个组件或其的结合有 任何依赖或要求。
所要求保护的方法的步骤和装置可与许多其他通用或专用计算系统环境 或配置一起操作。可适用于与权利要求书的方法或装置一起使用的公知计算系 统、环境、和/或配置的示例包括但不限于个人计算机、服务器计算机、手持 或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者 电子设备、网络PC、小型计算机、大型计算机、包括任何上述系统或设备的 分布式计算环境等等。
可以在诸如程序模块等由计算机执行的计算机可执行指令的一般上下文 中描述所要求保护的方法的步骤和装置。 一般而言,程序模块包括执行特定任 务或实现特定数据结构类型的例程、程序、对象、组件、数据结构等。也可以 在分布式计算环境中实现方法和装置,其中任务由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备 的本地和远程计算机存储介质中。
参见图1,用于执行所要求保护的方法的步骤和装置的示例性系统包括计 算机110形式的通用计算设备。计算机110的组件包括但不限于:处理单元120、 系统存储器130和将包括系统存储器在内的各个系统组件耦合到处理单元120 的系统总线121。系统总线121可以是几种类型的总线结构中的任何一种,包
括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任何 一种的局部总线。作为例子而非限制,这样的体系结构包括工业标准体系结构
(ISA)总线、微通道体系结构(MCA)总线、增强型ISA (EISA)总线、视 频电子技术标准协会(VESA)局部总线、外围部件互连(PCI)总线(也被称 为夹层(Mezzanine)总线)。
计算机IOO通常包括各种计算机可读介质。计算机可读介质可以是能由计 算机IOO访问的任何可用介质,且包括易失性和非易失性介质、以及可移动和 不可移动介质。作为例子而非限制,计算机可读介质可以包括计算机存储介质 和通信介质。计算机存储介质可以包括以用于存储如计算机可读指令、数据结 构、程序模块或其他数据这样的信息的任何方法或技术实现的易失性和非易失 性、可移动和不可移动介质。计算机存储介质包括但不限于RAM、 ROM、 EEPROM、闪存或者其它存储器技术、CD-ROM、数字多功能盘(DVD)或者 其它光盘存储、磁带盒、磁带、磁盘存储或者其它磁存储设备、或者能够用来 存储所需信息并且能够由计算机100访问的任何其它介质。通信介质通常以诸 如载波或者其它传输机制的已调制数据信号来体现计算机可读指令、数据结 构、程序模块或者其它数据,并且包括任何信息传递介质。术语"已调制数据 信号"是指以在该信号中编码信息的方式来设置或改变其一个或多个特性的信 号。作为例子而非限制,通信介质包括有线介质,诸如有线网络或者直接线连 接,以及无线介质,诸如声学、射频(RF)、红外以及其它无线介质。任何上 述组合都应包括在计算机可读介质的范围之内。
系统存储器130包括易失性和/或非易失性存储器形式的计算机可读存储 介质,诸如只读存储器(ROM) 131和随机存取存储器(RAM) 132。基本输 入/输出系统133 (BIOS) —般被存储在ROM 131中,BIOS包含有助于例如在启动过程中在计算机110内部的元件之间传输信息的基本例程。RAM 132 一般包含可由处理单元120立即访问和/或当前正由处理单元120进行操作的数 据和/或程序模块。作为示例而非限制,图1示出了操作系统134、应用程序135、 其他程序模块136和程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储 介质。仅仅作为示例,图l示出了从不可移动、非易失性磁介质读取或向其写 入的硬盘驱动器140,从可移动、非易失性磁盘152读取或向其写入的磁盘驱 动器151,以及从诸如CDROM或其它光学介质等可移动、非易失性光盘156 读取或向其写入的光盘驱动器155。能在示例性操作环境中使用的其它可移动/ 不可移动、易失性/非易失性计算机存储介质包括但不限于,盒式磁带、闪存卡、 数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141 通常通过诸如接口 140等不可移动存储器接口连接到系统总线121,而磁盘驱 动器151和光盘驱动器155通常通过诸如接口 150等可移动存储器接口连接到 系统总线121。
以上讨论且示于图1中的驱动器及其相关联计算机存储介质为计算机110 提供了对计算机可读指令、数据结构、程序模块及其它数据的存储。在图1中, 例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模 块146和程序数据147。应当注意,这些组件可以和操作系统134、应用程序 135、其他程序模块136和程序数据137相同或者相异。操作系统144、应用程 序145、其他程序模块146和程序数据147在此处被给予了不同的编号以示出 至少,它们是不同的副本。用户可以经由输入设备,诸如键盘162和通常称之 为鼠标、跟踪球或者触摸垫的指示设备161将命令和信息输入到计算机20中。 其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、 扫描仪等。这些及其它输入设备经常经由耦合到系统总线的用户输入接口 160 耦合到处理单元120,但是可以通过其它接口和总线结构,诸如并行端口、游 戏端口或通用串行总线(USB)进行连接。监视器191或其他类型的显示设备 也通过诸如视频接口 190等接口耦合到系统总线121。除了监视器之外,计算 机100还可以包括诸如扬声器197和打印机196等其他外围输出设备,它们可 以通过输出外围接口 l卯进行连接。计算机110可以利用与诸如远程计算机180等一个或多个远程计算机的逻 辑连接在网络化环境中操作。远程计算机180可以是个人计算机、服务器、路 由器、网络PC、对等设备或者其它常见的网络节点,而且通常包括许多或者 所有以上相对于计算机IIO所描述的元件,尽管在图1中仅示出了存储器存储 设备181。图1中描述的逻辑连接包括局域网(LAN) 171和广域网(WAN) 173,但是也可以包括其它网络。这种网络环境常见于办公室、企业范围计算 机网络、内联网和因特网。
当在LAN网络环境中使用时,计算机110经由网络接口或适配器170耦 合到LAN 171。当在WAN网络环境中使用时,计算机IIO通常包括调制解调 器172或者用于经由如因特网等WAN 173建立通信的其他装置。可以是内置 或者外置的调制解调器172可经由用户输入接口 160或者其他适当的机制连接 到系统总线121。在网络化环境中,相对于计算机IIO描述的程序模块或其部 分可存储在远程存储器设备中。作为示例而非限制,图1将远程应用程序185 示为驻留在存储器设备181上。应当明白,所示网络连接是示例性的,也可以 使用在计算机之间建立通信链路的其它手段。
详细的应用程序启动
向用户提供通过将启动应用程序从诸如"运行(RUN)"注册表项等各个注 册点移除来将它们从启动进程中"移除"的选项是有用的,但这一特征有几个问 题。首先,启动应用程序经常监视这些注册点且将它们添加回来。其次,通过 从启动序列中完全地移除应用程序,可能会不利地破坏或丢失某些功能。
"延迟"启动应用程序的方法是一种解决方案且在以下描述,它允许用户在 登录时收回对其计算机的控制且无需从启动中完全移除启动应用程序。可以通 过降低启动应用程序用于CPU、 I/O以及存储器等的各自优先级来限制这些进 程对这类系统资源的消耗,这样以减少这些进程对用户系统的影响。在运行启 动应用程序时,该方法可以降低它们的CPU、 1/0和页面优先级,并且将它们 置于某些跟踪对象中。这种方法被称为"装箱(boxing)"。在可配置时间段之 后,该方法可以将其优先级还原为初始设置。
图2可以是根据权利要求的方法的高级说明。在方框200处,用户可以使用用户界面来设置要延迟的某个应用程序。在方框205处,该方法可以存储所
选应用程序被存储在存储器中。在方框210处,操作系统可以开始。在方框215 处,该方法可以运行启动应用程序。在方框220处,该方法可以判定特定应用 程序是否在方框210处被存储为要被延迟的进程。如果该判定为否,则在方框 225处,该方法可以正常运行且该方法结束。如果方框220处的判定为是,则 该方法可以挂起用于特定应用程序230的创建进程。在方框235处,该方法可 以将要被延迟的特定应用程序添加到作业容器对象。在方框240处,该方法可 以降低用于特定应用程序的进程优先级,且该方法可以限制一工作集。在方框 245处,可以启动一计时器,并且在方框250处,该计时器会期满。在方框255 处,可以还原特定应用程序的优先级,且该方法可以解除对工作集的限制。
在一实施例中,系统注册表中的受保护项包含允许基于每个图象路径来打 开或关闭装箱的例外列表。例如,未列在该例外列表上的所有应用程序可被装 箱或置于容器对象中。
操作系统需要跟踪被装箱的初始和派生进程。例如,如果一启动应用程序 被装箱,且给定应用程序进程运行了一子进程,该子进程也应被装箱,且当父 (初始)进程被解除装箱时,该子进程也应被解除装箱。在Microsoft Windows 中,可使用作业(Job)对象来完成此任务。
如果该方法可以在启动应用程序应被解除装箱前防止它们重新提升其优 先级(这将大大地减少该方法的好处),那么该方法将是最有效的。在Microsoft Windows中,可以使用作业对象来对进程施加进程无法逃避的优先级约束,除 非作业对象(即箱,且因此为操作系统)的初始创建者主动决定撤销约束,如 在对给定应用程序解除装箱时。
该方法可以使用系统注册表来存储关于如果进程(通过其可执行图象文件 的名称)运行为启动应用程序那么它是否应被装箱的每个图象文件名称设置。 在Windows系统中,需要特别关注可以执行许多不同特征的如"rundll32.exe" 的通用机制,且因此,如果存在与对"rundll32.exe"的普遍约束相比对这些特征 的更精细粒度的控制,就可以最佳地反映用户的意图。该方法可能需要对项进 行访问控制限制("ACL"),从而普通启动应用程序将不能修改该项中的其自 已的设置。一旦该方法运行了所有启动应用程序,该方法可以在某个可配置超时(如 30秒)之后设置箱对象以释放作业(即从对进程的约束中释放进程且还原其优 先级)。
该方法还可以与操作系统的其他部分有联系以便检测用户是否正与装箱 的应用程序交互,且使用该信息来在该应用程序的装箱超时期满之前解除对给 定应用程序的装箱。这不仅允许操作系统减少通常情况下的不想要启动应用程 序成本,而且也允许操作系统动态地检测应用程序何时变为用户想要的,此时 优先级约束对用户就系统的体验是不利的。为这些应用程序检测用户活动的方 法应该防止应用程序的哄骗活动,因为这些活动将破坏该方法的有效性。也可 以将启动应用程序正被交互地使用的知识保留为历史数据,且可使用这些数据 来防止其在将来被装箱,这或许可以改善用户的体验。确定用户何时正与启动 应用程序交互的一个简单示例方法就是重复地检查是否有任何启动应用程序 的窗口变为前景窗口,且鼠标光标是否位于该窗口内。
图3示出根据权利要求书的方法的另一实施例。在方框300处,该方法可 以允许对进程的优先级类、I/O优先级、优先级页面、工作集和网络能力中的 一个分配优先级。在方框305处,该方法可以将进程置于一作业对象中,从而 可以跟踪该进程和从属进程。在方框310处,该方法可以允许优先级在启动时 被调低,且在方框315处,该方法可以允许优先级在启动之后的延迟时段之后 被调高。在方框320处,该方法可以允许优先级在高度使用期间被调低。在方 框325处,在高度使用期间之后,该方法可以允许优先级被调高。在方框330 处,该方法可以创建所有启动应用程序都将加入的会话范围作业对象。在方框 335处,该方法可以将进程装箱为组且不允许单个进程被单独解除装箱。在方 框340处,该方法可以使用线程级存储器来向系统传递装箱被请求的信息。这 可通过创建"运行启动应用程序线程(Run Startup Apps Thread)"中的(Cbox) 对象以及保留指向邻接的(Cbox)的线程级存储器指针来完成。在方框345处, 该方法可以使用修改的API栈来向系统传递装箱被请求的信息。在方框350处, 该方法可以在进程创建时从线程级存储发出(Cbox)对象,并确定是否要对进 程装箱或不装箱。在方框355处,该方法可以使用作为引用计数的指针。在方 框360处,该方法可以将引用计数器递增到由线程级存储槽所指向的箱对象。在方框365处,该方法可以设置成在可设置时间段之后从箱对象中释放作业。
在方框370中,该方法可以使用注册表来存储关于如果图象作为启动应用程序 运行的,则它是否应被装箱的每个图象查看器设置。在方框375处,该方法可 以使注册表项受访问控制列表的管辖,从而通用的启动应用程序就不能修改该 项中其自己的设置。在方框375中,在运行进程时,该方法可以将该进程置于 约束作业对象中,使得装箱的应用程序就不能打破优先级设置,在作业对象被 破坏之前与作业的关联不能被打破,并且由作业对象设置的约束也不能被装箱 进程重写。在方框380处,该方法可以创建控制I/0和页面优先级限制的作业 对象限制结构。
虽然前述文本阐明了许多不同实施例的详细描述,但是应当理解,本专利 的范围是由本专利所附的权利要书的文字来定义的。本详细描述应仅被理解为 示例性的,且不描述全部可能实施例,因为描述全部可能实施例是不实际的(如 果不是不可能的话)。可以使用现有技术或本专利申请日后开发的技术来实现 许多替换实施例,它们仍落入本权利要求书的范围。
因此,可以对此处所描述和示出的技术和结构作出许多修改和变更,而不 脱离本权利要求书的精神和范围。因此,应当理解,此处所描述的方法和装置 仅是说明性的,且并不是对本权利要求书的范围的限制。
权利要求
1.一种管理系统优先级的方法,包括允许对进程的CPU(处理器)优先级类、I/O优先级、存储器页面优先级、存储器工作集、网络能力中的至少一个分配优先级;将所述进程置于一容器对象中,以便可以跟踪所述进程和从属进程;允许所述优先级在应用程序启动时被调低;允许所述优先级在启动之后的延迟时段之后被调高。
2. 如权利要求1所述的方法,其特征在于,还包括允许所述优先级在高 度使用时段期间被调低。
3. 如权利要求l所述的方法,其特征在于,还包括在高度使用时段之后, 允许所述优先级被调高。
4. 如权利要求1所述的方法,其特征在于,还包括创建所有启动应用程 序都将加入的会话范围容器对象。
5. 如权利要求1所述的方法,其特征在于,还包括将进程添加到所述容 器对象中作为一组。
6. 如权利要求1所述的方法,其特征在于,还包括设置成在可配置时段 之后从所述容器对象释放所述进程。
7. 如权利要求1所述的方法,其特征在于,还包括检测用户与所述容器 对象中的进程的交互、以及动态地移除其约束、和/或使用历史信息来防止它们 在将来被置于所述容器对象中。
8. 如权利要求1所述的方法,其特征在于,还包括使用所述注册表来存 储关于如果给定进程作为启动应用程序运行则它是否应被置于所述容器对象 中的每个图像文件名称设置。
9. 如权利要求1所述的方法,其特征在于,还包括使所述注册表项受一 访问控制列表的管辖,从而通用启动应用程序将不能修改所述项中其自己的设 置。
10. 如权利要求l所述的方法,其特征在于,还包括当运行所述进程时, 将所述进程置于一约束容器对象中,使得所述容器对象中的所述应用程序不能打破所述优先级设置; 在所述容器对象被破坏之前,与一进程的关联不能被打破;以及由所述容器对象设置的所述约束不能被所述容器对象中的所述进程重写。
11. 如权利要求l所述的方法,其特征在于,还包括创建控制I/O和页面优先级限制的作业对象限制结构。
12. —种包括用于管理系统优先级的计算机可执行指令的计算机可读介 质,包括用于以下各项的计算机可执行指令允许对进程的CPU优先级类、1/0优先级、存储器页面优先级、存储器工 作集、网络能力中的至少一个分配优先级;将所述进程置于所有启动应用程序都将加入的某一容器对象中,以便可以 跟踪所述进程和从属进程;允许所述优先级在启动时被调低;允许所述优先级在启动之后的延迟时段之后被调高。
13. 如权利要求12所述的计算机可读介质,其特征在于,还包括用于以 下各项中至少之一的计算机可执行指令允许所述优先级在高度使用时段期间被调低; 在所述高度使用时段之后,允许所述优先级被调高; 创建所有启动应用程序都将加入的会话范围容器对象; 将进程添加到所述容器中作为一组;以及设置成在一可配置时段之后,从所述容器对象中释放所述进程。
14. 如权利要求12所述的计算机可读介质,其特征在于,还包括用于检 测用户与所述容器对象中的进程的交互,以及动态地移除其约束,和/或使用历 史信息来防止它们在将来被置于所述容器对象中的计算机可执行指令。
15. 如权利要求12所述的计算机可读介质,其特征在于,还包括用于使 用所述注册表来存储关于如果所述进程是作为启动应用程序运行的则所它是 否应被置于所述容器对象中的每个图象文件名称设置的计算机可执行指令。
16. 如权利要求12所述的计算机可读介质,其特征在于,还包括用于使 所述注册表项受一访问控制列表的管辖从而通用启动应用程序将不能修改所 述项中其自己的设置的计算机可执行指令。
17. 如权利要求12所述的计算机可读介质,其特征在于,还包括用于在 运行所述进程时,将所述进程置于一约束作业对象中的计算机可执行指令,使 得所述容器对象中的所述应用程序不能打破所述优先级设置; 在所述容器对象被破坏之前,与一进程的关联不能被打破;以及 由所述容器对象设置的所述约束不能被所述容器对象中的所述进程重写。
18. 如权利要求12所述的计算机可读介质,其特征在于,还包括用于创 建控制I/O和页面优先级限制的进程对象限制结构的计算机可执行指令。
19. 一种计算机系统,包括处理器、存储器以及输入/输出设备,所述处 理器适于执行包括用于以下各项的指令的指令允许对进程的CPU优先级类、1/0优先级、存储器页面优先级、存储器工 作集、网络能力中的至少一个分配优先级;将所述进程置于所有启动应用程序都将加入的容器对象中,以便可以跟踪 所述进程和从属进程;允许所述优先级在启动时被调低;允许所述优先级在启动之后的延迟时段之后被调高。
20. 如权利要求19所述的计算机系统,其特征在于,还包括在运行所述 进程时将所述进程置于一约束作业对象中的指令,使得所述容器对象中的所述应用程序不能打破所述优先级设置; 在所述进程对象被破坏之前,与进程的关联不能被打破;以及 由所述容器对象设置的所述约束不能被所述容器对象中的所述进程重写。
全文摘要
某些应用程序的启动延迟可以导致系统总体性能的改善。被延迟的应用程序可被置于容器对象或箱中,从而可以追踪它们且可以适当地处理依赖于该延迟应用程序的其他应用程序。
文档编号G06F17/00GK101317171SQ200680044759
公开日2008年12月3日 申请日期2006年11月29日 优先权日2005年11月30日
发明者C·厄冈, D·李, M·R·福特恩, R·L·莱伊诺尔, R·杰斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1