System and method for terminating applications
Claim Score by NHIP
Abstract
A computer application program executing on a computer, such as a portable computer, is selected for termination by first identifying computer application programs executing on the computer. A priority value is assigned to each of the identified computer applications. The priority value is based on multiple characteristics of the identified computer application programs. The computer application program with the smallest priority value is automatically terminated. If the computer application program with the smallest priority value is in a modal state in which it waits for a response from a user, then a default response is provided to the application prior to terminating the computer application program. The characteristics associated with the computer application programs may include average launch times, average memory usages, a class or type of application, frequencies of usage, and an amount of data stored on the computer by the computer application program.

Term
Term ended
Projected expiry passed 19 November 2023, 2.8 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
20 claims: 3 independent, 17 dependent
- 1Broadest claimClaim Score 78, broad(NHIP)One or more computer readable media containing executable instructions that, when implemented, perform a method comprising:determining a first priority value of a first computer application program based on a least one first parameter of the first computer application program;comparing the first priority value to a second priority value;and reclaiming system resources associated with the first computer application program.
- 9A method, comprising:determining a first priority value of a first computer application program based on at least one first parameter of the first computer application program;comparing the first priority value with a second priority value based on at least one second parameter of a second computer application program;reclaiming system resources associated with the first computer application program if the first priority value differs from the second priority value.
- 16A system, comprising:a registry containing a first parameter associated with a first computer application program and a second parameter associated with a second computer application program;means for executing the first computer application program and the second computer application program;means for assigning a first priority value associated with the first parameter to the first computer application program, and assigning a second priority value associated with the second parameter to the second computer application program;means for comparing the first priority value and the second priority value;and means for reclaiming system resources associated with the first computer application program if a result of the comparison indicates the first priority value differs from the second priority value.
Independent claims3
56 paragraphs in 6 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATIONS
0001This application claims priority to U.S. Applicatin No. 09/379,017, filed Aug. 23, 1999, entitled “System and Method for Terminating Applications”, to Chee H. Chew, which claims priority from U.S. Provisional Application No. 60/110,003, filed Nov. 24, 1998, entitled “System and Method for Weighted Application Termination”, to Chee H. Chew.
TECHNICAL FIELD
0002This invention relates to the termination of one or more applications running on a computer. More particularly, the invention relates to selecting a particular application for termination based on a priority value associated with each application running on a computer.
BACKGROUND
0003Laptop, handheld, and other portable computers or computing devices have increased in popularity as the devices have become smaller in size and less expensive. Additionally, improved operating speed and processing power of portable computers has increased their popularity. Many portable computers are capable of storing multiple application programs, such as address books, games, calculators, and the like. The application programs can be permanently installed in the portable computer during manufacture (e.g., on read-only memory (ROM)). Alternatively, the application programs may be installed by the user after purchasing the portable computer by downloading the application programs to the portable computer from a desktop computer.
0004Many of these small computers have limited physical resources, such as limited memory and limited processing capabilities. Thus, a typical portable computer may only be capable of executing a small number of application programs simultaneously. In some systems, this problem is addressed by preventing simultaneous execution of multiple applications—by automatically closing any running applications before a new application is launched. While this is a workable solution, it imposes significant delays as a user switches between multiple applications. This type of delay can be frustrating to the user, especially if the applications require a significant amount of time to launch.
0005In other systems, multiple applications are allowed to execute concurrently. For example, a word processing application, a calendar application, and an address book application might be able to run simultaneously on a portable computer. However, the portable computer may not have sufficient resources remaining to launch an additional application program, such as a calculator. In this situation, one of the three running applications is terminated to reclaim system resources before launching the calculator application.
0006Typically, a small computer displays only one application at a time, rather than displaying multiple windows such as might be displayed on desktop computers. When a user of a small computer switches from one application to another, only the new application is displayed. Although other applications may continue running on the computer, they are not generally displayed until selected as the active application. Because of this, any non-visible application can be terminated without the notice of the user. When the user attempts to switch back to the terminated application, the terminated application is simply restarted at its previous state.
0007When an application must be terminated to reclaim resources, existing portable devices make an arbitrary decision as to which application will be terminated. In many cases, the terminated application will be the least recently used application or the longest running application. Additional applications will continue to be terminated until enough system resources are available to initiate the newly selected application. Although this is usually successful, it does have disadvantages. One problem is that the application to be terminated might be in a modal state; i.e., waiting for user input. Attempting to close an application in a modal state may fail if the application refuses to terminate until the requested user input is received. A loss of data may result if the application in a modal state is forced to close before receiving the requested user input.
0008Another method of reclaiming system resources is to request that the user of a device select from listed applications to terminate. However, this can be confusing to the user, especially a user not familiar with computer systems. The user is not necessarily familiar with the characteristics of the applications and may not understand how different applications interact with one another. Users of portable devices often expect fast operation, for example when retrieving a meeting location from a calendar or a telephone number from an address book. These users may become frustrated if confronted with a question regarding terminating an application when they want to quickly retrieve data from the portable device.
0009The invention described below addresses these disadvantages and problems by allowing portable computers such as laptop computers, handheld computers, and palmtop computers to terminate one or more applications using a more “intelligent” selection system. In most cases, this greatly improves the operation and efficiency of the computer as perceived by the user, thereby increasing user satisfaction without requiring the addition of system resources such as memory.
SUMMARY
0010The invention provides a mechanism for terminating an application program to reclaim resources, such as memory or processor resources, in a computer. The invention is particularly useful in small computers, such as palmtop computers, having limited resources (e.g., limited memory and a limited number of concurrent processes). Rather than merely terminating the least recently used application or the longest running application, a computer in accordance with the invention selects the application to terminate based on various characteristics associated with executing applications. After analyzing these various characteristics, the “best” application to terminate is selected and terminated. The selection and termination of the application is performed automatically, without requiring any input from the user of the portable computer.
0011In accordance with the invention, a computer uses an “intelligent” selection process to determine which application to terminate. First, computer application programs executing on the computer are identified. Next, a priority value is assigned to each of the identified computer application programs. The priority value is determined based on multiple characteristics of the identified computer application programs. The computer application program with the smallest priority value is automatically terminated.
0012The characteristics associated with each of the computer application programs may indicate average launch times of the program, average memory usages of the program, the class or type of application, frequencies of usage, and the amount of data stored on the computer by the computer application program. The priority value for a particular computer application program can be determined by adding together the values of all parameter values associated with the particular computer application program.
0013Another aspect of the invention includes determining whether the computer application program selected for termination is in a modal state in which it waits for a response from a user. If the selected application is in a modal state, then the system identifies a default response associated with the computer application program. The default response is provided to the computer application program. The process of identifying and providing default responses to the computer application program is repeated until the computer application program being terminated is in a non-modal state.
DESCRIPTION OF THE DRAWINGS
0014<figref idref="DRAWINGS">FIG. 1</figref> illustrates an exemplary portable computer in accordance with the invention.
0015<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram illustrating pertinent components of a portable computer in accordance with the invention.
0016<figref idref="DRAWINGS">FIG. 3</figref> is a flow diagram illustrating an exemplary procedure for determining priority values associated with applications programs on a portable computer.
0017<figref idref="DRAWINGS">FIG. 4</figref> is a flow diagram illustrating an embodiment of a procedure for reclaiming system resources by terminating one or more applications.
0018<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram illustrating an exemplary procedure for terminating applications in a modal state.
DETAILED DESCRIPTION
0019<figref idref="DRAWINGS">FIG. 1</figref> illustrates an exemplary portable computer <b>100</b> in accordance with the invention. Portable computer <b>100</b> can be any type of laptop, palmtop, handheld, or other computing device capable of executing one or more application programs. Portable computer <b>100</b> includes an LCD display <b>102</b> and an input mechanism that is typically something other than a full-size keyboard. Portable computer <b>100</b> includes several user input keys or buttons <b>104</b>. The LCD display <b>102</b> is a touch-sensitive screen which, when used in conjunction with a stylus <b>106</b>, allows a user to input information to portable computer <b>100</b>. The stylus <b>106</b> is used to press the display at designated coordinates for user input. Buttons <b>104</b> provide another mechanism for user input. A particular portable computer may have any number of buttons for user input. Additionally, portable computer <b>100</b> may also include one or more slots or other receptacles (not shown) capable of receiving peripheral expansion cards.
0020In other embodiments of portable computer <b>100</b>, the input mechanism might be a keypad, a track ball, a touch-sensitive pad, a miniaturized QWERTY keyboard, or the like. In other implementations, portable computer <b>100</b> may be implemented as a personal digital assistant (PDA), a personal organizer, a palmtop (or handheld) computer, a computerized notepad, or the like.
0021The application programs executed by portable computer <b>100</b> can be factory-installed by the manufacturer or may be contained on a peripheral storage card coupled to portable computer <b>100</b>. Additionally, application programs can be downloaded into the memory of portable computer <b>100</b> from another computer, such as a desktop computer, using a communication link between the desktop computer and portable computer <b>100</b>. The application programs executed by portable computer <b>100</b> include, for example, word processing applications, spreadsheet applications, contact manager applications, and game applications.
0022Portable computer <b>100</b> has a limited amount of memory and processor resources available to execute application programs. If the user of portable computer <b>100</b> launches a new application program, it may be necessary to terminate a running application program to reclaim system resources, such as memory or processor resources. As discussed below, the present invention provides a mechanism for selecting a particular application running on portable computer <b>100</b> for termination based on a priority value associated with each application running on the portable computer. The selected application is terminated automatically without requiring any input by the user of the portable computer.
0023Although the present invention can be used with any type of computer system capable of executing application programs, it is particularly useful in computing devices with limited resources (e.g., limited memory or a limited number of concurrent processes). Throughout this specification, exemplary embodiments are described with reference to portable computer <b>100</b>. However, similar procedures and components can be applied to any type of computing device.
0024<figref idref="DRAWINGS">FIG. 2</figref> is a block diagram illustrating pertinent components of portable computer <b>100</b> in accordance with the invention. Portable computer <b>100</b> includes a built-in memory <b>200</b> and one or more memory expansion cards <b>202</b>. A portion of built-in memory <b>200</b> is addressable memory for program execution, and the remaining portion is used to simulate secondary disk storage. The memory expansion cards <b>202</b> may contain permanently installed applications, such as applications stored in a read-only memory (ROM), not shown. Additionally, memory expansion cards <b>202</b> may contain non-volatile memory for storing data or downloaded application programs, thereby supplementing built-in memory <b>200</b>. Memory expansion cards <b>202</b> allow the user of portable computer <b>100</b> to customize the device by adding permanently installed application programs or adding memory for storing additional data and downloading additional application programs.
0025Memory <b>200</b> includes an operating system <b>220</b>, one or more application programs <b>222</b>, a registry <b>224</b>, and an application termination module <b>226</b>. Additionally, portable computer <b>100</b> has a processor <b>228</b>, I/O components <b>230</b> (including the display <b>102</b> and buttons <b>104</b> in <figref idref="DRAWINGS">FIG. 1</figref>), and a serial interface <b>232</b> for communicating with other computing devices (such as desktop computer <b>130</b> or another portable computer <b>100</b>). In one embodiment, the various components in portable computer <b>100</b> communicate with one another over a bus <b>234</b>. In one embodiment of portable computer <b>100</b>, memory <b>200</b> is a non-volatile electronic memory such as a random access memory (RAM) with a battery back-up module, not shown. In an alternate embodiment, memory <b>200</b> is implemented using a flash memory device. Part of this memory <b>200</b> is addressable memory for program execution, and the remaining part is used to simulate secondary disk storage.
0026Operating system <b>220</b> executes on processor <b>228</b> from memory <b>200</b>. In a particular embodiment of the invention, portable computer <b>100</b> runs the “Windows CE” operating system manufactured and distributed by Microsoft Corporation of Redmond, Wash. This operating system is particularly designed for small computing devices.
0027Application programs <b>222</b> execute from memory <b>200</b> of portable computer <b>100</b>. The number of application programs <b>222</b> that can be simultaneously installed on portable computer <b>100</b> is a function of the portion of memory allocated to store application programs and the size of the application programs <b>222</b> currently installed.
0028The operating system <b>220</b> maintains registry <b>224</b>. Registry <b>224</b> is a database that is implemented in various forms under different versions of the “Windows” operating systems. The registry contains information about applications stored on portable computer <b>100</b>. Exemplary registry information includes user preferences and application configuration information. In accordance with the invention, various characteristics of different application programs are stored in the registry. When one or more applications need to be terminated to reclaim system resources, the registry is consulted to determine the “best” application to terminate, based in part upon the stored characteristics.
0029Application termination module <b>226</b> is a software component, and is part of the operating system <b>220</b> in the described embodiment. Application termination module <b>226</b> contains logic for determining which of the currently executing applications is the best candidate for termination, and then performs the steps necessary to terminate the application. The application to be terminated is identified by comparing priority values associated with the different executing applications. The priority values are calculated by application termination module <b>226</b>, based on different characteristics of the executing applications. As mentioned above, these characteristics are stored as parameter values in registry <b>224</b>. For example, the operating system defines the names of the parameters and the applications provide the value associated with the parameter. A parameter such as “class” is defined by the operating system and may have an associated value of “1”, “2”, or “3”. A value of “1” indicates that the application is a personal information manager, a value of “2” indicates that the application is a game, and a value of “3” indicates that the application is a utility. Another parameter such as “memory” has an associated value that indicates the typical memory usage of the application.
0030<figref idref="DRAWINGS">FIG. 3</figref> is a flow diagram illustrating an exemplary procedure for determining priority values associated with application programs on a portable computer. Step <b>250</b> comprises identifying each application program on the portable computer. Step <b>252</b> comprises identifying different characteristics of each application program on the portable computer. Such characteristics are preferably represented by parameter values stored in registry <b>224</b>. Any number of parameters can be used to identify characteristics of the particular application programs. Typically, the parameter values are set by the developer of each application program. Each of the parameters is related to a characteristic that is useful in determining which application will be terminated. The parameters associated with a particular application are registered with the operating system by calling an API function provided by operating system <b>220</b>. The operating system, in turn, stores the parameters in registry <b>224</b>. Typically, the parameters are provided to the operating system by the installation program, when the application is initially installed on the computer. Alternatively, the installation program might copy the parameters directly to the registry or to some other memory location that is accessible to application termination module <b>226</b>.
0031Any number of parameters can be used to describe the characteristics of a particular application. For example, an average launch time parameter indicates the time required to restart the application program if it is terminated. An application with a short launch time is more likely to be terminated than an application with a long launch time. An average memory usage parameter indicates the typical amount of memory used by the application program when executing. Applications that use a large amount of memory may be terminated before applications that use less memory.
0032An application class parameter indicates the application's type, such as a game, utility, or personal information manager (PIM). The application class can be useful in determining which application to terminate. For example, if three games are running, one of the games may be terminated instead of terminating a word processor or PIM. A frequency of usage parameter indicates how often the application program is used or accessed by the user of the portable computer. An infrequently used application program is more likely to be terminated than a frequently used application program. An amount of data stored parameter identifies the quantity of data a user has stored using a particular application program. If a user has stored a significant amount of data using a particular application program, that application program is less likely to be terminated.
0033After identifying parameter values in step <b>252</b>, the procedure of <figref idref="DRAWINGS">FIG. 3</figref> continues to step <b>254</b>, which comprises calculating a priority value associated with each application program on the portable computer. In one embodiment, step <b>254</b> of <figref idref="DRAWINGS">FIG. 3</figref> calculates the priority value associated with a particular application program by adding the values of all parameters associated with that particular application program. For example, if five parameters are associated with each application program on a portable computer, the priority value is calculated using the following formula, where P<sub>x </sub>represents a parameter: <ul id="ul0001" list-style="none"><li id="ul0001-0001" num="0000"><ul id="ul0002" list-style="none"><li id="ul0002-0001" num="0034"> Priority Value=P<sub>1</sub>+P<sub>2</sub>+P<sub>3</sub>+P<sub>4</sub>+P<sub>5 </sub></li></ul></li></ul>
0035Typically, the parameters are designed so that higher values indicate less likelihood of an application being terminated. For example, an application that uses a small amount of memory will have a larger memory usage parameter value than an application that uses a large amount of memory. When all of the parameters are added together to determine the priority value, the application with the smallest associated priority value is terminated. Using this formula for calculating the priority value, several parameters are considered when selecting an application to terminate, rather than relying on a single parameter.
0036In an alternate embodiment, a weighting factor may be applied to each parameter indicating the weight or importance of each parameter. For example, if five parameters are associated with each application program on a portable computer, an important parameter may receive a weighting factor of five and an unimportant parameter may receive a weighting factor of one. Using this alternate embodiment, the priority value can be calculated using the following formula, where P<sub>x </sub>represents a parameter and W<sub>x </sub>represents a weighting factor associated with the parameter: <ul id="ul0003" list-style="none"><li id="ul0003-0001" num="0000"><ul id="ul0004" list-style="none"><li id="ul0004-0001" num="0037"> Priority Value=P<sub>1</sub>W<sub>1</sub>+P<sub>2</sub>W<sub>2</sub>+P<sub>3</sub>W<sub>3</sub>+P<sub>4</sub>W<sub>4</sub>+P<sub>5</sub>W<sub>5 </sub></li></ul></li></ul>
0038After calculating the priority values in step <b>254</b>, the procedure of <figref idref="DRAWINGS">FIG. 3</figref> continues to step <b>256</b>, which comprises storing the priority values in a register or other storage mechanism. By storing these priority values in a register within the portable computer, the portable computer is able to quickly retrieve the priority values when it has determined that an application needs to be terminated.
0039Table 1 below illustrates five parameters associated with each of six application programs. Although Table 1 contains five specific parameters, the present invention can use any number of parameters (including parameters not listed in Table 1) to determine priority values associated with application programs. Each parameter value is assigned by each executing application. For example, the value associated with “Average Launch Time” parameter is one per every 100 ms, such that an application with an average launch time of 600 ms has an associated value of six. The value associated with Average Memory Usage indicates the average number of kilobytes of memory used by the application. The application class has an associated number that indicates the class or type of application. For example, 1=a personal information manager (PIM), 2=a game, 3=a utility, and 4=a productivity application). The Frequency of Usage parameter is determined by the operating system based on monitoring the usage of the application. The value associated with the Frequency of Usage parameter may indicate the percentage of total operating time during which the application was executing. For example, if a particular application is executing for a few minutes during each hour that the portable computer is powered on, that application is assigned a Frequency of Usage value of 1. However, an application that runs for the majority of the time that the portable computer is powered on (e.g., 70% of the time), the application is assigned a Frequency of Usage value of 7. The Amount of Data Stored parameter indicates the data storage space used by the application, measured in kilobytes. <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="6"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="center" /><colspec colname="3" colwidth="35PT" align="center" /><colspec colname="4" colwidth="42PT" align="center" /><colspec colname="5" colwidth="35PT" align="center" /><colspec colname="6" colwidth="35PT" align="center" /><thead><row><entry namest="1" nameend="6" align="center">TABLE 1</entry></row><row><entry /></row><row><entry namest="1" nameend="6" align="center" rowsep="1" /></row><row><entry /><entry>Average</entry><entry>Average</entry><entry /><entry /><entry>Amount</entry></row><row><entry>Application</entry><entry>Launch</entry><entry>Memory</entry><entry>Application</entry><entry>Frequency</entry><entry>of Data</entry></row><row><entry>Program</entry><entry>Time</entry><entry>Usage</entry><entry>Class</entry><entry>of Usage</entry><entry>Stored</entry></row><row><entry namest="1" nameend="6" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="6"><colspec colname="1" colwidth="42PT" align="left" /><colspec colname="2" colwidth="28PT" align="char" char="." /><colspec colname="3" colwidth="35PT" align="char" char="." /><colspec colname="4" colwidth="42PT" align="center" /><colspec colname="5" colwidth="35PT" align="center" /><colspec colname="6" colwidth="35PT" align="char" char="." /><tbody valign="top"><row><entry>Calculator</entry><entry>2</entry><entry>5</entry><entry>3</entry><entry>1</entry><entry>0</entry></row><row><entry>Word</entry><entry>10</entry><entry>20</entry><entry>4</entry><entry>4</entry><entry>15</entry></row><row><entry>Processor</entry></row><row><entry>Spreadsheet</entry><entry>12</entry><entry>30</entry><entry>4</entry><entry>3</entry><entry>12</entry></row><row><entry>Calendar</entry><entry>8</entry><entry>20</entry><entry>1</entry><entry>7</entry><entry>22</entry></row><row><entry>Address</entry><entry>5</entry><entry>10</entry><entry>1</entry><entry>4</entry><entry>18</entry></row><row><entry>Book</entry></row><row><entry>Solitaire</entry><entry>3</entry><entry>10</entry><entry>2</entry><entry>1</entry><entry>1</entry></row><row><entry namest="1" nameend="6" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0040Certain parameter values (such as application class) can be assigned by the developer of the application program. However, other parameter values (such as frequency of usage and amount of data stored) can only be determined after the application program has been executed for some period of time. These parameters (frequency of usage and amount of data stored) are dependent on the user's habits and program selection rather than being dependent on an inherent characteristic of the application program. The operation of these programs must be monitored to collect data that will define these parameter values.
0041The procedure described above with respect to <figref idref="DRAWINGS">FIG. 3</figref> is used by application termination module <b>226</b> to calculate a priority value for all application programs on the portable device, regardless of whether the application is currently being executed. In another embodiment of the invention, the procedure of <figref idref="DRAWINGS">FIG. 3</figref> calculates and stores a priority value for all application programs currently being executed, but does not calculate priority values for application programs that are not running. This alternate embodiment typically reduces the time required to calculate priority values because it ignores applications that are not running. These applications can be ignored because they will not be considered for termination until they are executing. This alternate embodiment calculates and stores the priority value associated with each newly executed application when the application is launched. Thus, priority values are calculated on an as-needed basis in this embodiment.
0042Similarly, in one embodiment of the invention, Table 1 above contains parameters for every application program stored on the portable computer. In another embodiment, Table 1 contains parameters for running applications, but does not store parameters for non-executing programs. This second embodiment requires storage of fewer parameters and is more efficient because it does not store information for non-running applications, which will not require termination.
0043In another embodiment of the invention, the priority values are calculated (or recalculated) at the time an application needs to be terminated. Various conditions are considered when assigning or modifying priority values associated with the application programs executing on the portable computer. For example, if multiple games are running on the portable computer, then the older game is assigned a lower priority value (a stronger candidate for termination) because two games are not typically played simultaneously. If the maximum number of concurrent processes is reached, but available memory remains relatively high, then fast-loading applications are assigned a lower priority value because they can be quickly re-loaded if necessary. If memory in the portable computer is low, then applications that use larger amounts of memory are assigned a lower priority value. Applications that have not been accessed during the last user session are assigned a lower priority value because of the lack of use. If a particular portable computer is a PIM, then applications that are classified as non-PIM programs are assigned a lower priority value, thereby giving a preference to PIM applications.
0044In an exemplary embodiment of the invention, the application with the highest priority value is terminated. Initially, the priority value assigned to each application is zero. In this example, preference is given to PIM applications by adding 100 to the priority value of each non-PIM application. If more than one game is executing simultaneously, the priority value of the first game is not changed, but the priority values of all other games executing simultaneously are increased by 500. For each user session that an application is not used (i.e., the application is executing, but not accessed by the user), the priority value of the application is increased by 250. Thus, the longer an application is not accessed, the greater the possibility that the application will be selected for termination. If the system is low on memory, applications with high memory usage have their priority value increased relative to their memory usage. For example, an application with very high memory usage has its priority value increased by 500 while an application with moderate memory usage has its priority value increased by 250.
0045Continuing with the exemplary embodiment, if an application has a slow launch time, it is desirable to keep this application executing to avoid a long delay in launching the application after a termination. An application with a slow launch time has its priority value reduced by 100 while an application with a fast launch time has its priority value increased by 100. In certain situations, an application with a particular characteristic may be terminated even though it does not have the highest priority value. For example, if the computer is reaching the maximum number of concurrent processes, an application with a fast launch time may be terminated even if other applications have higher priority values.
0046<figref idref="DRAWINGS">FIG. 4</figref> is a flow diagram illustrating an embodiment of a procedure for reclaiming system resources by terminating one or more applications. Step <b>270</b> comprises receiving a request to launch a new application program. Step <b>272</b> comprises checking the available resources (e.g., available memory and processing resources) in the portable computer. Step <b>274</b> comprises checking the resources required to execute the new application program. This information can be obtained, for example, from the parameters associated with the new application. These parameters may indicate the typical memory and other resources required to execute the application on the portable computer.
0047Step <b>276</b> determines whether the available resources in the portable computer are sufficient to handle the new application program. This determination is accomplished by comparing the available resources in the portable computer with the expected resources required to execute the new application (as identified by the parameters associated with the new application). The current resources in the portable computer can be determined by polling for available memory or the number of processes currently running. If the available resources are sufficient to handle the new application, then the procedure branches to step <b>278</b>, which comprises executing the requested application program.
0048If the available resources are not sufficient to handle the new application, then the procedure branches from step <b>276</b> to step <b>280</b>, which comprises identifying the priority values associated with each application running on the portable computer. These priority values can be retrieved from the registry or other storage device used in step <b>256</b> of <figref idref="DRAWINGS">FIG. 3</figref>. Step <b>282</b> of <figref idref="DRAWINGS">FIG. 4</figref> terminates the application with the lowest priority value. The procedure then returns to step <b>276</b> to determine whether the currently available resources (after terminating the application in step <b>282</b>) are sufficient to handle the new application program. The procedure continues terminating applications until the available resources are sufficient to handle the new application program. Additionally, if the resources are sufficient, but the program scheduler in the portable computer is switching continuously (e.g., thrashing), then step <b>276</b> may branch to 280 to terminate an application, even though the current resources are sufficient. Terminating an application prior to launching the new application may help reduce the continuous switching between processes.
0049The procedure illustrated in <figref idref="DRAWINGS">FIG. 4</figref> is implemented without requiring any input from the user of the portable computer. Thus, the user of the portable computer selects the new application program to launch by pressing the appropriate button or touch-screen location on the portable computer. The procedure of <figref idref="DRAWINGS">FIG. 4</figref> is then performed without any further intervention by the user of the portable computer. The user does not know which, if any, applications were terminated. After selecting the new application program to launch, the next item displayed to the user is the information associated with the new application program.
0050The procedure of <figref idref="DRAWINGS">FIG. 4</figref> is initiated in response to a request to launch a new application program. In another embodiment, a portion of the procedure of <figref idref="DRAWINGS">FIG. 4</figref> is executed when available system resources fall below a particular threshold value. For example, if the available memory falls below a predetermined threshold, then steps <b>280</b> and <b>282</b> in <figref idref="DRAWINGS">FIG. 4</figref> are executed to terminate an application, thereby reclaiming system resources. In another example, steps <b>280</b> and <b>282</b> are performed when the number of concurrent processes executing on the portable computer exceeds a threshold. Thus, it is not necessary to wait for a request to launch a new application program before terminating an application. An application can be terminated any time that available system resources fall below a particular threshold.
0051In one embodiment of the invention, a particular computing device may contain one or more “core” applications that are never candidates for termination. A core application may be required to execute other applications or may represent the most frequently used applications in the computing device. The core application may be selected by the user of the computing device or determined by the computing device itself based on historical application usage or predetermined by the developer of the computing device. For example, if the computing device is primarily used to maintain a calendar of meetings and events, then the calendar application may be designated as a core application because it should always be readily available to the user of the computing device. In other embodiments of the invention, there may be no core application, such that any application is a valid candidate for termination.
0052To avoid selecting a core application for termination, the computing device may assign a unique code to the application's priority indicating that the application is a core application. Alternatively, a very high priority may be assigned to the core application such that it will always have the highest priority value and, therefore, not be selected for termination.
0053<figref idref="DRAWINGS">FIG. 5</figref> is a flow diagram illustrating an exemplary procedure for terminating applications in a modal state. An application in a modal state has requested an input from the user of the application, for example in the form of a dialog box. In the modal state, the application is waiting for the user's response. At step <b>290</b>, an application is selected for termination. Step <b>292</b> determines whether the application selected for termination is in a modal state. If the application is not in a modal state, then the procedure branches to step <b>298</b>, which terminates the application selected for termination.
0054Terminating an application in the modal state may result in the loss or corruption of data stored by the application. Therefore, if the application selected for termination is in a modal state, then the procedure continues to step <b>294</b> which determines a default response associated with the application selected for termination. One or more default responses may be associated with the application depending on the number of different inputs the application may request from the user. Step <b>296</b> generates a default response and communicates the default response to the application, thereby providing the input requested by the application. The procedure then returns to step <b>298</b> to be certain that the default response removed the application from its modal state. If the application is no longer in a modal state, then the procedure branches to step <b>298</b>, which terminates the application. However, if the application remains in a modal state (e.g., the application requested additional input from the user), then the procedure branches to step <b>294</b> to identify and generate another default response. The procedure continues providing default responses to the application until the application is in a non-modal state, at which point the application is terminated.
0055The default responses may be generated by the application itself in response to an operating system request to terminate. Alternatively, the responses can be generated using an application programming interface (API) or similar mechanism that facilitates the creation of default responses. In another embodiment, each application provides one or more default responses to the operating system when the application is launched. If the operating system determines that an application in a modal state should be terminated, then the operating system provides the appropriate default response to the application (i.e., the default response received from the application when launched).
0056When generating a default response for an application in a modal state, if a termination command is received and the associated application has one or more open dialog boxes, a default response is provided to each open dialog box. If a termination command is received and, later, a request to open a dialog box for the application is received before the application is terminated, then the dialog box is not opened. Instead, the default response that would have been generated if the dialog box was open is returned to the application to allow the application to be terminated without loss or corruption of data.
0057The described system provides a significant advantage over the prior art. Specifically, it allows applications to be terminated in a way that is least intrusive to the user's actual interaction with a computer. By utilizing appropriate parameters, the perceived responsiveness of the computer will be greatly increased, thereby increasing the usefulness of the computer and in many cases reducing the amount of hardware resources that will be required in the computer.
0058Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.
Contents6
6 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US8635630B2 | Cited by | United States of America | Applicant |
| US9674287B2 | Cited by | United States of America | Search report |
| US9977576B2 | Cited by | United States of America | Search report |
| WO2012060955A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US10359922B2 | Cited by | United States of America | Applicant |
| US2014207955A1 | Cited by | United States of America | Pre-grant |
| US9658881B1 | Cited by | United States of America | Applicant |
| US7529822B2 | Cited by | United States of America | Applicant |
| US9571580B2 | Cited by | United States of America | Search report |
| US2013082916A1 | Cited by | United States of America | Pre-grant |
| US2011321034A1 | Cited by | United States of America | Pre-grant |
| US2014207956A1 | Cited by | United States of America | Pre-grant |
| US2016242067A1 | Cited by | United States of America | Pre-grant |
| US2017289719A1 | Cited by | United States of America | Pre-grant |
| US9319465B2 | Cited by | United States of America | Search report |
| EP3404541A4 | Cited by | European Patent Office (EPO) | Search report |
| US2004153708A1 | Cited by | United States of America | Pre-grant |
| US11252055B2 | Cited by | United States of America | Applicant |
| US10496445B2 | Cited by | United States of America | Applicant |
| US2006085787A1 | Cited by | United States of America | Pre-grant |
| US8997171B2 | Cited by | United States of America | Applicant |
| US11287962B2 | Cited by | United States of America | Applicant |
| US7900206B1 | Cited by | United States of America | Applicant |
| US2014208328A1 | Cited by | United States of America | Pre-grant |
| US2015153937A1 | Cited by | United States of America | Pre-grant |
| US8631413B2 | Cited by | United States of America | Search report |
| US10558470B1 | Cited by | United States of America | Applicant |
| US10325610B2 | Cited by | United States of America | Applicant |
| US10229695B2 | Cited by | United States of America | Search report |
| US2012047509A1 | Cited by | United States of America | Pre-grant |
| US2017289719A1 | Cited by | United States of America | Search report |
| WO2012060955A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11068301B1 | Cited by | United States of America | Applicant |
| US8990797B2 | Cited by | United States of America | Search report |
| US10754520B2 | Cited by | United States of America | Applicant |
| US2015026335A1 | Cited by | United States of America | Pre-grant |
| US8195798B2 | Cited by | United States of America | Applicant |
| US8005950B1 | Cited by | United States of America | Search report |
| US8819238B2 | Cited by | United States of America | Applicant |
| US9280391B2 | Cited by | United States of America | Search report |
| US8539498B2 | Cited by | United States of America | Search report |
| US2012254894A1 | Cited by | United States of America | Pre-grant |
| US9402207B2 | Cited by | United States of America | Search report |
| US2011055841A1 | Cited by | United States of America | Pre-grant |
| US9952903B2 | Cited by | United States of America | Applicant |
| US2010122257A1 | Cited by | United States of America | Pre-grant |
| US2008288949A1 | Cited by | United States of America | Pre-grant |
| US2012034910A1 | Cited by | United States of America | Pre-grant |
| US2017287496A1 | Cited by | United States of America | Pre-grant |
| US10628238B2 | Cited by | United States of America | Applicant |
| US10121485B2 | Cited by | United States of America | Search report |
| US9052929B2 | Cited by | United States of America | Search report |
| US9727232B2 | Cited by | United States of America | Search report |
| US8326990B1 | Cited by | United States of America | Applicant |
| US9571581B2 | Cited by | United States of America | Search report |
| US9361150B2 | Cited by | United States of America | Applicant |
| US2014123151A1 | Cited by | United States of America | Pre-grant |
| US7478149B2 | Cited by | United States of America | Search report |
| US9319464B2 | Cited by | United States of America | Search report |
| US10671437B2 | Cited by | United States of America | Applicant |
| US9489236B2 | Cited by | United States of America | Search report |
| US2009024868A1 | Cited by | United States of America | Pre-grant |
| US4257096A | Cites | United States of America | Pre-grant |
| US4649479A | Cites | United States of America | Pre-grant |
| US4847751A | Cites | United States of America | Pre-grant |
| US4941084A | Cites | United States of America | Pre-grant |
| US5014192A | Cites | United States of America | Pre-grant |
| US5168566A | Cites | United States of America | Pre-grant |
| US5247675A | Cites | United States of America | Pre-grant |
| US5270920A | Cites | United States of America | Pre-grant |
| US5333319A | Cites | United States of America | Pre-grant |
| US5361347A | Cites | United States of America | Pre-grant |
| US5421011A | Cites | United States of America | Pre-grant |
| US5450570A | Cites | United States of America | Pre-grant |
| US5465354A | Cites | United States of America | Pre-grant |
| US5487170A | Cites | United States of America | Pre-grant |
| US5504670A | Cites | United States of America | Pre-grant |
| US5560011A | Cites | United States of America | Pre-grant |
| US5671361A | Cites | United States of America | Pre-grant |
| US5737611A | Cites | United States of America | Pre-grant |
| US5737728A | Cites | United States of America | Pre-grant |
| US5748468A | Cites | United States of America | Pre-grant |
| US5781736A | Cites | United States of America | Pre-grant |
| US5787246A | Cites | United States of America | Pre-grant |
| US5793979A | Cites | United States of America | Pre-grant |
| US5826082A | Cites | United States of America | Pre-grant |
| US5835767A | Cites | United States of America | Pre-grant |
| US5838968A | Cites | United States of America | Pre-grant |
| US5890134A | Cites | United States of America | Pre-grant |
| US5896539A | Cites | United States of America | Pre-grant |
| US5963731A | Cites | United States of America | Pre-grant |
| US5966714A | Cites | United States of America | Pre-grant |
| US5978579A | Cites | United States of America | Pre-grant |
| US5995745A | Cites | United States of America | Pre-grant |
| US6003061A | Cites | United States of America | Pre-grant |
| US6029258A | Cites | United States of America | Pre-grant |
| US6038571A | Cites | United States of America | Pre-grant |
| US6047312A | Cites | United States of America | Pre-grant |
| US6052707A | Cites | United States of America | Pre-grant |
| US6061433A | Cites | United States of America | Pre-grant |
7 members in 1 office
Priority claims10
| Document | Office | Kind | Date |
|---|---|---|---|
| 11000398 | United States of America | P | |
| 11000398 | United States of America | P | |
| 37901799 | United States of America | A | |
| 37901799 | United States of America | A | |
| 10580605 | United States of America | A | |
| 09379017 | – | – | – |
| 60110003 | – | – | – |
| US19980110003P | – | – | – |
| US19990379017 | – | – | – |
| US20050105806 | – | – | – |
Members7
| Document | Office | Kind | |
|---|---|---|---|
| US2005034129A1 | United States of America | A1 | |
| US6910210B1 | United States of America | B1 | |
| US2005138448A1 | United States of America | A1 | |
| US2005177832A1 | United States of America | A1 | |
| US7503044B2 | United States of America | B2 | |
| US7725898B2 | United States of America | B2 | |
| US8095930B2 | United States of America | B2 |
83 transactions on the USPTO file
Allowed after 2 non-final rejections, 2 final rejections and 1 RCE.
- Non-final rejections
- 2
- Final rejections
- 2
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| New or Additional Drawing FiledC614 | C614 | |
| Response after Final ActionA.NE | A.NE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Response after Non-Final ActionA... | A... | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Mail Notice of Rescinded AbandonmentAbandonedMNRAB | MNRAB | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Notice of Rescinded Abandonment in TCsAbandonedNRAB | NRAB | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail-Petition to Revive Application - GrantedMPREV | MPREV | |
| Petition to Revive Application - GrantedPREV | PREV | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Petition EnteredPET. | PET. | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Abandonment for Failure to Respond to Office ActionAbandonedMABN2 | MABN2 | |
| Aband. for Failure to Respond to O. A.AbandonedABN2 | ABN2 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| New or Additional Drawing FiledC614 | C614 | |
| Response after Non-Final ActionA... | A... | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Application Is Now CompleteCOMP | COMP | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
9 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- 20050177832
- Publication, DOCDB
- 2005177832
- Publication, EPODOC
- US2005177832
- Application
- 11105806
- Application, DOCDB
- 10580605
- Application, EPODOC
- US20050105806
Titles
- English
- System and method for terminating applications
Classification
- CPC, 4
- G06F9/4843
- G06F9/44594
- Y10S707/99953
- Y10S707/99957
- IPC, 5
- G06F1 30
- G06F9 00
- G06F9 445
- G06F9 46
- G06F9 48
- USPC, 1
- 718104000