CN102902582B - 挂起状态和执行状态中的管理进程 - Google Patents
挂起状态和执行状态中的管理进程 Download PDFInfo
- Publication number
- CN102902582B CN102902582B CN201210335484.6A CN201210335484A CN102902582B CN 102902582 B CN102902582 B CN 102902582B CN 201210335484 A CN201210335484 A CN 201210335484A CN 102902582 B CN102902582 B CN 102902582B
- Authority
- CN
- China
- Prior art keywords
- application
- hung
- strategy
- wake
- state
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Telephone Function (AREA)
- Power Sources (AREA)
Abstract
提供了一个或者更多个技术和/或系统,用于挂起与应用相关联的逻辑上相关的进程,基于一个或者更多个唤醒策略来确定是否恢复已挂起的进程,和/或管理应用的应用状态,诸如定时器和/或系统消息数据。也就是说,基于进程之间的逻辑关系,与应用相关联的逻辑上相关的进程(诸如子进程)可以被标识和挂起(例如,逻辑容器层次结构可以被遍历以标识逻辑上相关的进程)。基于唤醒策略的集合,已挂起的进程可以被恢复。例如,可以基于可以由尝试与已挂起的进程通信的应用触发的进程间通信调用策略来恢复已挂起的进程。在应用被挂起时应用数据可以被管理,从而应用可以在当前和/或相关状态下被恢复。
Description
技术领域
本申请涉及计算机应用技术。
背景技术
围绕着节省功率消耗、改进装置和应用启动延迟以及改进整体响应性,开发了诸如桌上型计算机、膝上型计算机、智能电话和平板计算机这样的很多计算装置。例如,当装置在诸如十分钟这样的一段时间不被使用时,装置可以被置于睡眠状态,这样可以显著减少应用活动性,因而可以得到改进的功率消耗。当用户随后尝试使用该装置时,该装置被从这种睡眠状态唤醒以向用户提供装置的完全能力。
发明内容
发明内容是为了以简化形式引入概念的选择并且在以下具体实施方式中进一步描述。发明内容不旨在标识要求保护的主题的关健要素或者必要特征,也不旨在用于限制要求保护主题的范围。
此处特别公开了用于挂起与应用相关联的一个或者更多个进程、基于一个或者更多个唤醒策略确定是否恢复已挂起的进程以及管理应用的应用状态的一个或者更多个系统和/或技术。
计算环境可以托管(host)与进程相关联的应用,这些进程可以作为线程被一个或者更多个处理器执行。应理解的是此处描述的一个或者更多个系统和/或方法可以应用于应用、进程和/或线程(例如,由于进程是由在一个或者更多个处理器上运行代码的线程组成,此处提到的技术和/或系统等同地应用于线程)。因为所述计算环境可以托管多个应用和/或进程,所以逻辑容器层次结构可以被实现以管理这些应用和/或进程。具体地,应用可以被指派到逻辑容器层次结构内的逻辑容器,诸如根逻辑容器。类似地,进程可以被指派到逻辑容器。逻辑容器层次结构可以允许相关的应用、进程和/或逻辑容器的分层次嵌套。例如,文本编辑器应用(例如,父应用/进程)可以被指派到根逻辑容器。文本编辑器应用可以与一个或者更多个子进程(诸如文本编辑器打印进程、文本编辑器保存进程和/或拼写检查器进程)相关联。因此,文本编辑器打印进程、文本编辑器保存进程和/或拼写检查器进程例如可以被指派到与被指派到文本编辑器应用的根逻辑容器相关联(例如,嵌套在其中)的逻辑容器。按此方式,文本编辑器应用和/或子进程之间的关联(例如,关系)可以是可标识的。
在如此处提供的挂起与应用相关联的一个或者更多个进程的一个示例中,应用不活动的通知可以被接收到(例如,该应用可以对用户不可见,用户在预定时间内可能没有与该应用交互,应用可能在后台状态等)。与该应用相关联的一个或者更多个进程可以被标识。在一个示例中,逻辑容器层次结构可以被咨询以标识一个或者更多个进程。例如,被指派到应用的根逻辑容器可以被标识。被指派到与根逻辑容器相关联(例如,嵌套在其中)的第一逻辑容器的第一进程可以被标识。被指派到与根逻辑容器相关联(例如,嵌套在其中)的第一逻辑容器的第二进程可以被标识。被指派到与第一逻辑容器相关联(例如,嵌套在其中)的第二逻辑容器的第三进程可以被标识。按此方式,第一、第二和第三进程可以被标识为与该应用相关联。应理解的是多个进程和/或应用可以被标识为与该应用相关联。通过使已挂起的进程对处理器执行调度不可见,与应用相关联的该一个或者更多个进程可以被置于挂起状态以节省功率消耗。当被挂起时,与已挂起的应用相关联的新创建的线程和/或进程(例如,被指派到嵌套在根逻辑容器内的逻辑容器的新创建的进程)可以被挂起以维持与已挂起的应用相关联的进程上的挂起一致性。按此方式,当前与应用相关联的进程和/或新创建的进程可以被标识为与应用相关联,并且可以被相应地挂起。可以理解的是如此处提供的一个或者更多个进程的挂起可以发生在装置处于或者不处于睡眠模式、但是此时一个或者更多个应用不活动或者不被使用时。因而,即使当装置在使用时,也可以节省功率和/或延长电池寿命。
在如此处提供的确定是否恢复已挂起的进程的一个示例中,与已挂起的进程相关联的唤醒策略的集合可以被维持。唤醒策略可以指示恢复已挂起的进程到执行状态的原因。在一个示例中,唤醒策略可以对应于请求的应用向已挂起的进程发送进程间通信调用的情形。在另一个示例中,唤醒策略可以对应于与已挂起的进程相关联的已挂起的应用被转换为前台状态的情形。在另一个示例中,唤醒策略可以对应于与已挂起的应用相关联的用户输入被检测到的情形。可以理解的是唤醒策略可以对应于唤醒已挂起的进程的多个情形和/或原因。唤醒策略可以与指示与唤醒策略相关联的、针对已挂起的进程的当前未决的唤醒通知的数量的计数器相关联(例如,与唤醒策略相关联的事件已经发生的通知,诸如请求应用向已挂起的进程发送进程间通信)。计数器可以递增(例如,与唤醒通知相关联的事件可以是未决的)和/或递减(例如,与唤醒通知相关联的事件可以已完成)。例如,当接收到电子表格应用向已挂起的文本编辑器发送进程间通信调用的第一唤醒通知时,针对进程间通信唤醒策略的计数器可以被递增到1。当接收到浏览器应用向已挂起的文本编辑器发送进程间通信调用的第二唤醒通知时,针对进程间通信唤醒策略的计数器可以被递增到2。
唤醒策略的集合可以被评估以确定是否将已挂起的进程置于执行状态或者将已挂起的进程保持在挂起状态。在一个示例中,基于确定与唤醒策略相关联的至少一个计数器包括门限值以上的值(例如,至少一个计数器具有2以上的值),已挂起的进程可以被置于执行状态。在另一个示例中,一个或者更多个计数器的值可以被聚集到一起以创建聚集值(例如,与各个唤醒策略相关联的三个计数器可以具有值1,因而聚集值3可以被确定)。可以基于与唤醒策略相关联的加权调整聚集值(例如,与用户输入相关联的唤醒策略可以接收加权值2,而与远程第三方请求相关联的唤醒策略可以接收加权值5,因为与远程第三方相反,其可以更有利地对用户积极地做出响应)。类似地,特定计数器可以被无条件地观察(例如,用户计数器),而另一个计数器可以被有条件地观察(例如,基于频率、噪声、来源等)。如果已挂起的进程被置于执行状态作为在执行的应用,则在确定是否和/或何时将在执行的进程置回于挂起状态中时,唤醒策略的当前状态和/或自从唤醒通知完成所经历的时间可以被评估。例如,在附加的进程间通信调用被执行的情况下,在执行的进程可以被保持在执行状态一段时间。作为优化,针对具体计数器,可以基于“边沿”转换(0 -> 1, 1 -> 0)传递通知。在第一个情况下,用于执行的策略被评估并且在第二个情况下,用于挂起的策略被评估。
可以理解的是在一个示例中,唤醒策略的集合可以与逻辑容器层次结构中被指派到已挂起的进程的逻辑容器相关联。因此,如果已挂起的进程被置于执行状态,则与该已挂起的进程相关联的一个或者更多个进程和/或应用(例如,被指派到与被指派到已挂起的进程的逻辑容器相关联的逻辑容器的进程)可以被置于执行状态。
在如此处提供的管理应用状态的一个示例中,与应用相关联的定时器的列表可以被维持。例如,绝对定时器(例如,2:00 PM 8/31/11的超时设置)、相对定时器(例如,10分钟的超时设置)和/或其它类型的定时器可以被维持。当接收到应用要被挂起的通知时,包括从定时器的列表导出的定时器重建基底(rebasing)数据的应用状态可以被创建。应用状态可以被创建,因为在应用被挂起时,即使定时器的潜在的原因没有发生,特定定时器(诸如相对定时器)可超时。例如,文本编辑器应用可以设定针对拼写检查器进程的10分钟的相对定时器,因为拼写检查器进程一般不占用超过10分钟的时间来完成除非发生了错误。然而,拼写检查器进程可以在创建相对定时器2分钟之后被挂起,并且可以挂起达15分钟。不调整相对定时器,相对定时器可超时(例如,超时可能不正确,因为超时不涉及拼写检查器的错误,而仅仅是拼写检查器的挂起)。因为拼写检查器没有错误,而仅仅是被挂起,所以可以使用应用状态内(例如,应用状态可以包括相对定时器重建基底数据,该数据包括距过期时间值,其指示从相对定时器被挂起到相对定时器的初始过期时间的时间跨度)的相对定时器重建基底数据(诸如距过期时间值)将相对定时器重建基底(rebase)。另外,相对定时器可以被调整从而当已挂起的应用恢复时,不发生大量的定时器过期,否则可能造成不必要的CPU消耗和/或可能有损于用户体验。相反地,绝对定时器可以与绝对时间相关联(例如,初始过期时间),从而当绝对时间发生时应用可以期望被通知,无论与该定时器相关联的应用是否被挂起。因此,可以使用在应用状态内(例如,应用状态可以包括包含初始过期时间的绝对定时器重建基底数据)的绝对定时器重建基底数据(诸如初始过期时间)来对绝对定时器重建基底。按此方式,包括定时器重建基底数据的应用状态可以被用于当将应用从挂起状态恢复回执行状态时对定时器重建基底。
在如此处提供的管理应用状态的另一个示例中,在应用处于挂起状态时与应用相关联的应用消息队列可以被维持。应用消息队列可以被配置以存储针对该应用的系统消息(例如,与控制面板内的设置相关联的系统消息)。例如,平板计算机装置的操作系统可以将针对文本编辑器的系统消息排队,诸如用户界面颜色 = 绿色系统消息、语言 = 英语系统消息、平板计算机观看方位 = 纵向系统消息等。在应用被挂起时,应用消息队列可以接收和/或存储系统消息。因为随着时间可能接收到重叠的消息,其可能使当前排队的消息不相关(例如,在被挂起时,可以接收到平板计算机观看方位被设定为纵向的第一消息,之后可以接收到平板计算机观看方向被设定为横向的第二消息,这可以使第一消息不相关),管理应用消息队列使得在当前最新应用状态下应用可被置于执行状态可以是有利的。因此,在应用处于挂起状态时指向应用队列的第一系统消息可以被接收。可以关于第一系统消息是否对应于应用消息队列内的第二系统消息做出确定。当确定第一系统消息对应于第二系统消息时,第一系统消息和/或第二系统消息可以被修改和/或删除(例如,用户界面颜色 = 绿色的新接收的第一系统消息可以被置于应用消息队列中,而用户界面颜色 = 红色的已经排队的第二系统消息可以被删除)。按此方式,当将应用恢复到执行状态时,应用可以处理来自应用消息队列的相关的系统消息,与“陈腐”和/或不相关的系统消息相反。管理应用消息队列可以具有附加的正性能影响,原因在于当目标进程是不可运行/可执行时,冗余的消息并非不必要消耗系统资源(例如,新消息可以被丢弃/删除,老的对应的消息可以被丢弃/删除而新消息可以被保持,消息可以被智能地合并等)。
为了上述和相关目的的实现,以下描述和附图阐述特定示例性方面和实现方式。这些表示一个或者更多个方面可以被采用的各种方式中的仅一些方式,当结合附图考虑时,本公开的其它方面、优点和新颖特征从以下详细描述中将变得明显。
附图说明
图1是例示用于挂起与应用相关联的一个或者更多个进程的示例性方法的流程图。
图2是例示用于挂起与应用相关联的一个或者更多个进程的示例性方法的流程图。
图3是例示用于挂起与应用相关联的一个或者更多个进程的示例性系统的组成框图。
图4是例示用于基于唤醒策略的集合确定是否恢复已挂起的进程的示例性方法的流程图。
图5是例示用于基于唤醒策略的集合确定是否恢复已挂起的进程的示例性方法的流程图。
图6是例示用于基于唤醒策略确定是否恢复已挂起的进程的示例性系统的组成框图。
图7是例示用于管理应用的应用状态的示例性方法的流程图。
图8是例示用于管理应用的应用状态的示例性方法的流程图。
图9是例示用于管理应用的应用状态的示例性系统的组成框图。
图10是例示用于管理应用的应用状态的示例性系统的组成框图。
图11是可以包括被配置为实现此处阐述的一个或者更多个指配(provision)的处理器可执行指令的示例性计算机可读介质的图示。
图12例示了可以实现此处阐述的一个或者更多个指配的示例性计算环境。
具体实施方式
现在参照附图描述要求保护的主题,其中在整个说明书一般使用类似的附图标记指代类似元件。在以下描述中,为了说明,阐述了众多具体细节,以提供对要求保护的主题的彻底理解。然而,可能明显的是可以实现要求保护的主题而不用这些具体细节。在其它例子中,以框图形式例示了结构和装置,以促进描述要求保护的主题。
此处提供了用于挂起与应用相关联的一个或者更多个进程、基于一个或者更多个唤醒策略确定是否恢复已挂起的进程以及管理应用的应用状态的一个或者更多个系统和/或技术。具体地,与应用相关联的一个或者更多个进程可以被挂起(例如,与应用相关联的进程可以被基于逻辑容器层次结构标识,并且可以被作为组挂起)。可以基于维持指示将已挂起的进程恢复到执行状态的原因的唤醒策略的集合,来恢复已挂起的进程(例如,如果接收了从请求应用到挂起进程的门限数量的进程间通信调用,则已挂起的进程可以被置于执行状态以处理该进程间通信调用)。在应用的挂起期间,可以从与已挂起的应用相关联的定时器导出应用状态,从而当将已挂起的应用恢复为执行状态时,可以利用该应用状态使定时器重建基底(rebased)。另外,在应用被挂起时应用消息队列可以被管理,从而不相关的和/或陈腐的消息可以被修改和/或被从应用队列去除。按此方式,当进入执行状态时,应用可以处理相关系统消息使得应用可以被置于当前应用状态。
通过图1中的示例性方法100例示了挂起与应用相关联的一个或者更多个进程的一个实施方式。在102,此方法开始。在104,可以接收到应用不活动的通知(例如,该应用可以转换为后台状态,应用可以对于用户不可见(例如,在监视器上被置于前台的不同的应用之后),用户可能一段时间没有与应用交互等)。在106,与该应用相关联的一个或者更多个进程可以被标识。在一个示例中,逻辑容器层次结构(例如,图3的逻辑容器层次结构308)可以被咨询以确定哪些进程与该应用相关联。例如,该应用可以被指派到逻辑容器层次结构内的根逻辑容器,并且与该应用相关联的进程可以被指派到与根逻辑容器相关联(例如,嵌套在根逻辑容器内)的逻辑容器。
在标识一个或者更多个进程的一个示例中,基于第一进程被指派到与根逻辑容器相关联(例如,嵌套在之内)的第一逻辑容器的确定,第一进程可以被确定为与该应用相关联(例如,第一进程可以是该应用的直接子进程)。在另一个示例中,基于第二进程被指派到与根逻辑容器相关联的第一逻辑容器的确定,第二进程可以被确定为与该应用相关联(例如,第二进程可以是该应用的直接子进程)。在另一个示例中,基于第二进程被指派到与第一逻辑容器相关联的第二逻辑容器的确定,第二进程可以被确定为与该应用相关联(例如,第二进程可以是第一进程的直接子进程和/或应用的间接子进程)。按此方式,与该应用相关联的一个或者更多个进程可以被确定。
在108,该一个或者更多个进程可以被置于挂起状态。例如,已挂起的进程可以被标记为无资格用于处理器执行,使得包括已挂起的进程的线程可以不被线程调度器认为是用于执行的候选。在一个示例中,该应用和/或与该一个或者更多个进程相关联的其它应用可以被通知挂起,可以向这些应用提供保存状态信息的机会(例如,社交网络应用可以保存与用户观看的当前简档相关联的状态信息,从而当恢复时,社交网络应用可以向用户呈现当前简档)。与已挂起的进程相关联的存储器内容可以被保存到存储装置作为保存的存储器内容。按此方式,保存的存储器内容可以被返回到存储器,这可以允许已挂起的进程迅速恢复执行。
可以理解的是新创建的进程(例如,在该一个或者更多个进程被挂起之后创建的进程)可以基于新创建的进程与已挂起的进程中的一个或者更多个和/或不活动的应用相关联的确定而被置于挂起状态。例如,基于新创建的进程被指派到与不活动的应用的根逻辑容器相关联的逻辑容器的确定,新创建的进程可以被确定为与不活动的应用相关联。按此方式,新创建的进程可以被置于挂起状态。在110,方法结束。
通过图2中的示例性方法200例示了挂起与应用相关联的一个或者更多个进程的一个实施方式。在202,方法开始。在204,可以接收到应用不活动的通知。在206,逻辑容器层次结构可以被迭代地遍历以标识与该应用相关联的一个或者更多个进程。在一个示例中,被指派到应用的根逻辑容器可以在逻辑容器层次结构中被标识。基于确定第一进程被指派到与根逻辑容器相关联(例如,嵌套在其中)的第一逻辑容器,第一进程可以被确定为与该应用相关联。在另一个示例中,基于确定第二进程被指派到与根逻辑容器相关联的第一逻辑容器,第二进程可以被确定为与该应用相关联(例如,第二进程可以是该应用的直接子进程)。在另一个示例中,基于确定第二进程被指派到与第一逻辑容器相关联的第二逻辑容器,第二进程可以被确定为与该应用相关联(例如,第二进程可以是第一进程的直接子进程和/或该应用的间接子进程)。按此方式,与该应用相关联的一个或者更多个进程可以被标识。在208,该一个或者更多个进程可以被置于挂起状态。按此方式,与不活动的应用相关联的进程和/或新创建的进程可以被挂起。在210,方法结束。
图3例示了被配置成挂起与应用相关联的一个或者更多个进程的系统300的示例。系统300可以包括挂起部件322。挂起部件322可以被配置成接收应用不活动的通知。例如,文本编辑器应用302和电子表格应用304可以在计算环境中托管(hosted)。用户可以从文本编辑器应用302切换到电子表格应用304,这可以导致文本编辑器应用302被转换到后台状态。按此方式,挂起部件322可以接收到文本编辑器不活动通知306。
挂起部件322可以被配置成迭代地遍历逻辑容器层次结构308以标识与该应用相关联的一个或者更多个进程。在一个示例中,文本编辑器应用302可以与被指派到文本编辑器根逻辑容器310的文本编辑器进程312相关联。在执行时,文本编辑器应用302可以已经创建了一个或者更多个子进程,诸如文本编辑器打印进程314和/或文本编辑器保存进程316,这些子进程可以已经被指派到文本编辑器根逻辑容器310。另外,文本编辑器应用302可以已经调用与被指派到拼写检查器逻辑容器318的拼写检查器进程320相关联的拼写检查功能。拼写检查器逻辑容器318可以嵌入在文本编辑器根逻辑容器310内,因为拼写检查器进程320可以与文本编辑器应用302相关联。因此,基于遍历逻辑容器层次结构308,挂起部件322可以确定文本编辑器打印进程314、文本编辑器保存进程316和/或拼写检查器进程320可以与文本编辑器应用302相关联。按此方式,基于文本编辑器应用302不活动,挂起部件322可以挂起324文本编辑器进程312、文本编辑器打印进程314、文本编辑器保存进程316、拼写检查器进程320和/或与文本编辑器应用302相关联的新创建的进程,这就可以导致改进的功率消耗,因为这些进程和/或应用可能无资格消耗处理器执行资源和/或其它功率消耗资源。
在图4中的示例性方法400例示了基于唤醒策略的集合确定是否恢复已挂起的进程的一个实施方式。在402,方法开始。在404,与已挂起的进程相关联的唤醒策略的集合可以被维持。唤醒策略可以指示将已挂起的进程恢复到执行状态的原因。在一个示例中,唤醒策略可以对应于来自请求应用对已挂起的进程的进程间通信调用(例如,电子表格应用可以尝试请求从文本编辑器应用“剪切”文本以满足“粘贴”操作;演示应用可以包括“粘贴的”文本对象,其功能和/或数据可以由文本编辑器应用提供等)。在另一个示例中,唤醒策略可以对应于与已挂起的应用相关联的用户输入(例如,用户可以尝试与已挂起的文本编辑器应用交互)。在另一个示例中,部件(例如,硬件部件、软件部件、远程第三方部件、网络部件等)可以请求访问已挂起的进程。在另一个示例中,唤醒策略可以对应于与已挂起的进程相关联的已挂起的应用从后台状态向前台状态的转换。按此方式,唤醒策略的集合可以包括与用于恢复已挂起的进程的各个事件/原因相关联的多个唤醒策略。
计数器可以与唤醒策略相关联。计数器可以指示与唤醒策略相关联的针对已挂起的进程的当前未决的唤醒通知的数量(例如,唤醒策略规定的事件/原因的例子)。唤醒通知可以是唤醒策略规定的事件/原因的通知,诸如进程间通信调用的通知。计数器可以递增(例如,与唤醒通知相关联的事件可以是未决的)和/或递减(例如,与唤醒通知相关联的事件可以是已完成)。可以理解的是各个唤醒策略和对应的计数器可以被维持在唤醒策略的集合内。例如,当接收到用户尝试与已挂起的文本编辑器交互的第一唤醒通知时,针对用户输入唤醒策略的第一计数器可以递增到1。当接收到用户进行第二次尝试与已挂起的文本编辑器交互的第二唤醒通知时,针对用户输入唤醒策略的第一计数器可以递增到2。当接收到电子表格应用尝试与已挂起的文本编辑器通信的第三唤醒通知时,针对进程间通信唤醒策略的第二计数器可以被递增到1。依据电子表格应用不再期望与已挂起的文本编辑器通信的通知(例如,用户关闭电子表格应用),第二计数器可以被递减到0。按此方式,与唤醒策略集合内的唤醒策略相关联的计数器可以被维持。
在一个示例中,基于计数器如何根据进程的执行/挂起状态而转换,唤醒通知可以被过滤(例如,忽略、删除和/或被抑制而不被发出)。在一个示例中,当确定进程处于执行状态时,将计数器从值0转换到值1的唤醒通知可以被过滤(例如,可以触发用于将已在执行的进程置于执行状态的唤醒策略的唤醒通知可以被过滤,因为在执行的进程已在执行)。在另一个示例中,当确定进程处于挂起状态时,将计数器从值1转换到值0的唤醒通知可以被过滤(例如,可以触发用于将已挂起的进程置于挂起状态的唤醒策略的唤醒通知可以被过滤,因为已挂起的进程已被挂起)。
在406,与已挂起的进程相关联的唤醒策略集合可以被评估以确定是否将已挂起的进程置于执行状态或者将已挂起的进程保持在挂起状态。在一个示例中,基于确定与唤醒策略相关联的至少一个计数器包括门限值以上的值(例如,至少一个计数器具有大于0的值),已挂起的进程可以被置于执行状态。如果没有计数器包括门限值以上的值,则已挂起的进程可以被保持在挂起状态。在另一个示例中,一个或者更多个计数器的值可以被聚集到一起以产生聚集值。例如,可以基于具有值2的与用户输入唤醒策略相关联的第一计数器h和具有值2的与远程第三方进程间通信调用唤醒策略相关联的第二计数器确定聚集值4。可以基于与唤醒策略相关联的加权来调整聚集值4。例如,用户输入唤醒策略可以具有加权值4(例如,基于使用2x加权修改因数到值2),因为可以期望作为对用户输入的响应,恢复/唤醒已挂起的进程,从而与已挂起的进程相关联的应用对用户有高响应性。远程第三方进程间通信策略可以具有加权值1(例如,基于应用.5x加权修改因数到值2),因为可以期望减缓对远程第三方的响应性(所述远程第三方由于非关健和/或非期望原因而可能尝试与已挂起的进程“带噪音地”通信)。基于确定聚集值是否是门限值以上(例如,聚集值5可以在门限值3以上),已挂起的进程可以被置于执行状态。
可以理解的是在一个示例中,唤醒策略的集合可以与逻辑容器层次结构中被指派到已挂起的进程的逻辑容器相关联。因此,如果已挂起的进程被置于执行状态,则与该已挂起的进程相关联的一个或者更多个进程和/或应用可以被置于执行状态。例如,文本编辑器进程可以被置于执行状态。文本编辑器进程可以被指派到文本编辑器根逻辑容器。基于确定拼写检查器进程被指派到与文本编辑器根逻辑容器相关联(例如,嵌套在其中)的逻辑容器,拼写检查器进程也可以被置于执行状态。按此方式,一个或者更多个相关进程可以被恢复到执行状态。在一个示例中,所保存的与恢复的进程相关联的存储器内容可以被复原到存储器中,使得这些进程可以以灵敏方式及时恢复执行,同时仍然节省功率。
当被作为执行进程置于执行状态时,可以确定有关是否和/或何时将在执行的进程返回到挂起状态。在一个示例中,唤醒策略集合的当前状态可以被评估(例如,如果计数器值和/或计数器值的聚集值不在门限值以上,则在执行的进程可以被置回于挂起状态)。在另一个示例中,从造成在执行的进程被置于执行状态的唤醒通知完成后所经历的时间可以被评估。例如,演示应用可以包括“粘贴的”文本对象,其功能和/或数据可以由已挂起的文本编辑器应用提供。可以从演示应用向已挂起的文本编辑器应用就“粘贴的”文本对象进行进程间通信调用。通信调用的唤醒通知可以被接收,并且已挂起的文本编辑器应用可以被置于执行状态以满足进程间通信调用。允许文本编辑器应用保留在执行状态达一定的时间段可以是有利的(例如,与将文本编辑器应用立即置回于挂起状态相反),因为演示应用可以就“粘贴的”文本对象对文本编辑器应用进行随后的进程间通信调用。在408,方法结束。
在图5中的示例性方法500例示了基于唤醒策略的集合确定是否恢复已挂起的进程的一个实施方式。在502,方法开始。在504,与逻辑容器层次结构内的被指派到已挂起的进程的逻辑容器相关联的唤醒策略可以被维持。唤醒策略可以指示将已挂起的进程恢复到执行状态的原因。唤醒策略可以包括指示与针对已挂起的进程的当前未决的唤醒策略相关联的唤醒通知的数量的计数器。唤醒通知可以是唤醒策略规定的用于恢复已挂起的进程的事件/原因的通知,诸如进程间通信调用的通知。基于接收与唤醒策略相关联的唤醒通知,计数器可以递增(例如,基于接收到指示用户尝试与和已挂起的进程相关联的已挂起的应用交互的唤醒通知,与用户输入唤醒策略相关联的计数器可以递增)。基于接收到唤醒通知不是当前未决的通知,计数器可以递减(例如,基于用户注销托管已挂起的应用的计算装置的通知,计数器可以递减)。
在一个示例中,在506,当确定计数器的值在门限以上时,已挂起的进程可以被置于执行状态。在一个示例中,基于确定一个或者更多个附加的已挂起进程被指派到与已挂起的进程的逻辑容器相关联(例如,嵌套在其中)的逻辑容器时,逻辑容器层次结构可以被遍历以标识与已挂起的进程相关联的一个或者更多个附加的已挂起进程。按此方式,所述一个或者更多个附加的已挂起进程可以被置于执行状态。在另一个示例中,在508,当确定计数器的值在门限以下时,已挂起的进程可以被保持在挂起状态。按此方式,基于唤醒策略,已挂起的进程可以被置于执行状态或者保持在挂起状态。在510,方法结束。
图6例示被配置以基于唤醒策略确定是否恢复已挂起的进程的系统600的示例。系统600可以包括唤醒部件624。唤醒部件624可以被配置以维持唤醒策略(例如,唤醒策略集合626,诸如进程间通信唤醒策略628、用户输入唤醒策略630、后台到前台唤醒策略632和/或其它唤醒策略)。唤醒策略可以与逻辑容器层次结构610内的被指派到已挂起的进程的逻辑容器相关联。例如,唤醒策略集合626可以与文本编辑器逻辑容器612相关联,文本编辑器逻辑容器612与已挂起的文本编辑器应用602的已挂起的文本编辑器进程614相关联。在一个示例中,基于文本编辑器进程614的挂起,已挂起的文本编辑器打印进程616、已挂起的文本编辑器保存进程618和/或已挂起的拼写检查器进程622可以已经挂起,因为这些进程可以是相关的(例如,已挂起的拼写检查器进程622可以被指派到嵌套在文本编辑器逻辑容器612内的拼写检查器逻辑容器620)。
唤醒策略,诸如进程间通信唤醒策略628可以与如下计数器相关联,该计数器指示与针对已挂起的进程的当前未决的唤醒策略相关联的唤醒通知的数量。唤醒部件624可以被配置以基于接收到与唤醒策略相关联的唤醒通知,递增计数器,和/或基于接收到唤醒通知不是当前未决的通知而递减计数器。例如,可以接收到唤醒通知608。唤醒通知608可以指示电子表格应用604已经关于粘贴的文本对象606向已挂起的文本编辑器应用602发送进程间通信调用(例如,粘贴的文本对象606可以从已挂起的文本编辑器应用602导出功能和/或数据,并且因而电子表格应用604从已挂起的文本编辑器应用602请求这种功能和/或数据)。基于唤醒通知608,,唤醒部件624可以将与进程间通信唤醒策略628相关联的计数器递增到1。
唤醒部件624可以被配置以基于确定计数器的值在门限以上而将已挂起的进程置于执行状态,否则唤醒部件624可以将已挂起的进程保留在挂起状态。例如,唤醒部件624可以基于包括大于0的值1的进程间通信唤醒策略628的计数器、将已挂起的文本编辑器进程614置于执行状态。唤醒部件624可以遍历逻辑容器层次结构610以标识与要被恢复到执行状态的已挂起的文本编辑器进程614相关联的一个或者更多个附加的已挂起的进程。例如,已挂起的文本编辑器打印进程616、已挂起的文本编辑器保存进程618和/或已挂起的拼写检查器进程622可以基于确定这些进程被指派到文本编辑器逻辑容器612和/或与文本编辑器逻辑容器612相关联的逻辑容器诸如拼写检查器逻辑容器620而被标识。按此方式,唤醒部件624可以将已挂起的文本编辑器进程614、已挂起的文本编辑器打印进程616、已挂起的文本编辑器保存进程618和/或已挂起的拼写检查器进程622置于执行状态,从而文本编辑器应用602可以对来自电子表格应用604的进程间通信调用响应。在一个示例中,唤醒部件624可以将与恢复的进程相关联的保存的存储器内容置于存储器中以改进文本编辑器应用602的响应性。
通过图7中的示例性方法700例示管理应用的应用状态的一个实施方式。在702,方法开始。在704,与应用相关联的定时器的列表可以被维持(例如,与应用相关联的进程的一个或者更多个定时器可以被维持)。也就是说,与应用相关联的进程可以与一个或者更多个定时器相关联,诸如相对定时器(例如,文本编辑器应用设定的针对文本编辑器保存进程的20秒的超时)、绝对定时器(例如,日历应用设定的在5:00 AM 9/15/11的超时)和/或其它类型的定时器。在定时器的一个示例中,文本编辑器应用可以设定针对文本编辑器保存进程的20秒的相对定时器,因为文本编辑器保存进程一般不占用超过20秒的时间来完成除非发生了错误。在定时器的另一个示例中,日历应用可以设定5:00 AM 9/15/11的绝对定时器作为提醒以在6:00 AM 9/15/11向用户提供唤醒通知。
在一个示例中,定时器中的一个或者更多个可以与被指派到应用的根逻辑容器相关联和/或与逻辑容器层次结构中被指派到与该应用相关联的进程的一个或者更多个逻辑容器相关联。例如,基于确定第一进程被指派到与逻辑容器层次结构中的根逻辑容器相关联(例如,嵌入在其中)的第一逻辑容器,与应用的第一进程相关联的第一定时器可以被维持。基于确定第二进程被指派到与根逻辑容器和/或第一逻辑容器相关联的第二逻辑容器,与应用的第二进程相关联的第二定时器可以被维持。按此方式,与应用的进程相关联的定时器的列表可以被维持。
在706,当接收到应用被置于挂起状态的通知时,包括从定时器的列表导出的定时器重建基底数据的应用状态可以被创建。在一个示例中,与绝对定时器相关联的绝对定时器重建基底数据可以被存储在应用状态内。绝对定时器重建基底数据可以包括绝对定时器的初始过期时间(例如,由于进程和/或应用被布置在挂起状态,日历应用可能期望在5:00 AM 9/15/11的通知,无论是否过了该时间)。在另一个示例,与相对定时器相关联的相对定时器重建基底数据可以被存储在应用状态内(例如,如果在执行状态下文本编辑器保存进程在20秒内未完成,则文本编辑器应用可能期望超时通知)。相对定时器重建基底数据可以包括距过期时间值(例如,从相对定时器被挂起到相对定时器的初始过期时间的时间跨度)。相对定时器重建基底数据可以例如包括不同于初始过期时间的距过期时间值,因为文本编辑器应用可关注在执行状态中文本编辑器保存进程是否花费比20秒更长的时间来完成(例如,花费比20秒更长的时间可以指示发生了致命错误),从而文本编辑器保存进程的挂起可以敲响相对定时器,因为由于文本编辑器保存进程被挂起而引起的相对定时器的过期可以不表示该文本编辑器应用可关注的致命超时。按此方式,该应用状态可以被创建。
当接收到应用将被从挂起状态置于执行状态的通知时,该应用状态内的定时器重建基底数据可以被应用于与定时器的列表相关联的一个或者更多个定时器。在一个示例中,绝对定时器重建基底数据可以被应用于绝对定时器以创建重建基底的绝对定时器。重建基底的绝对定时器可以包括绝对定时器的初始过期时间。如果初始过期时间已过期,则可以向该应用提供过期通知。在另一个示例中,相对定时器重建基底数据可以被应用于相对定时器以创建重建基底的相对定时器。重建基底的相对定时器可以包括从将距过期时间值应用于当前时间而导出的重建基底的过期定时器。按此方式,应用和/或与应用相关联的进程可以被置于关于定时器的当前应用状态。在708,方法结束。
通过图8中的示例性方法800例示管理应用的应用状态的一个实施方式。在802,方法开始。应用可以与应用消息队列相关联。应用消息队列可以被配置以存储针对该应用的系统消息。按此方式,应用可以通过应用消息队列接收系统消息(例如,在执行状态,应用可以解队列系统消息)。系统消息可以对应于涉及应用状态的多个信息,诸如系统设定中的改变。在一个示例中,用户可以旋转平板计算机装置,这可以将观看朝向从横向观看模式改变为纵向观看模式。平板计算机装置的操作系统可以将指示当前观看模式被设定为纵向的系统消息排队到应用消息队列中。按此方式,应用可以将该系统消息解队列,并且可以以纵向模式再现自身以匹配平板计算机装置的当前状态。可以理解的是系统消息可以包括多个其它信息,诸如用户界面颜色、语言设定、输入装置信息等。
在804,在应用处于挂起状态时与应用相关联的应用消息队列可以被维持。也就是说,应用消息队列可以通常接收系统消息而无论应用是否处于挂起状态和/或执行状态(例如,在文本编辑器应用被挂起时,用户可以多次旋转平板计算机装置,因而操作系统可以将对应于当前观看模式的多个系统消息排队。)遗憾地是,在应用处于挂起状态时,多个对应的系统消息可以被排队在应用消息队列中,其中一个或者更多个消息可以变为不相关和/或陈腐的。例如,在文本编辑器应用被挂起时,随着时间4个系统消息可以被排队在应用消息队列中。用户可以将平板计算机装置的系统语言设定改变为德语,并且因而语言 = 德语系统消息可以被排队在应用系统队列中。接着,用户可以旋转平板计算机装置到横向模式,因而观看模式 = 横向可以被排队在应用系统队列中。用户可以接着将平板计算机装置的系统语言设定改变为英语,并且因而语言 = 英语系统消息可以被排队在应用系统队列中。最终,用户可以旋转平板计算机装置到纵向模式,因而观看模式 = 纵向可以被排队在应用系统队列中。按此方式,应用消息队列可以包括不相关和/或陈腐的系统消息,诸如语言 = 德语和观看模式 = 横向系统消息,因为语言和观看模式已经改变为其它值。因此,应用消息队列可以被维持以删除和/或修改不相关和/或陈腐的消息。
在一个示例中,在应用处于挂起状态时,指向应用消息队列的第一系统消息可以被接收。可以就第一系统消息是否对应于应用消息队列内的第二系统消息进行确定(例如,如果第一系统消息对应于语言系统消息,则应用消息队列可以被遍历以标识对应于该语言系统消息的一个或者更多个系统消息)。在确定了第一系统消息对应于第二系统消息时,第一系统消息和/或第二系统消息可以被删除和/或修改(例如,更新和/或更相关的第一系统消息可以被保留,而第二系统消息可以被删除)。例如,可以向第一系统消息和第二系统消息指派相关性级别以确定修改和/或删除哪个系统消息。在806,方法结束。
图9例示被配置以管理应用的应用状态的系统900的示例,诸如定时器数据和/或系统消息数据。系统900可以包括应用状态管理器910。应用状态管理器910可以被配置以维持与应用相关联的定时器的列表904。例如,定时器的列表904可以包括被设定为在10分钟之后超时的拼写检查器相对定时器906、被设定为在3:00 PM 8/12/2011超时的文本编辑器绝对定时器908和/或其它定时器。应用状态管理器910可以接收应用被置于挂起状态的通知902。例如,通知902可以指示文本编辑器应用和/或拼写检查器应用要被置于挂起状态。
当接收到通知902时,应用状态管理器910可以创建应用状态912,其包括从定时器列表904导出的定时器重建基底数据。例如,用于拼写检查器相对定时器906的相对定时器重建基底数据914可以被创建。相对定时器重建基底数据914可以包括8分钟的距过期时间值,因为到拼写检查器应用被挂起的时间可能已经过了10分钟中的2分钟,因而留下10分钟的相对定时器的8分钟的距过期时间值。用于文本编辑器绝对定时器908的绝对定时器重建基底数据916可以被创建。绝对定时器重建基底数据916可以包括3:00 PM 8/12/2011的初始过期时间。按此方式,应用状态912可以被创建。
当接收到文本编辑器应用和/或拼写检查器应用要被置于执行状态的通知时,应用状态912内的相对定时器重建基底数据914和/或绝对定时器重建基底数据916可以被应用于拼写检查器相对定时器906和/或文本编辑器绝对定时器908。按此方式,8分钟的重建基底的相对定时器可以被创建,并且3:00 PM 8/12/2011的重建基底的绝对定时器可以被创建。
图10例示被配置以管理应用的应用状态的系统1000的示例,诸如系统消息。系统1000可以包括消息管理部件1006。在应用处于挂起状态时消息管理部件1006可以被配置以维持与应用相关联的应用消息队列1004。应用消息队列1004可以被配置以存储针对该应用的系统消息。在一个示例中,文本编辑器应用可以与应用消息队列1004相关联。文本编辑器应用可以被置于挂起状态。可以理解的是在文本编辑器应用被挂起时新系统消息可以被排队在应用消息队列1004内。应用消息队列1004的当前状态可以包括观看模式 = 横向系统消息、用户界面 = 绿色系统消息、语言 = 英语系统消息、新输入装置 = 鼠标和/或其它系统消息。
在应用被挂起时,新系统消息1002可以被接收(例如,观看模式 = 纵向新系统消息、用户界面 = 红色新系统消息、新输入装置 = 键盘新系统消息和/或其它新系统消息)。消息管理部件1006可以被配置以按照新系统消息1002来维持应用消息队列1004,从而不相关和/或陈腐系统消息被从应用消息队列1004删除和/或修改。在一个示例中,观看模式 = 纵向新系统消息可以被确定为对应于应用消息队列1004内的观看模式 = 横向系统消息。因为观看模式 = 纵向新系统消息可以使观看模式 = 横向系统消息无关和/或陈腐,观看模式 = 横向系统消息可以被删除1012并且观看模式 = 纵向新系统消息可以被添加1008到应用消息队列1004。
在另一个示例中,用户界面 = 红色新系统消息可以被确定为对应于应用消息队列1004内的用户界面 = 绿色系统消息。因为用户界面 = 红色新系统消息可以使用户界面 = 绿色系统消息无关和/或陈腐,用户界面 = 绿色系统消息可以被删除1014并且用户界面 = 红色新系统消息可以被添加1010到应用消息队列1004。在另一个示例中,新输入装置 = 键盘新系统消息可以被确定为对应于新输入装置 = 鼠标系统消息。因为新输入装置 = 键盘新系统消息可以是新输入装置 = 鼠标系统消息的补充,新输入装置 = 鼠标系统消息可以被修改1016为新输入装置 = 鼠标和键盘系统消息。按此方式,在应用被挂起时应用消息队列1004可以被消息管理部件维持,使得应用当被恢复时可以仅仅解队列(dequeue)相关的系统消息。
再一个实施方式涉及一种计算机可读介质,其包括被配置为实现此处呈现的一个或者更多个技术的处理器可执行指令。图11例示了可以按此方式设计的示例性计算机可读介质,其中实现方式1100包括计算机可读介质1116(例如,CD-R、DVD-R或者硬盘驱动器的盘片(platter)),其上编码了计算机可读数据1114。该计算机可读数据1114接着包括被配置以根据此处阐述的一个或者更多个原理操作的计算机指令1112的集合。在一个这种实施方式1100中,处理器可执行计算机指令1112可以被配置以执行方法1110,例如,诸如图1的示例性方法100中的至少一些、图2的示例性方法200中的至少一些、图4的示例性方法400中的至少一些、图5的示例性方法500中的至少一些、图7的示例性方法700中的至少一些和/或图8的示例性方法800中的至少一些。在另一个这种实施方式,处理器可执行指令1112可以被配置以实现系统,例如,诸如图3的示例性系统300中的至少一些、图6的示例性系统600中的至少一些、图9的示例性系统900中的至少一些和/或图10的示例性系统1000中的至少一些。本领域技术人员可以设计被配置成根据此处呈现的技术操作的很多这种计算机可读介质。
尽管按照特定于结构特征和/或方法动作的语言描述了主题,但是应理解的是所附的权利要求中限定的主题不必限制于以上描述的具体特征或者动作。实际上,以上描述的特定特征和动作被公开为实现权利要求的示例形式。
如本申请所用的,措辞“部件”、“模块”、“系统”、“界面”等一般旨在指代涉及计算机的实体,硬件、硬件和软件的组合、软件或者执行中的软件。例如,部件可以是但是不限于是在处理器上运行的进程、处理器、对象、可执行物、执行的线程、程序和/或计算机。通过例示,在控制器上运行的应用和控制器可以是部件。一个或者更多个部件可以驻留在执行的线程和/或进程内,并且部件可以被本地化在一个计算机上和/或分布在两个或者更多个计算机之间。
此外,要求保护的主题可以实现为使用标准编程和/或工程技术来产生软件、固件、硬件或者其组合、以控制计算机来实现所公开的主题的方法、设备或者制品。措辞“制品”如此处所用旨在包含从任何计算机可读装置、载波或者介质可访问的计算机程序。当然,本领域技术人员将认识到在不背离要求保护的主题的范围或精神的情况下可以对此配置进行很多修改。
图12和以下讨论提供用于实现此处阐述的一个或者更多个指配的实施方式的适当计算环境的简要、总体描述。图12的操作环境仅仅是适当操作环境的一个示例,并且不旨在暗示对操作环境的用途或者功能的范围的任何限制。示例计算装置包括但是不限于个人计算机、服务器计算机、手持或者膝上型计算机装置、移动装置(诸如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费类电子装置、迷你计算机、大型计算机、包括以上系统或者装置的任意系统或者装置的分布式计算环境等。
尽管不要求,但是实施方式是在“计算机可读指令”被一个或者更多个计算装置执行的总体上下文中描述的。计算机可读指令可以经由计算机可读介质(以下讨论)分配。计算机可读指令可以实现为进行特定任务或者实现特定抽象数据类型的程序模块,诸如功能、对象、应用编程接口(API)、数据结构等。典型地,计算机可读指令的功能可以在各个环境中按照期望被组合或者分配。
图12例示系统1210的示例,其包括被配置以实现此处提供的一个或者更多个实施方式的计算装置1212。在一个配置中,计算装置1212包括至少一个处理单元1216和存储器1218。依赖于计算装置的实际配置和类型,存储器1218可以是易失性的(例如,诸如RAM)、非易失性的(例如,诸如ROM、闪存等)或者两者的一些组合。此配置在图12中用虚线1214例示。
在其它实施方式中,装置1212可以包括附加特征和/或功能。例如,装置1212还可以包括附加存储(例如,可移除的和/或不可移除的),包括但不限于磁存储、光存储等。这种附加存储在图12中用存储1220例示。在一个实施方式中,用于实现此处提供的一个或者更多个实施方式的计算机可读指令可以是在存储装置1220中。存储装置1220还可以存储其它计算机可读指令以实现操作系统、应用系统等。计算机可读指令例如可以被加载在存储器1218中以便被处理单元1216执行。
此处所用的措辞“计算机可读介质”包括计算机存储介质。计算机存储介质包括按照任意方法或者技术实现的用于存储诸如计算机可读指令或者其它数据的信息的易失性和非易失性,可移除和不可移除的介质。存储器1218和存储装置1220是计算机存储介质的示例。计算机存储介质包括但是不限于RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字通用盘(DVD)或者其它光学存储装置、磁盒、磁带、磁盘存储或者其它磁存储装置,或者可以用于存储期望信息并且可以被装置1212访问的任何其它介质。任何这种计算机存储介质可以是装置1212的一部分。
装置1212还可以包括允许装置1212与其它装置通信的通信连接1226。通信连接1226可以包括但是不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或者用于将计算装置1212连接到其它计算装置的其它接口。通信连接1226可以包括有线连接或者无线连接。通信连接1226可以发射和/或接收通信介质。
措辞“计算机可读介质”可以包括通信介质。通信介质通常在诸如载波或者其它传输机制这样的“经调制的数据信号”中实现计算机可读指令或者其它数据,并且包括任何信息传递介质。措辞“经调制的数据信号”可以包括按照在信号中编码信息的方式设定或者改变其一个或者更多个特征的信号。
装置1212可以包括输入装置1224,诸如键盘、鼠标、笔、语音输入装置、触摸输入装置、红外相机、视频输入装置和/或任何其它输入装置。装置1212中还可以包括输出装置1222,诸如一个或者更多个显示器、扬声器、打印机和/或任何其它输出装置1222。输入装置1224和输出装置1222可以经由有线连接、无线连接或者其任意组合连接到装置1212。在一个实施方式中,来自另一计算装置的输入装置或者输出装置可以被用作用于计算装置1212的输入装置1224或者输出装置1222。
计算装置1212的部件可以通过各种互连件连接,诸如总线。这种互连件可以包括外围部件互连(PCI),诸如快速PCI(PCI Express)、通用串行总线(USB)、火线(firewire)(IEEE 1394)、光学总线结构等。在另一个实施方式中,计算装置1212的部件可以通过网络相互连接。例如,存储器1218可以包括位于通过网络相互连接的不同物理位置的多个物理存储器单元。
本领域技术人员将认识到用于存储计算机可读指令的存储装置可以在网络上分布。例如,可经由网络1228访问的计算装置1230可以存储用于实现此处提供的一个或者更多个实施方式的计算机可读指令。计算装置1212可以访问计算装置1230并且下载计算机可读指令的一部分或者全部以便执行。可替选地,计算装置1212可以按照需要下载计算机可读指令项,或者一些指令可以在计算装置1212处执行而一些可以在计算装置1230处执行。
在此提供了实施方式的各个操作。在一个实施方式中,所描述的操作中的一个或者更多个可以组成存储在一个或者更多个计算机可读介质上的计算机可读指令。如果被计算装置执行,其将使该计算装置执行所描述的操作。描述一些或者全部操作的顺序不应被理解为暗含这些操作必定是顺序相关的。获得本说明书优点的本领域技术人员将理解替选的顺序。此外,应理解的是不是全部操作都必须在此处提供的每一个实施方式中存在。
另外,词语“示例性”在此用于意味着用作示例、例子或者例示。在此被描述为“示例性”的任何方面或者设计不必被解释为相比于其它方面或者设计是有利的。实际上,使用词语示例性旨在以具体的方式呈现概念。如本申请中使用的,措辞“或者”旨在意味着包含性的“或者”而不是排他性的“或者”。也就是说,除非另外指出,或者从上下文清楚,“X采用A或者B”旨在意味着任何自然的包含性排列。也就是说,如果X采用A;X采用B;或者X采用A和B两者,则在上述例子中的任意例子满足“X采用A或者B”。另外,如在本申请和所附的权利要求中使用的冠词“a”和“an”可以通常被理解为意味着“一个或者更多个”除非另外指出或者从上下文清楚是指单数形式。另外,A和B中的至少一个等通常意味着A或者B,或者A和B两者。
另外,尽管关于一个或者更多个实现方式示出和描述了本公开,但是基于阅读和理解本说明书和附图,本领域其他技术人员将想到等同替代和修改。本公开包括全部这些修改和替换,并且仅仅被以下权利要求的范围限制。特别对于上述部件(例如,元素、资源等)执行的各个功能,用于描述这些部件的措辞旨在对应于(除非另外指出)执行所描述的部件的特定功能的任何部件(例如,在功能上等同),即使结构上不等同于执行此处例示的本公开的示例性实现方式的功能的公开的结构。另外,尽管可能仅仅就若干实现方式之一公开了本公开的特定特征,但是如可能期望并且对任何给定或者特定的应用有利的那样,这种特征可以与其它实现方式的一个或者更多个其它特征组合。此外,关于在此详细说明书或者权利要求中使用的措辞“包括”、“具有”、“有”、“带有”或者其变形形式,这些措辞旨在是包含性的(按照类似于措辞“包含”的方式)。
Claims (4)
1.一种基于唤醒策略的集合确定是否恢复已挂起的进程的方法,所述方法包括:
维持与逻辑容器层次结构内被指派到已挂起进程的逻辑容器相关联的唤醒策略,唤醒策略包括计数器,用于指示与唤醒策略相关联的、针对已挂起的进程的当前未决的唤醒通知的数量;
基于接收到与唤醒策略相关联的唤醒通知而递增所述计数器;
基于接收到唤醒通知不是当前未决的通知而递减所述计数器;
当确定计数器的值高于非零阈值时:
将已挂起的进程置于执行状态;
基于确定一个或多个附加已挂起进程被分配给与已挂起进程的逻辑容器相关联的逻辑容器,遍历所述逻辑容器层次结构以识别与已挂起进程相关联的所述一个或多个附加已挂起进程;以及
将所述一个或多个附加已挂起进程置于执行状态;以及
当确定计数器的值低于所述阈值时,保持所述已挂起进程在挂起状态。
2.根据权利要求1所述的方法,唤醒策略对应于以下至少之一:
从请求应用到已挂起的进程的进程间通信调用;
与已挂起的进程相关联的已挂起的应用从后台状态向前台状态的转换;
与已挂起的应用相关联的用户输入;以及
部件请求访问已挂起的进程。
3.根据权利要求1所述的方法,所述方法包括:
基于评估与在执行的进程相关联的所述唤醒策略集合的当前状态中的至少一个以及自从使所述在执行的进程被置于执行状态的唤醒通知完成所经历的时间,确定是否将在执行的进程置于挂起状态。
4.一种基于唤醒策略确定是否恢复已挂起的进程的系统,所述系统包括:
唤醒部件,所述唤醒部件被配置以:
维持与逻辑容器层次结构内被指派到已挂起进程的逻辑容器相关联的唤醒策略,唤醒策略包括计数器,用于指示与唤醒策略相关联的、针对已挂起的进程的当前未决的唤醒通知的数量;
基于接收到与唤醒策略相关联的唤醒通知而递增所述计数器;
基于接收到唤醒通知不是当前未决的通知而递减所述计数器;
当确定计数器的值高于非零阈值时:
将已挂起的进程置于执行状态;
基于确定一个或多个附加已挂起进程被分配给与已挂起进程的逻辑容器相关联的逻辑容器,遍历所述逻辑容器层次结构以识别与已挂起进程相关联的所述一个或多个附加已挂起进程;以及
将所述一个或多个附加已挂起进程置于执行状态;以及
当确定计数器的值低于所述阈值时,保持所述已挂起进程在挂起状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/230,714 US8621494B2 (en) | 2011-09-12 | 2011-09-12 | Managing processes within suspend states and execution states |
US13/230714 | 2011-09-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102902582A CN102902582A (zh) | 2013-01-30 |
CN102902582B true CN102902582B (zh) | 2015-08-05 |
Family
ID=47574828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210335484.6A Active CN102902582B (zh) | 2011-09-12 | 2012-09-12 | 挂起状态和执行状态中的管理进程 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8621494B2 (zh) |
EP (1) | EP2756385B1 (zh) |
JP (1) | JP5872699B2 (zh) |
KR (1) | KR101943134B1 (zh) |
CN (1) | CN102902582B (zh) |
WO (1) | WO2013039525A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9049660B2 (en) * | 2011-09-09 | 2015-06-02 | Microsoft Technology Licensing, Llc | Wake pattern management |
US8892710B2 (en) * | 2011-09-09 | 2014-11-18 | Microsoft Corporation | Keep alive management |
US8806250B2 (en) | 2011-09-09 | 2014-08-12 | Microsoft Corporation | Operating system management of network interface devices |
US8789055B1 (en) * | 2012-08-01 | 2014-07-22 | Kabam, Inc. | Maintaining time fidelity for an instance of a virtual space placed in a background state |
WO2014138010A1 (en) * | 2013-03-04 | 2014-09-12 | Yagi Corporation | Activity interruption management |
CN103176842B (zh) * | 2013-03-15 | 2016-04-27 | 广东欧珀移动通信有限公司 | 后台进程管理方法及其移动终端 |
US9378054B2 (en) | 2013-04-12 | 2016-06-28 | Dropbox, Inc. | Testing system with methodology for background application control |
US20140373027A1 (en) * | 2013-06-14 | 2014-12-18 | Microsoft Corporation | Application lifetime management |
CN104679581B (zh) * | 2013-12-03 | 2018-06-15 | 腾讯科技(深圳)有限公司 | 后台运行程序的方法及装置 |
CN110083444A (zh) * | 2013-12-10 | 2019-08-02 | 华为终端有限公司 | 一种任务管理方法及设备 |
JP6603513B2 (ja) * | 2014-09-03 | 2019-11-06 | キヤノン株式会社 | 通信装置及び情報処理装置及びそれらの制御方法、並びに記憶媒体 |
JP6491326B2 (ja) * | 2014-09-19 | 2019-03-27 | 華為技術有限公司Huawei Technologies Co.,Ltd. | アプリケーションプログラムを実行するための方法および装置 |
JP2016100731A (ja) * | 2014-11-20 | 2016-05-30 | キヤノン株式会社 | 情報処理装置およびその制御方法、並びにプログラム |
CN104836920B (zh) * | 2015-06-08 | 2017-04-26 | 浙江每日互动网络科技股份有限公司 | 一种基于服务器端进行移动终端应用间交叉唤醒的方法及系统 |
US20170024243A1 (en) * | 2015-07-22 | 2017-01-26 | Microsoft Technology Licensing, Llc | Background task management |
CN105786607B (zh) * | 2016-03-24 | 2019-11-12 | 宇龙计算机通信科技(深圳)有限公司 | 一种多系统的冻结与唤醒方法及装置 |
US10045297B1 (en) * | 2017-01-24 | 2018-08-07 | Google Llc | Increased time in a suspended state during network transmissions |
US10732703B2 (en) * | 2017-03-02 | 2020-08-04 | Futurewei Technologies, Inc. | Apparatus and method for reducing an energy consumption of hardware based on an application state |
KR102492996B1 (ko) | 2018-06-08 | 2023-01-31 | 삼성전자주식회사 | 외부 입력을 이용하여 백그라운드 태스크를 처리하는 전자 장치 및 그 저장 매체 |
CN111522634B (zh) * | 2019-02-02 | 2024-04-12 | 华为技术有限公司 | 应用管理方法、装置及设备 |
CN111857859A (zh) * | 2019-04-30 | 2020-10-30 | 中兴通讯股份有限公司 | 应用控制方法、装置、终端及计算机可读存储介质 |
CN111897586A (zh) * | 2019-05-06 | 2020-11-06 | 中兴通讯股份有限公司 | 应用状态控制方法、装置、终端及计算机可读存储介质 |
CN112911405A (zh) * | 2019-12-04 | 2021-06-04 | 中国电信股份有限公司 | 虚拟机顶盒的控制方法及装置、虚拟机顶盒系统 |
US11762525B2 (en) * | 2020-01-15 | 2023-09-19 | Vmware, Inc. | Enterprise branding configuration provisioning |
CN114942791A (zh) * | 2022-05-26 | 2022-08-26 | 统信软件技术有限公司 | 一种进程唤醒方法、装置、计算设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801096A (zh) * | 2005-01-05 | 2006-07-12 | 国际商业机器公司 | 在计算机系统中用于对进程进行休眠的方法和系统 |
CN101944046A (zh) * | 2009-07-07 | 2011-01-12 | 英特尔公司 | 用于调度线程的技术 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0358235A (ja) * | 1989-07-27 | 1991-03-13 | Nec Corp | タスクの階層制御方式 |
JPH04157534A (ja) * | 1990-10-22 | 1992-05-29 | Nec Corp | タスクグループ単位のサスペンド/リスタート方式 |
US5944829A (en) | 1996-09-30 | 1999-08-31 | Intel Corporation | Adjusting software characteristics by user interface based upon battery level and the amount of time the user wants the battery to last |
US6260150B1 (en) | 1998-03-10 | 2001-07-10 | Agere Systems Guardian Corp. | Foreground and background context controller setting processor to power saving mode when all contexts are inactive |
US6834386B1 (en) | 1999-07-16 | 2004-12-21 | Microsoft Corporation | Method and system for regulating background tasks using performance measurements |
JP2001256066A (ja) | 2000-02-29 | 2001-09-21 | Internatl Business Mach Corp <Ibm> | コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置 |
US6883170B1 (en) | 2000-08-30 | 2005-04-19 | Aspect Communication Corporation | Method and system to maintain a hierarchy of instantiated application objects and to enable recovery from an applications failure |
US20020059357A1 (en) | 2000-10-27 | 2002-05-16 | Pac Interactive Technology, Inc | System, method and apparatus of simplifying interpretation of suspend and wake-up functions in operating system for information appliance (IA) |
US20040172631A1 (en) * | 2001-06-20 | 2004-09-02 | Howard James E | Concurrent-multitasking processor |
TW564652B (en) | 2002-09-05 | 2003-12-01 | Ind Tech Res Inst | A mobility management method and system for wireless data networks |
US7234094B2 (en) * | 2003-09-30 | 2007-06-19 | Sudhir Dattaram Kadkade | Automaton synchronization during system verification |
US7472389B2 (en) | 2003-10-29 | 2008-12-30 | Honeywell International Inc. | Stochastically based thread budget overrun handling system and method |
GB0411682D0 (en) | 2004-05-25 | 2004-06-30 | Chello Broadband N V | Display of enhanced content |
US7827558B2 (en) | 2004-06-30 | 2010-11-02 | Devicevm, Inc. | Mechanism for enabling a program to be executed while the execution of an operating system is suspended |
US20060236390A1 (en) | 2005-04-18 | 2006-10-19 | Research In Motion Limited | Method and system for detecting malicious wireless applications |
US20060248471A1 (en) | 2005-04-29 | 2006-11-02 | Microsoft Corporation | System and method for providing a window management mode |
US7373537B2 (en) * | 2005-06-28 | 2008-05-13 | Intel Corporation | Response to wake event while a system is in reduced power consumption state |
US20070028052A1 (en) * | 2005-07-28 | 2007-02-01 | International Business Machines Corporation | Method and apparatus for maintaining cached state data for one or more shared devices in a logically partitioned computer system |
US20070245163A1 (en) | 2006-03-03 | 2007-10-18 | Yung-Hsiang Lu | Power management in computer operating systems |
JP4356800B2 (ja) | 2006-03-03 | 2009-11-04 | 日本電気株式会社 | 携帯電話機および携帯電話機の制御方法 |
US7769028B2 (en) | 2006-06-21 | 2010-08-03 | Harris Corporation | Systems and methods for adaptive throughput management for event-driven message-based data |
JP4342576B2 (ja) | 2006-07-25 | 2009-10-14 | 株式会社エヌ・ティ・ティ・ドコモ | 複数オペレーティングシステム切替制御装置及びコンピュータシステム |
US7584376B2 (en) | 2006-08-23 | 2009-09-01 | Palm, Inc. | Method and apparatus for power management |
JP2008107914A (ja) * | 2006-10-23 | 2008-05-08 | Denso Corp | マイクロコンピュータ、プログラム及び車両用電子制御装置 |
US7962911B2 (en) | 2007-02-02 | 2011-06-14 | International Business Machines Corporation | Method and apparatus for preventing undesired termination of a process in an information handling system |
US7853812B2 (en) | 2007-02-07 | 2010-12-14 | International Business Machines Corporation | Reducing power usage in a software application |
KR20080086757A (ko) | 2007-03-23 | 2008-09-26 | 주식회사 엘지텔레콤 | 이동통신단말기에서의 어플리케이션 구동방법 |
US8627327B2 (en) | 2007-10-24 | 2014-01-07 | International Business Machines Corporation | Thread classification suspension |
US20090295746A1 (en) | 2008-04-29 | 2009-12-03 | Davidson Philip L | Event registration and dispatch system and method for multi-point controls |
GB0808576D0 (en) | 2008-05-12 | 2008-06-18 | Xmos Ltd | Compiling and linking |
US8776078B2 (en) | 2008-05-20 | 2014-07-08 | International Business Machines Corporation | Method for dynamically freeing computer resources |
US9027027B2 (en) | 2008-06-09 | 2015-05-05 | Microsoft Technology Licensing, Llc | Thread management based on device power state |
US8510577B2 (en) | 2008-07-28 | 2013-08-13 | Microsoft Corporation | Reducing power consumption by offloading applications |
US7861024B2 (en) * | 2008-09-30 | 2010-12-28 | Intel Corporation | Providing a set aside mechanism for posted interrupt transactions |
US8239667B2 (en) | 2008-11-13 | 2012-08-07 | Intel Corporation | Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory |
US8543803B2 (en) | 2009-02-20 | 2013-09-24 | Lenovo (Singapore) Pte Ltd | Apparatus, system, and method for accurate automated scheduling of computer suspend and resume |
US7853817B2 (en) | 2009-02-26 | 2010-12-14 | Apple Inc. | Power management independent of CPU hardware support |
JP4660597B2 (ja) * | 2009-03-03 | 2011-03-30 | シャープ株式会社 | 画像形成装置 |
US8352933B2 (en) | 2009-03-26 | 2013-01-08 | International Business Machines Corporation | Concurrent patching of operating systems |
US8239867B2 (en) * | 2009-06-03 | 2012-08-07 | Apple Inc. | Method and apparatus for implementing atomic FIFO |
US8286011B2 (en) | 2010-02-28 | 2012-10-09 | Freescale Semiconductor, Inc. | Method of waking processor from sleep mode |
-
2011
- 2011-09-12 US US13/230,714 patent/US8621494B2/en active Active
- 2011-10-11 KR KR1020147006519A patent/KR101943134B1/ko active IP Right Grant
- 2011-10-11 JP JP2014529680A patent/JP5872699B2/ja not_active Expired - Fee Related
- 2011-10-11 EP EP11872313.9A patent/EP2756385B1/en active Active
- 2011-10-11 WO PCT/US2011/055692 patent/WO2013039525A1/en active Application Filing
-
2012
- 2012-09-12 CN CN201210335484.6A patent/CN102902582B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801096A (zh) * | 2005-01-05 | 2006-07-12 | 国际商业机器公司 | 在计算机系统中用于对进程进行休眠的方法和系统 |
CN101944046A (zh) * | 2009-07-07 | 2011-01-12 | 英特尔公司 | 用于调度线程的技术 |
Also Published As
Publication number | Publication date |
---|---|
EP2756385A4 (en) | 2016-06-15 |
US20130067475A1 (en) | 2013-03-14 |
WO2013039525A1 (en) | 2013-03-21 |
JP2014526732A (ja) | 2014-10-06 |
EP2756385A1 (en) | 2014-07-23 |
JP5872699B2 (ja) | 2016-03-01 |
US8621494B2 (en) | 2013-12-31 |
KR101943134B1 (ko) | 2019-01-28 |
CN102902582A (zh) | 2013-01-30 |
EP2756385B1 (en) | 2019-02-27 |
KR20140067041A (ko) | 2014-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102902582B (zh) | 挂起状态和执行状态中的管理进程 | |
CN102902583B (zh) | 在挂起状态和执行状态下管理进程 | |
CN103718133B (zh) | 用于连接待机的进程的挂起和/或节制 | |
CN102999384A (zh) | 在挂起状态和执行状态下管理进程 | |
CN102789305B (zh) | 推迟挂起 | |
US8959509B1 (en) | Techniques for virtual machine backup scheduling | |
CN102866903B (zh) | 将后台工作和前台工作解耦合 | |
US8769519B2 (en) | Personal and pooled virtual machine update | |
CN103765342A (zh) | 用于连接待机的进程的挂起和/或节制 | |
US20180150324A1 (en) | Idle Time Service | |
CN103765343A (zh) | 用于连接待机的进程的挂起和/或节制 | |
EP3008543B1 (en) | Scenario power management | |
US10417062B2 (en) | Method and apparatus of unloading out of memory processing flow to user space | |
CN103473142A (zh) | 一种云计算操作系统下的虚拟机迁移方法及装置 | |
US8645736B1 (en) | Periodic system wakeup to update state | |
CN107850931A (zh) | 后台任务管理 | |
CN105210039A (zh) | 终端和用于同步其应用的方法 | |
CN106462448A (zh) | 多操作系统设备、通知设备及其方法 | |
CN104679493A (zh) | 一种流程化的事件处理机制的改进方法 | |
US20190227621A1 (en) | System management device | |
US20140373027A1 (en) | Application lifetime management | |
US20200364081A1 (en) | System and Method for Blocking Path Detection | |
CN112579280B (zh) | 云资源的调度方法、装置及计算机存储介质 | |
KR102227644B1 (ko) | 마이크로 데이터센터 환경에서의 학습형 워크로드 측정 방법 | |
CN107209882B (zh) | 对于处在管理之下的设备的多阶段撤销注册 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150714 |
|
C14 | Grant of patent or utility model | ||
C41 | Transfer of patent application or patent right or utility model | ||
GR01 | Patent grant | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150714 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |