Source: http://www.google.co.uk/patents/US9588576
Timestamp: 2018-01-21 09:03:39
Document Index: 97122244

Matched Legal Cases: ['Application No. 11872386', 'Application No. 201210335883', 'Application No. 201210335883', 'Application No. 201210335883', 'Application No. 2014', 'Application No. 201210335883', 'Application No. 201210335484', 'Application No. 201210335902']

Patent US9588576 - Managing processes within suspend states and execution states - Google Patents
One or more techniques and/or systems are provided for suspending logically related processes associated with an application, determining whether to resume a suspended process based upon one or more wake policies, and/or managing an application state of an application, such as timer and/or system message...http://www.google.co.uk/patents/US9588576?utm_source=gb-gplus-sharePatent US9588576 - Managing processes within suspend states and execution states
Publication number US9588576 B2
Application number US 13/230,698
Also published as CN102999384A, CN102999384B, EP2756386A1, EP2756386A4, US20130067490, WO2013039526A1
Publication number 13230698, 230698, US 9588576 B2, US 9588576B2, US-B2-9588576, US9588576 B2, US9588576B2
Inventors Neeraj Kumar Singh, Hari Pulapaka, Arun Kishan
Patent Citations (54), Non-Patent Citations (29), Classifications (9), Legal Events (2)
US 9588576 B2
1. A method for managing an application state of an application, comprising:
maintaining an application message queue associated with an application while the application is in a suspend state, the application message queue configured to store system messages for the application while the application is in the suspend state;
determining whether a first system message directed to the application message queue while the application is in the suspend state is supplementary to a second system message within the application message queue;
upon determining the first system message is supplementary to the second system message, modifying at least one of the first system message or the second system message by merging the first system message and the second system message;
maintaining and associating one or more counters with one or more wake policies for waking the application after the application is put into a suspend state, the wake policies causing the application to be transitioned out of the suspend state when the one or more counters reach a predetermined aggregate threshold of wake notifications, the one or more counters being incremented or decremented in response to a wake notification that is created in response to an event associated with the one or more wake policies; and
processing at least the modified message.
maintaining a list of timers associated with the application.
creating timer rebasing data derived from the list of timers.
4. The method of claim 3, the timer rebasing data comprising at least one of an original expiration time of an absolute timer or a time till expiration value of a relative timer.
5. The method of claim 2, the maintaining a list of timers comprising:
maintaining one or more timers associated with a root logical container assigned to the application within a logical container hierarchy.
6. The method of claim 5, the maintaining a list of timers comprising:
maintaining a first timer associated with a first process of the application based upon determining the first process is assigned to a first logical container associated with the root logical container within the logical container hierarchy.
7. The method of claim 6, the maintaining a list of timers comprising:
maintaining a second timer associated with a second process of the application based upon determining the second process is assigned to a second logical container associated with the first logical container.
upon receiving a notification that the application is to be transitioned out of the suspend state and placed into an execution state, applying the timer rebasing data to one or more timers associated with the list of timers.
9. The method of claim 8, the applying the timer rebasing data comprising:
applying relative timer rebasing data to a relative timer to create a rebased relative timer, the rebased relative timer comprising a rebased expiration time derived from applying a time till expiration value to a current time.
10. The method of claim 1, wherein the method further includes applying relevancy rankings to the first system message and the second system message to determine which message to delete prior to deleting the at least one of the first system message and the second system message.
11. The method claim 1, wherein the method further includes applying different weights to different types of wake notifications, such that different types of wake notifications cause the one or more counters to be incremented differently.
12. A system for managing an application state of an application, comprising:
memory comprising computer-executable instructions that are executable by the one or more processing units to cause the system to:
maintain an application message queue associated with an application while the application is in a suspend state, the application message queue configured to store system messages for the application while the application is in the suspend state; and
maintain and associate one or more counters with one or more wake policies for waking the application after the application is put into a suspend state, the wake policies causing the application to be transitioned out of the suspend state when the one or more counters reach a predetermined aggregate threshold of wake notifications, the one or more counters being incremented or decremented in response to a wake notification that is created in response to an event associated with the one or more wake policies.
13. The system of claim 12, the application state manager configured to:
upon receiving a notification that the application is to be transitioned out of the suspend state and placed into an execution state, apply timer rebasing data to one or more timers associated with the application, wherein the timer rebasing data comprises a duration of time during which the application is determined to have remained in a suspend state prior to being transitioned out of the suspend state.
a component configured to maintain a list of timers associated with the application.
15. The system of claim 12, wherein the computer-executable instructions are further executable by the one or more processing units to cause the system to
determine whether a first system message directed to the application message queue while the application is in the suspend state corresponds to a second system message within the application message queue, where the first system message and the second system message originate from and are directed to a same computer;
upon determining the first system message is supplementary to the second system message, modify at least one of the first system message or the second system message by merging the first system message and the second system message;
delete at least one of the first system message and the second system message based on relevancy rankings associated with the first system message and the second system message; and
to process at least the modified message.
16. A computer readable storage device comprising computer executable instructions that when executed via a processing unit perform operations for managing an application state of an application, comprising:
maintaining and associating one or more counters with one or more wake policies for waking the application after the application is put into a suspend state, the wake policies causing the application to be transitioned out of the suspend state when the one or more counters a predetermined aggregate threshold of wake notifications, the one or more counters being incremented or decremented in response to a wake notification that is created in response to an event associated with the one or more wake policies;
determining whether a first system message directed to the application message queue while the application is in the suspend state corresponds to a second system message within the application message queue; and
upon determining the first system message is supplementary to the second system message, modifying at least one of the first system message or the second system message.
17. The computer readable storage device of claim 16, comprising processing the first system message.
18. The computer readable storage device of claim 16, the setting corresponding to the view orientation.
19. The computer readable storage device of claim 16, the setting corresponding to the user interface color.
20. The computer readable storage device of claim 16, the setting corresponding to the language.
21. The computer readable storage device of claim 16, wherein the first system message comprises a first value for a setting corresponding to one of a user interface color, a view orientation or a language and the second system message comprises a second value, different than the first value, for the setting.
22. The computer readable storage device of claim 16, wherein the modifying includes merging the first system message and the second system message.
23. The computer readable storage device of claim 16, wherein the modifying includes deleting at least one of the first system message and the second system message based on relevancy rankings associated with the first system message and the second system message.
The set of wake policies may be evaluated to determine whether to place the suspended process into an execution state or retain the suspended process in the suspend state. In one example, the suspended process may be placed into the execution state based upon determining at least one counter associated with a wake policy comprises a value above a threshold value (e.g., at least one counter has a value above 2). In another example, values of one or more counters may be aggregated together to create an aggregated value (e.g., three counters associated with various wake policies may have a value of 1, and thus an aggregated value of 3 may be determined). The aggregated value may be adjusted based upon weights associated with the wake policies (e.g., a wake policy associated with user input may receive a weight value of 2, while a wake policy associated with a remote third party request may receive a weight value of 0.5 because it may be more advantageous to respond aggressively to a user as opposed to a remote third party). Likewise a particular counter may be unconditionally observed (e.g., a user counter), whereas another counter may be conditionally observed (e.g., based on frequency, noisiness, source, etc.). If the suspended process is placed into the execution state as an executing application, then a current state of the wake policies and/or a time elapsed since completion of a wake notification may be evaluated in determining whether and/or when to place the executing process back into the suspend state. For example, the executing process may be retained in the execution state for a period of time in the event additional inter-process communication calls are performed. As an optimization, the notifications may be delivered on “edge” transitions (0->1, 1->0) for a particular counter. In the first case, the policy for execution is evaluated and in the second case the policy for suspension is evaluated.
In one example of managing an application state as provided herein, a list of timers associated with an application may be maintained. For example, absolute timers (e.g., a timeout set of 2:00 PM Aug. 31, 2011), relative timers (e.g., a timeout set at 10 minutes), and/or other types of timers may be maintained. Upon receiving a notification that the application is to be suspended, an application state comprising timer rebasing data derived from the list of timers may be created. The application state may be created because certain timers, such as relative timers, may timeout while the application is suspended even though the underlying reason for the timer has not occurred. For example, a text editor application may set a relative timer of 10 minutes for a spell checker process because the spell checker process generally does not take more than 10 minutes to complete unless an error has occurred. However, the spell checker process may be suspended after 2 minutes from the creation of the relative timer, and may be suspended for 15 minutes. Without adjusting the relative timer, the relative timer may timeout (e.g., the timeout may be incorrect because the timeout is not related to an error of the spell checker, but merely a suspension of the spell checker). Because the spell checker has not erred, but is merely suspended, the relative timer may be rebased using relative timer rebasing data, such as a time till expiration value, within the application state (e.g., the application state may comprise relative timer rebasing data comprising a time till expiration value indicating a time span from when the relative timer is suspended to an original expiration time of the relative timer). Additionally, relative timers may be adjusted so that upon resumption of a suspended application, an abundance of timer expirations do not occur that may otherwise cause unnecessary CPU consumption and/or may detract from user experience. In contrast, absolute timers may be associated with an absolute time (e.g., an original expiration time), such that an application may desire to be notified when the absolute time occurs regardless of whether an application associated with the timer was suspended. Accordingly, the absolute timer may be rebased using absolute timer rebasing data, such as an original expiration time, within the application state (e.g., the application state may comprise absolute timer rebasing data comprising the original expiration time). In this way, the application state comprising timer rebasing data may be used for rebasing timers upon resumption of the application from the suspend state back into the execution state.
One embodiment of managing an application state of an application is illustrated by an exemplary method 700 in FIG. 7. At 702, the method starts. At 704, a list of timers associated with an application may be maintained (e.g., one or more timers of processes associated with the application may be maintained). That is, processes associated with the application may be associated with one or more timers, such as relative timers (e.g., a timeout set at 20 seconds by a text editor application for a text editor save process), absolute timers (e.g., a timeout set at 5:00 AM Sep. 15, 2011 by a calendar application), and/or other types of timers. In one example of a timer, a text editor application may set a relative timer of 20 seconds for a text editor save process because the text editor save process generally does not take more than 20 seconds to complete unless an error has occurred. In another example of a timer, a calendar application may set an absolute timer of 5:00 AM Sep. 15, 2011 as a reminder to provide a user with a wake-up notification at 5:00 AM Sep. 15, 2011.
Upon receiving a notification that the application is to be placed into a suspend state, an application state comprising timer rebasing data derived from the list of timers may be created, at 706. In one example, absolute timer rebasing data associated with an absolute timer may be stored within the application state. The absolute timer rebasing data may comprise an original expiration time of the absolute timer (e.g., the calendar application may desire a notification at 5:00 AM Sep. 15, 2011 regardless of whether the time has passed or not due to a process and/or application being placed into a suspend state). In another example, relative timer rebasing data associated with a relative timer may be stored within the application state (e.g., the text editor application may desire a timeout notification if a text editor save process does not complete within 20 seconds while in the execution state). The relative timer rebasing data may comprise a time till expiration value (e.g., a time span from when the relative timer is suspended to an original expiration time of the relative timer). The relative timer rebasing data may, for example, comprise a time till expiration value different than the original expiration time because the text editor application may be concerned with whether the text editor save process took longer than 20 seconds to complete while in the execution state (e.g., taking longer than 20 seconds may indicate a fatal error occurred), such that a suspension of the text editor save process may toll the relative timer because an expiration of the relative timer due to the text editor save process being suspended may not be representative of a fatal timeout with which the text editor application may be concerned. In this way, the application state may be created.
FIG. 9 illustrates an example of a system 900 configured to manage an application state of an application, such as timer data and/or system message data. The system 900 may comprise an application state manager 910. The application state manager 910 may be configured to maintain a list of timers 904 associated with an application. For example, the list of timers 904 may comprise a spell checker relative timer 906 set to timeout after 10 minutes, a text editor absolute timer 908 set to timeout at 3:00 PM Aug. 12, 2011, and/or other timers. The application state manager 910 may receive a notification 902 that the application is to be placed into a suspend state. For example, the notification 902 may indicate that a text editor application and/or a spell checker application are to be placed into the suspend state.
Upon receiving the notification 902, the application state manager 910 may create an application state 912 comprising timer rebasing data derived from the list of timers 904. For example, relative timer rebasing data 914 for the spell checker relative timer 906 may be created. The relative timer rebasing data 914 may comprise a time till expiration value of 8 minutes because 2 out of the 10 minutes may have elapsed by the time the spell checker application was suspended, and thus leaving 8 minutes till expiration of the 10 minute relative timer. Absolute timer rebasing data 916 for the text editor absolute timer 908 may be created. The absolute timer rebasing data 916 may comprise an original expiration time of 3:00 PM Aug. 12, 2011. In this way, the application state 912 may be created.
Upon receiving notification that the text editor application and/or the spell checker application are to be placed into an execution state, the relative timer rebasing data 914 and/or the absolute timer rebasing data 916 within the application state 912 may be applied to the spell checker relative timer 906 and/or the text editor absolute timer 908. In this way, a rebased relative timer of 8 minutes may be created and a rebased absolute timer of 3:00 PM Aug. 12, 2011 may be created.
US6148408 15 Jun 1999 14 Nov 2000 Intel Corporation Adjusting software characteristics based upon battery level and the amount of time the user wants the battery to last
US6260150 17 Dec 1998 10 Jul 2001 Agere Systems Guardian Corp. Foreground and background context controller setting processor to power saving mode when all contexts are inactive
US6834386 16 Jul 1999 21 Dec 2004 Microsoft Corporation Method and system for regulating background tasks using performance measurements
US7853812 7 Feb 2007 14 Dec 2010 International Business Machines Corporation Reducing power usage in a software application
US7861024 30 Sep 2008 28 Dec 2010 Intel Corporation Providing a set aside mechanism for posted interrupt transactions
US7865844 19 Jan 2009 4 Jan 2011 International Business Machines Corporation Method and system for modifying properties of graphical user interface components
US8490075 23 Nov 2009 16 Jul 2013 Nokia Corporation Method and apparatus for optimizing an exchange of service updates
US20010018717 26 Feb 2001 30 Aug 2001 International Business Machines Corporation Computer system, operating system switching system, operating system mounting method, operating system switching method, storage medium, and program transmission apparatus
US20020059357 27 Aug 2001 16 May 2002 Pac Interactive Technology, Inc System, method and apparatus of simplifying interpretation of suspend and wake-up functions in operating system for information appliance (IA)
US20040192357 30 Dec 2002 30 Sep 2004 Industrial Technology Research Institute Mobility management method and system for wireless data networks
US20050097553 * 29 Oct 2003 5 May 2005 Smith Joseph A. Stochastically based thread budget overrun handling system and method
US20060236390 * 18 Apr 2005 19 Oct 2006 Research In Motion Limited Method and system for detecting malicious wireless applications
US20060294407 28 Jun 2005 28 Dec 2006 Intel Corporation Response to wake event while a system is in reduced power consumption state
US20070028052 28 Jul 2005 1 Feb 2007 International Business Machines Corporation Method and apparatus for maintaining cached state data for one or more shared devices in a logically partitioned computer system
US20070245163 5 Mar 2007 18 Oct 2007 Yung-Hsiang Lu Power management in computer operating systems
US20080059842 26 Oct 2007 6 Mar 2008 Kadkade Sudhir D Dynamic verification traversal strategies
US20080184274 25 Jul 2007 31 Jul 2008 Ntt Docomo, Inc. Operating system switching control device and computer system
US20080189708 2 Feb 2007 7 Aug 2008 Ibm Corporation Method and apparatus for preventing undesired termination of a process in an information handling system
US20080263619 * 20 May 2005 23 Oct 2008 Auwens Johannes Cornelis Leona Display of Enhanced Content
US20090011791 1 Feb 2007 8 Jan 2009 Yuko Tashiro Mobile Telephone and Application Program
US20090113433 24 Oct 2007 30 Apr 2009 Andrew Dunshea Thread classification suspension
US20090293062 20 May 2008 26 Nov 2009 International Business Machines Corporation Method for Dynamically Freeing Computer Resources
US20090295746 * 29 Apr 2009 3 Dec 2009 Davidson Philip L Event registration and dispatch system and method for multi-point controls
US20090307696 9 Jun 2008 10 Dec 2009 Microsoft Corporation Thread management based on device power state
US20100023788 28 Jul 2008 28 Jan 2010 Microsoft Corporation Reducing Power Consumption by Offloading Applications
US20100088495 14 Oct 2008 8 Apr 2010 Microsoft Corporation Mode-specific container runtime attachment
US20100122077 13 Nov 2008 13 May 2010 David Durham SWITCHING BETWEEN MULTIPLE OPERATING SYSTEMS (OSes) USING SLEEP STATE MANAGEMENT AND SEQUESTERED RE-BASEABLE MEMORY
US20100138641 30 Jun 2004 3 Jun 2010 Rong-Wen Chang Mechanism for enabling a program to be executed while the execution of an operating system is suspended
US20100217968 20 Feb 2009 26 Aug 2010 Lenovo (Singapore) Pte, Ltd. Apparatus, System, and Method for Accurate Automated Scheduling of Computer Suspend and Resume
US20100218015 2 Jul 2009 26 Aug 2010 Yarak Dennis A Power management independent of cpu hardware support
US20100250908 8 Mar 2010 30 Sep 2010 International Business Machines Corporation Concurrent Patching of Operating Systems
US20100313208 3 Jun 2009 9 Dec 2010 Apple Inc. Method and apparatus for implementing atomic fifo
US20110126185 23 Nov 2009 26 May 2011 Nokia Corporation Method and apparatus for optimizing an exchange of service updates
US20110131558 11 May 2009 2 Jun 2011 Xmos Limited Link-time resource allocation for a multi-threaded processor architecture
US20110213992 28 Feb 2010 1 Sep 2011 Freescale Semiconductor, Inc. Method of waking processor from sleep mode
US20120054478 * 31 Aug 2010 1 Mar 2012 Apple Inc. Systems, methods, and computer-readable media for presenting visual content with a consistent orientation
US20130031401 * 26 Jul 2011 31 Jan 2013 Raytheon Company Systems, Methods, and Computer Program Products Providing Output Sample Frequency Determinism
CN1801096A 5 Jan 2005 12 Jul 2006 国际商业机器公司 Method and system for implementing thread sleep in computer system
CN101281480A 21 May 2008 8 Oct 2008 中兴通讯股份有限公司 Method for realizing sleep function in embedded system
CN102087615A 15 Nov 2010 8 Jun 2011 国际商业机器公司 Automated merger of logically associated messages in a message queue
CN102087651A 2 Dec 2009 8 Jun 2011 石庆生 Hotel room service control device
JP2001318807A Title not available
JP2005107757A Title not available
JP2006178822A Title not available
JP2010108294A Title not available
KR20080086757A Title not available
1 "CPU Scheduling in Multimedia Operating Systems", Daniel Alexander Taranovsky, 1999, Research Report, 27 pgs.
2 "Extended European Search Report issued in European Patent Application No. 11872386.5", Mailed Date: May 18, 2016, 9 pages.
3 "First Office Action and Search Report Issued in Chinese Patent Application No. 201210335883.2", Mailed Date: Oct. 23, 2014, 13 Pages.
4 "Fourth Office Action and Search Report Issued in Chinese Patent Application No. 201210335883.2", Mailed Date: May 30, 2016, 17 Pages.
5 "How to: Use the Threads Window"-Retrieved Date: Aug. 23, 2011, http://msdn.microsoft.com/en-us/library/w15y186f.aspx.
6 "International Search Report" Mailed Date: Sep. 10, 2012, Application No. PCT/US2011/055696, Filing Date : Oct. 11, 2011, pp. 12.
7 "iOS Application Programming Guide", AppleInc., Feb. 2011, 114 pages.
8 "Office Action and Search Report Issued in Chinese Patent Application No. 201210335883.2", Mailed Date: Nov. 17, 2015, 13 Pages.
9 "Office Action Issued in Japanese Patent Application No. 2014-529682", Mailed Date: Dec. 15, 2015, 6 Pages.
10 "Playing with NSTimer-Noodlings", Jul. 2010, 4 pages. Available at <<https://www.noodlesoft.com/blog/2010/07/01/playing-with-nstimer/>>.
11 "Playing with NSTimer-Noodlings", Jul. 2010, 4 pages. Available at >.
12 "Second Office Action Received in Chinese Patent Application No. 201210335883.2", Mailed Date: Jun. 1, 2015, 6 Pages.
13 Amendment after Notice of Allowance cited in U.S. Appl. No. 13/230,714, filed Nov. 20, 2014, 8 pgs.
14 Chang; et al., "Implementation and Optimization of DSP Suspend Resume on Dual-Core SOC", Published Date: May 25-27, 2009, pp. 185-190, Proceedings: ICESS '09, http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5066647.
15 Chinese Office Action cited in Chinese Application No. 201210335484.6 dated May 30, 2014, 3 pgs.
16 Chinese Office Action cited in Chinese Application No. 201210335902.1 dated May 30, 2014, 4 pgs.
17 Dedhia, Sandip, "Easily Suspend & Resume Processes with Process Freezer"-Published Date: Nov. 22, 2009, http://www.blogsdna.com/5742/easily-suspend-resume-processes-with-process-freezer.htm.
18 Int. Preliminary Report cited in PCT Application No. PCT/US2011/055692 dated Mar. 12, 2014, 5 pgs.
19 Int. Search Report cited in PCT Application No. PCT/US2011/055692 dated Sep. 26, 2012, 9 pgs.
20 Int. Search Report cited in PCT Application No. PCT/US2011/055826 dated Sep. 24, 2012, 9 pgs.
21 McKusick et al., "Process Management", The Design and Implementation of the 4.4BSD Operating System-Chapter 2 Design Overview of 4.4BSD, Jun. 2011, 2 pages. Available at <<http://web.archive.org/web/20110606170724/http://www.freebsd.org/doc/en-US.IS08859-1/books/design-44bsd/overview-process-management.html>>.
22 Non-Final Office action cited in U.S. Appl. No. 13/230,677 dated Mar. 24, 2014, 39 pgs.
23 Non-Final Office Action cited in U.S. Appl. No. 13/230,714 dated Mar. 1, 2013, 39 pgs.
24 Notice of Allowance cited in U.S. Appl. No. 13/230,417 dated Aug. 20, 2013, 32 pgs.
25 Nt. Preliminary Report cited in PCT Application No. PCT/US2011/055696 dated Mar. 12, 2014, 5 pgs.
26 Nt. Preliminary Report cited in PCT Application No. PCT/US2011/055826 dated Mar. 12, 2014, 5 pgs.
27 Reply Non-Final Office action cited in U.S. Appl. No. 13/230,677 dated Aug. 25, 2014, 13 pgs.
28 Reply Non-Final Office Action cited in U.S. Appl. No. 13/230,714 dated Jun. 3, 2013, 16 pgs.
29 Shimizu et a., "Heirarchical object groups in distributed operating systems", 8th International Conference on Distributed Computing Systems, Jun. 1988, 7 pages.
International Classification G06F3/00, G06F9/46, G06F9/48, G06F1/32
Cooperative Classification Y02D10/24, G06F9/461, G06F1/329, G06F9/485, Y02B60/144
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SINGH, NEERAJ KUMAR;PULAPAKA, HARI;KISHAN, ARUN;REEL/FRAME:027034/0647