GB2458005A - Shutting down unnecessary programs in a computer system - Google Patents

Shutting down unnecessary programs in a computer system Download PDF

Info

Publication number
GB2458005A
GB2458005A GB0902288A GB0902288A GB2458005A GB 2458005 A GB2458005 A GB 2458005A GB 0902288 A GB0902288 A GB 0902288A GB 0902288 A GB0902288 A GB 0902288A GB 2458005 A GB2458005 A GB 2458005A
Authority
GB
United Kingdom
Prior art keywords
program
programs
instructions
computer
list
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.)
Granted
Application number
GB0902288A
Other versions
GB0902288D0 (en
GB2458005B (en
Inventor
Stavros George Alambritis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gzero Ltd
Original Assignee
Gzero Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Gzero Ltd filed Critical Gzero Ltd
Priority to GB0902288A priority Critical patent/GB2458005B/en
Publication of GB0902288D0 publication Critical patent/GB0902288D0/en
Publication of GB2458005A publication Critical patent/GB2458005A/en
Application granted granted Critical
Publication of GB2458005B publication Critical patent/GB2458005B/en
Priority to US12/705,234 priority patent/US8495637B2/en
Priority to GB1002395.0A priority patent/GB2467844B/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

A computer system 103 runs several different programs. It receives an indication from a server 128 that one or more of the programs are not essential. It stops the programs that are not essential and removes them from its memory. Later, it loads the non-essential programs back into memory. The programs may be stopped and reloaded in response to a user input. The computer may send a list of all its programs to the server, in response to which, the server may return a list identifying which of the programs are not essential. The server may store lists 605, 606 of essential and non-essential programs.

Description

I
Data Processing
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates a method of making apparatus for data processing more efficient.
2. Description of the Related Art
Computers of various types, including PCs, laptops, notebooks and tablets from various manufacturers, generally allow a user to multitask by opening several applications and running processes and services in the background. Many of these, particularly the services, take up system memory and prevent the fast running of the computer when using a memory-intensive application, such as an online game or video editing software. It is possible for the user to close some of these processes and services, but without detailed knowledge of the operating system and applications that are running, the user may close down essential programs. Further, once the user has finished with the memory-intensive task it is difficult to restart the closed programs. Usually a reboot of the computer is necessary to reinstate it to its earlier condition.
BRIEF SUMMARY OF THE INVENTION
According to an aspect of the present invention, there is provided apparatus for data processing, comprising a processor, memory, storage and a network connection, wherein a plurality of sets of instructions, each corresponding to one of a plurality of programs, is stored in the storage and the processor is configured to load the sets of instructions from the storage into the memory, obtain an indication from a remote server identifying a first program as nonessential, close the first program and remove its corresponding set of instructions from the memory, and reload the set of instructions corresponding to the first program into the memory from the storage.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
Figure 1 shows a networked environment; Figure 2 illustrates a computer shown in Figure 1; Figure 3 shows a processing system illustrated in Figure 2; Figure 4 shows the contents of a hard disk drive shown in Figure 3; Figure 5 shows the contents of the memory of the processing system shown in Figure 3; Figure 6 shows a diagram of communication between computing devices shown in Figure 1; Figure 7 shows a simple interface of an application shown in Figure 5; Figure 8 shows an advanced version of the interface shown in Figure 7; Figure 9 details steps carried out by the processing system shown in Figure 2 to process data; Figure 10 details steps carried out in Figure 9 to start an application shown in Figure 5; Figure 11 details steps carried out in Figure 9 to perform an efficiency boost; Figure 12 details steps carried out during Figure 11 to remove programs from the memory shown in Figure 5; Figure 13 details steps carried out during Figure 9 to restart stopped programs; and Figure 14 details steps carried out by a server shown in Figure 9.
DESCRIPTION OF THE BEST MODE FOR CARRYING OUT THE
INVENTION
Figure 1 The Internet 101 connects various computer systems and networks around the world. Several ways of connecting are shown in Figure 1. Internet Service Provider (ISP) 102 is connected to computers 103, 104, 105 and 106.
Computer 107 is wirelessly connected on an ad-hoc basis to computer 106.
ISP 108 connects server 109 to the internet 101. Server 109 is part of a wired LAN 110 which connects computers 111, 112, 113 and 114. In addition, computer 115 is wirelessly connected to server 109 via a wireless access point 116. Web server 117 connects directly to the internet 101 and provides a LAN 118 that connects computers 119, 120, 121 and 122. Computers 123 and 124 are connected to the internet via ISP 108, while computers 125 and 126 are connected via wireless modem/router 127 which is also connected to the internet via ISP 108.
In addition, a network comprising three remote servers 128, 129 and and a database server 131 are connected to Internet 101.
Other methods of connecting computer systems such as servers, personal computers and laptops to the internet, both wired and wirelessly, are possible.
Figure 2 Figure 2 illustrates computer 103. It includes a processing system 201 that supplies image signals to a widescreen video display unit (VDU) 202. The operator controls the processing system 201 by means of a keyboard 203 and a mouse 204. Other manual input devices, such as game controllers, may also be used.
Instructions controlling the processing system 201 may be installed from a physical medium such as a CD-ROM disk 205, or over a network via network cable 206. These instructions enable the processing system 201 to interpret user commands from the keyboard 203 and the mouse 204 such that data may be viewed, edited and processed.
Other computers shown in Figure 1, and other computers suitable for use with the invention, also have some form of processing system, display, means of connecting to and communicating with a network, and means of providing manual input, although they may not be as shown in Figure 2.
Figure 3 The processing system 201 shown in Figure 2 is detailed in Figure 3.
The processing system comprises two central processing units (CPUs) 301 and 302 operating in parallel. Each of these CPUs 301 and 302 has a dedicated secondary cache memory 303 and 304 that facilitates per-CPU storage of frequently used instructions and data. Each CPU 301 and 302 further includes separate primary instruction and data cache memory circuits on the same chip, thereby facilitating a further level of processing improvement. A memory controller 305 provides a common connection between the CPUs 301 and 302 and main memory 306. The main memory 306 comprises two gigabytes of dynamic RAM.
The memory controller 305 further facilitates connectivity between the aforementioned components of the processing system 201 and a high bandwidth non-blocking crossbar switch 307. The switch makes it possible to provide a direct high capacity connection between any of several attached circuits. These include a graphics card 308. The graphics card 308 generally receives instructions from the CPUs 301 and 302 to perform various types of graphical image rendering processes, resulting in images, clips and scenes being rendered in real time on the monitor 202.
A second SCSI bridge 310 facilitates connection between the crossbar switch 307 and a DVD/CD-ROM drive 311. The CD-ROM drive provides a convenient way of receiving large quantities of instructions and data, and is typically used to install instructions for the processing system 201 onto a hard disk drive 312. Once installed, instructions located on the hard disk drive 312 may be loaded into main memory 306 and then executed by the CPUs 301 and 302. An input/output bridge 313 provides an interface for the graphics tablet 204 and the keyboard 203, through which the user is able to provide instructions to the processing system 201.
Other types of processing system that include some form of processor, memory and storage could be used. Alternatively, computers having different processing systems but including a processor, memory and storage would also be suitable; for example, the storage or the memory could be external to the processing system.
Figure 4 A computer such as computer 103 may be used for a variety of purposes. In order to run software applications that the user can interact with, the computer runs tasks such as processes and services. Each task uses up resources such as memory, CPU clock cycle time, hard drive storage space, network bandwidth, and so on. Some software applications, such as word processing, playing simple non-networked games or viewing photographs, do not use a large amount of resources. Others, such as playing music, editing images and browsing the Internet, use a larger amount of resources.
Applications that are very resource-intensive include online role-playing games, video editing, rendering animations, and so on.
Each application is started by an executable file, called a process. In addition, many processes and services run in the background and are not obvious to the user. At any one time, a large number of tasks may be running.
Instructions for most programs carried out by computer 103, including the operating system, services and processes, are stored on hard drive 312.
When a program is started, the relevant instructions are copied into main memory 306 so that they can be accessed by the CPUs 301 and 302. This is known as loading to memory. Generally not all the instructions or data are loaded at first, only those that are immediately required. As the program is carried out, other instructions and data may be loaded into memory and some may be removed.
Figure 4 illustrates the contents of hard disk drive 312. They include operating system instructions 401, services instructions 402 and processes instructions 403. Operating system instructions 401 are loaded whenever the computer 103 is started. The operating system is responsible for the running of the computer once it has fully loaded. When a program such as a service or a process is started, the operating system finds the corresponding executable file, loads it into memory and executes it. Other processes and services may then be started by that program.
Some service instructions 402 are loaded as soon as the operating system has initialised, and others are loaded later or never. Services are programs that run transparently to a user and do not require user intervention.
They may be associated with the operating system, with an application or standalone. For example, the operating system runs services that manage memory, perform networking tasks, allow the installation of new programs, and so on.
Processes are programs that may require user intervention and therefore have a user interface of some kind. Some are run by the operating system, but many processes are associated with applications. Therefore, process instructions 403 may be loaded into memory at startup, when a user starts an application, when an application starts an extra process, or at some other time. For example, a music-playing application may have several processes: in addition to the process that actually starts the application, there may be an update scheduler service and a device detector service that are loaded at startup and run all the time, plus a process that runs in the background while the application is running to monitor the contents of the hard drive.
The division between processes and services can be arbitrary and therefore the word tasks is used herein to cover both processes and services.
Some operating systems do not make the distinction, and some may make use of a further type of task. Therefore, for the purposes of this document the term "program" is used, defined as a piece of software that has an executable file or set of instructions which can be loaded into memory and removed from memory, and which can be executed by a procesor.
Much of hard drive 312 is taken up by data 404, which is stored by the user in the form of files or stored transparently by the operating system or processes. A certain amount of space, which can be altered by the operating system or by the user, is set aside for virtual memory 405. The remaining hard drive space is free space 406.
Figure 5 Figure 5 illustrates the instructions and data present in memory 501.
Memory 501 comprises the caches 303 and 304, main memory 306 and virtual memory 405. At any time any of the instructions and data could be stored in any of these locations.
Memory 501 therefore includes operating system 502, loaded from operating system instructions 401, services 503, loaded from services instructions 402, and processes 504, loaded from processes instructions 403.
In particular, the process running efficiency boost application 505 is loaded at the startup of computer 103 in order to be available to boost the efficiency of the computer at any time.
Memory 501 also includes data for immediate access, including data 506 required by operating system 502, data 507 required by services 503, data 508 required by processes 504, including data 509 required by efficiency application 505, and other data 510. When a program is stopped its instructions and data are purged from memory 501. If data has not been saved to hard drive 312 first, it is lost.
Thus, in order to free up resources, including memory, processes and services must be stopped so that their instructions and data are removed from memory 501. The user can do this manually but often a user is not knowledgeable enough to remove every program that can be removed.
Operating systems generally have a large number of background services, some of which are essential for the functioning of the operating system, some of which are non-essential, and some of which are dependent upon the state of the computer -for example a firewall is only essential if a computer is networked. Some programs need never run while some should only be stopped temporarily. While it is easy to close applications, only a very experienced user should stop other programs.
Further, when the user has finished a memory-intensive application he may wish for all the stopped programs to be turned back on again. They may have been non-essential, but they may have a purpose. For example, the user might stop a scheduler in order to stop it running during the memory-intensive task, but he will want it to run at another time. Therefore to restore the computer to the way it was before all the programs were stopped, the user would have to restart the computer and restart the required programs.
In addition, many computers experience problems with spyware and malware that can take up a large amount of memory. Anti-virus software is not always effective in removing these. It would be preferable if, once these programs were stopped, they were not restarted.
Figure 6 The speed and efficiency of computer 103 is dependent upon the usage of several resources, in particular CPU clock time, available memory, available network bandwidth and hard drive space.
CPUs 301 and 302 can perform a set number of operations per second.
A faster processor can perform more operations per second. Each CPU cycles through its allocated programs, performing one or more operation at a time from each program. Therefore, if too many programs are running all of them are slowed, not just the last one to be started.
Many programs access the internet, such as application updates, background download managers and viral software. If the user wishes to use an application that needs to access the internet quickly, then another program that is taking up a lot of network bandwidth can cause slowness.
The amount of available memory greatly affects computer efficiency.
The memory 401 available to CPUs 301 and 302 includes first their own caches 303 and 304 respectively, then RAM 306, and finally virtual memory 405 on hard drive 312. Instructions and data required for a task that is being currently used are kept in RAM 306. Instructions and data likely to be needed soon by a CPU are pre-emptively loaded into the corresponding cache. When RAM 306 starts to fill up, instructions and data for tasks that have not been used in a while are written to virtual memory 405. When one of these tasks is switched to, those instructions and data are written back to RAM 306 in order that they can be accessed quickly. This can be efficient if the RAM is large enough, but constant swapping of data between RAM and virtual memory takes up a lot of CPU time. Also, if the hard drive is being accessed by another program, this swapping takes longer.
If the amount of memory needed by the processes and services running on the processing system approaches the total available memory then the computer will run noticeably slower, possibly seizing up altogether. Many operating systems will automatically increase the amount of virtual memory when this occurs, but this does not solve the problem if there is not enough RAM for all the running programs.
The use of resources by unnecessary tasks, both constantly and at unexpected times, can be an annoyance to a user. For example, the user of computer 103 is playing a game over the Internet with the user of computer 117, in which each user controls a character and the characters are fighting.
The user of computer 117 provides manual input indicating movement of his character. This movement is provided to computer 103. If computer 103 does not display this movement fast enough, then the user of computer 103 may lose the game. This can be extremely frustrating, and even a computer that has a large amount of RAM can suffer from this problem. For example, a computer may be running at a speed acceptable to the user and then a background service such as a scheduled update starts, using up CPU clock time, memory and network bandwidth, and also writing to the hard drive, thus instantly slowing the computer.
A user may also find the over-consumption of resources frustrating when using other resource-intensive programs, such as rendering or video editing. However, a user may simply wish to speed the computer up for day-to-day operation.
Efficiency application 505 addresses these issues. When the user of computer 103 wishes to boost the efficiency of the computer by removing non-essential programs from memory, he can request efficiency application 505 to perform an efficiency boost.
When application 505 starts up, it communicates with one of remote servers 128, 129 or 130, shown in this example as server 128, and sends a logon request. Server 128 approves the logon and sends updates and settings 602 back to computer 103. When the user requests an efficiency boost, application 505 sends a boost list request 603 to server 128. Server 128 then sends a data request 604 to database server 131.
Database server 131 queries a programs database 605 held in its storage and returns a boost list 606 to remote server 128. This lists non-essential programs that can be stopped on computer 103. Server 128 sends this as boost list 607 to computer 103, and application 505 then uses this list to stop non-essential programs. The user may, at any time subsequently, request application 505 to restore the computer, and application 505 will then restart the stopped programs. Application 505 can flag to the user that one or more of the stopped programs is known to be a malicious program such as spyware, and ask whether it should be restarted.
Programs database 605 includes a list of services and a list of processes. For each program, an indication of operating system and a status tag is included. The status tag indicates whether the program should be stopped, should not generally be stopped, or should never be stopped. Thus it indicates whether programs are non-essential or not. Other information may also be stored, for example whether a program is considered to be malicious.
This information may be included in the boost list 606.
Programs database 605 may be populated manually or automatically.
Generally, a decision needs to be made by a knowledgeable person as to the status of a program, but it is possible that the task could be automated.
Remote server 128, like servers 129 and 130, runs a service that sets up and maintains sessions for each logged on computer. This provides a barrier between the database server 131 and the user computers. Several remote servers can access a single database server, but database server 131 could be duplicated as many times as necessary.
Logon request 601 may be a logon as a guest or as a named user. A named user can have settings stored in user database 608 on database server 131, in which case remote server 128 queries that server before returning the logon approval 602. User settings may include user details such as name and address, a list of programs that the user has indicated should be stopped or not stopped regardless of the boost list, the fact that a user has subscribed and no longer sees adverts, and so on. In this embodiment these user settings are saved on database 608 rather than on the user's machines. This is so that if the user replaces his computer or has to reformat the computer due to a catastrophic error the settings are not lost.
User database may also include information on programs that are running on user computers. This information may need to be collected anonymously and would be submitted to database server 131 along with data request 604.
Figure 7 Display 202 of computer 103 is illustrated in Figure 7. The user interface of operating system 502 is shown, including a taskbar 701 that includes applications icons 702 representing running applications and processes icons 703 representing background processes that are running. Typically, the process for efficiency application 505 is loaded into memory at start-up of computer 103, allowing the logon process to take place before the user needs the application. This is particularly useful if the application needs to be updated. Process icon 704 is then displayed. When the user wishes to use application 505, he switches to it by clicking on icon 704.
Alternatively, the process for efficiency application 505 may not be loaded until the user so requests by issuing a command to run the application, for example by clicking on an icon on the desktop or in a menu. In this case, the logon screen is displayed at this stage. In either case, once the user is logged on and indicates that he wishes to use efficiency application 505, computer 103 displays user interface 705 of application 505.
Interface 705 includes a button 706 labelled "BOOST", CPU counter 707, memory counter 708, services counter 709, processes counter 710, resources gauge 711 and a button 712 labelled "ADVANCED". In its simplest form, available to users logged on to a remote server as a guest, counters 707 to 710, gauge 711 and button 712 are greyed out, leaving only button 706 available. Clicking on button 706 will cause application 505 to obtain a list of non-essential programs and stop them, after which the text of button 706 changes to "RESTORE". At this point, clicking on button 706 will cause application 505 to restart the stopped tasks.
A registered user has full functionality, including counters 707 to 710, gauge 711 and button 712. Counters 707 give a numerical indication of, respectively, the CPU usage, the memory usage, the number of running services and the number of running processes. Gauge 711 combines all this information to provide an overall indication of how effective the efficiency boost has been.
If the user clicks on button 712 then an advanced section drops down as shown in Figure 8.
Interface 705 further includes banner section 713 that is used to display an advertisement. Optionally, a user may choose to subscribe to the service in order to remove advertisements.
Figure 8 If a registered user clicks on button 712, marked "ADVANCED", then section 801 of interface 705 drops down, allowing the user more control over the efficiency application. This section contains a number of buttons such as buttons 802, 803, 804 and 805, labelled antivirus/spyware/malware, instant messengers, music players and themes respectively. Using these buttons, the user may specify that certain categories of task should not be stopped in order to boost the resources of the computer. Therefore, if the user wishes to prevent the efficiency application from stopping antivirus software, for example, he depresses button 802. The state of the buttons is persistent. By moving scroll bar 806 the user can access more buttons.
These advanced settings are only available in this embodiment if the user logs on as a named user, since user settings are saved remotely in database 608. However, in other embodiments settings could be saved locally, allowing a user to log on as a guest and still use the advanced settings.
Information stored about registered users in users database 608 may be used to select advertisements for banner section 709 to which they are more likely to respond.
Other embodiments of interface 705 may contain other buttons and displays, and in other embodiments unregistered users could access some or all of the functions.
Figure 9 Steps carried out by processing system 201 of computer 103 are detailed in Figure 9. Each computer shown in Figure 1 and others suitable for the invention will follow a similar procedure.
At step 901 the computer is switched on and at step 902 the operating system is loaded into memory. Various operating systems are available, some more suitable for certain computing devices than others, and it is envisaged that the invention will be suitable for any of them. At step 903 processes and services that are set up to start with the operating system are loaded into memory. For each one, the operating system finds the executable file on hard drive 312, loads it into memory 501 and executes at least the first line of the file. Subsequently, the executable file takes over.
At step 904 efficiency application 505 is downloaded from the internet 101 if it is not already installed on computer 103, and at step 905 its process is loaded into memory, as will be detailed further in Figure 10.
At step 906 the processing system performs operations in response to user input, including background processes and services that keep the computer working. At step 907 the user requests an efficiency boost by switching to efficiency application 505 and pressing button 706. At step 908 an efficiency boost is performed, as will be described with reference to Figure 10.
The processing system then continues to operate in response to user input.
However, fewer background processes and services will be running, enabling the user's chosen programs to run more quickly and fluidly, with more of the computer's resources available.
At step 910 the user requests a restore by switching to efficiency application 505 and pressing button 707. Efficiency application 505 then reloads stopped programs into memory, as will be detailed further with respect to Figure 13. The processing system then continues to perform tasks in response to user input at step 912. The original number of background processes and services will be running, meaning that the computer is running in its original state.
At step 913 the computer is shut down by the user, entailing unloading all processes and services and finally unloading the operating system.
Figure 10 Figure 10 details step 905 at which efficiency application 505 is started.
At step 1001 the process for the application is loaded into memory and at step 1002 a question is asked as to whether computer 103 is connected to the Internet 101, or online'. If this question is answered in the negative then at step 1003 the process waits. In this embodiment, efficiency application 505 requires the computer to be online, because an up-to-date list of non-essential programs is required. However, in other embodiments a list of programs could be retrieved and stored whenever the computer is online and accessed at any time by efficiency application 505, thus allowing the application to run when the computer is offline.
If the question asked at step 1002 is answered in the affirmative then at step 1004 the operating system run by the computer is noted and at step 1005 a logon screen is displayed to the user. At step 1006 a logon request 601 is sent to a service hosted by one of remote servers 128, 129 or 130. The request includes input received from the user, which may be a username and password or may be a request to log on as a guest, the version number of the efficiency application running, and an indication of the operating system.
At step 1007 a question is asked as to whether the logon was successful, ie whether a logon approval 602 was received. If this question is answered in the negative then control is returned to step 1005 and the logon screen is redisplayed. Procedures are available at this stage for registering a user, reminding a user of a lost password, and other similar tasks.
If the question asked at step 1007 is answered in the affirmative, to the effect that logon has been completed, then at step 1008 user settings and updates are received from the remote server, which are implemented at step 1009. Typically, an update may comprise a newer version of the application, if there is one available for the indicated operating system. Installing a new version may necessitate restarting the application at step 1001, but in this case logon details are not re-requested.
At step 1010 icon 704 is added to section 703 of taskbar 701 and the efficiency application is ready to use whenever the user requires it.
Figure 11 Step 908, at which an efficiency boost is performed, is detailed in Figure 11. At step 1101 the user is warned that data loss may occur through use of the efficiency application. Generally, processes belonging to applications are considered non-essential. If the user does not save any data being worked on then it will be lost. However, the user does not need to actually close the applications.
At step 1102 a list of all processes and services that are running is obtained by interrogating operating system data 506, and at step 1103 a boost list request 603 is sent to the remote server with which the application is logged on. This request includes an indication of the operating system. At step 1104 a boost list 607 is received from the remote server. The procedure by which the remote server obtains this list is discussed with respect to Figure 14.
This comprises a list of all programs held on database 608 that are relevant to the indicated operating system, marked either as boostable (non-essential) or non-boostable (essential), along with any further information required for each program. In alternative embodiments, the boost list may comprise for example only non-essential programs.
Alternatively, the boost request could include a list of programs running on computer 103 and the boost list could include only non-essential programs that are actually running. However, the described embodiment puts least strain on the database servers by using the simplest query.
At step 1105 changes are made to the boost list 607 as specified in the user settings. For example, as described in Figure 8, the user may have indicated that programs relating to anti-virus software are not to be closed.
At step 1106 the programs on the amended boost list are removed from memory, as will be detailed further in Figure 12.
Figure 12 Figure 12 details step 1106 at which programs on the amended boost list are removed from memory. At step 1201 the first program on the amended boost list that is marked as boostable is selected. At step 1202 the program is removed from the list of running programs obtained at step 1102, if it appears on that list. At step 1203 a question is asked as to whether that program is actually running on computer 103. In this embodiment most of the boost list will comprise progams that are not running, and even if, as in other embodiments, the boost list comprises only programs that were running on computer 103 at the time of the boost request, the closure of some programs will cause the closure of others, and therefore it may be that the program is no longer running. Thus if the question is answered in the negative control is directed to step 1210 for selection of the next program.
If the question asked at step 1203 is answered in the affirmative, to the effect that the program is running, then at step 1204 the location of the instructions for the program, ie the executable file, is identified and logged in efficiency application data 509, along with any extra data in the boost list for that program.
At step 1205 a CLOSE command is sent to the program. In many cases this will cause the program to close itself. It will purge its data from memory, possibly including saving it to hard drive, close other programs that it has started, and eventually close itself. However, it does not always work, particularly if a process is awaiting user input or has crashed. A question is therefore asked at step 1206 after a suitable delay as to whether the program has closed, and if not a KILL command is sent at step 1207, which should take the matter out of the hands of the program and cause the operating system to shut it down, removing it and its data from memory. Thus at step 1208 a question is asked, after a suitable delay, as to whether the program has closed, and if not an error is logged at step 1209 in efficiency application data 509.
At this stage, or if the "CLOSE" or "KILL" commands were successful, or following an indication at step 1203 that the program is not running, interface 705 is updated at step 1210 if appropriate. This involves changing the values in counters 707 to 710 and gauge 711.
At step 1211 a question is asked as to whether there is another program to close, and if this question is answered in the affirmative then Control is then returned to step 1201 and the next program is selected.
Alternatively, if the question asked at step 1211 is answered in the negative, then at step 1212 the log of program locations is written to hard drive 312 and purged from memory. At step 1213 the log of errors, if any, is sent to the remote server and also purged. This log of errors includes any programs remaining on the list of running programs obtained at step 1102. If any programs remain on it, then they were not on the boost list. Such programs may be unknown to the system administrators and should be added to the database. If a large number of computers report a new program in a short space of time, it is possible that that program may be malicious, such as viral software or malware. It is therefore possible that this system may provide an early warning of malicious programs.
Thus at the end of step 1106 all non-essential programs and their data have been removed from memory. Optionally, efficiency application may then monitor the usage of computer 103 and send information back to remote server 128 indicating the applications that are running on computer 103 while the computer is boosted. This information can be useful to the administrators of the system, for example to tailor the application to users of particular types of programs, or to target advertising in banner section 713 to a particular user.
Different operating systems have different commands for closing programs, and therefore the CLOSE and KILL commands may be replaced by one or more other commands. In this embodiment, the CLOSE command is preferred initially because it allows a program to close itself, and may not result in a loss of data. KILL is less tidy and may well lose data.
The steps shown in this figure may more efficiently be carried out by several threads running in parallel, given the requirement to wait and check if a program has closed.
Figure 13 Step 911, at which stopped programs are restarted, is detailed in Figure 13. At step 1301 the locations log saved at step 1211, containing the locations of all stopped programs, is loaded into memory, and at step 1302 the first entry in the log is selected. At step 1303 a question is asked as to whether this program is already running. The program may have been started by another program, so if this question is answered in the negative control is forwarded to step 1308 for selection of the next entry.
If the question is answered in the negative then at step 1304 a question is asked as to whether the log entry contains a warning. This is a piece of information included with the boost list indicating that the program is malicious.
If this question is answered in the affirmative then at step 1305 user input is requested as to whether the program should be restarted. If the user gives an answer in the negative, control is forwarded to step 1308 for selection of the next entry. If a log entry does contain a warning, the user may also be alerted to the existence of suitable antivirus or anti-adware applications that can be obtained for free or purchased.
However, if this question is answered in the affirmative, or if the entry contains no warning, then at step 1306 the program is loaded into memory from the indicated location. A question is then asked at step 1308 as to whether there is another entry in the log, and if so control is returned to step 1302 and the next entry is selected. Alternatively, all programs have been reopened and step 911 is completed.
Figure 14 Figure 14 details steps carried out by the remote server 128, which acts as an intermediary between computer 103 and database server 131. Servers 129 and 130 carry out similar steps. The thread shown in Figure 14 is carried out for each computer connected to server 128.
At step 1401 a logon request 601 is received from a computer such as computer 103. At step 1402 a question is asked as to whether the logon details are valid. This step may comprise obtaining user details from database 608. If this question is answered in the negative an error is returned and the process is stopped at step 1403. Another logon request may be received from the same computer but it will be handled by a new instance of the thread. If the logon details are valid, including the case where the user is a guest and no password is required, then at step 1404 a session is created.
At step 1405 personal settings, if any, are obtained from user database 608 and sent to computer 103. At step 1406 a question is asked as to whether the version number indicated by computer 103 is the latest version of the application for the indicated operating system, and if this question is answered in the negative the latest version is sent at step 1407.
At step 1408 a boost list request 603 is received. At step 1409 a data request 604 is sent to database server 131. Database server produces a boost list 606, which 128 receives 606 at step 1410 and sends, as boost list 607, to computer 103 at step 1411. The computer then uses this to close programs, as detailed in the previous figures. At step 1412 a log of errors may be received, indicating programs that were hard to close and programs running on computer 103 that were not on the boost list. Programs running on a computer that are not in database 608 can therefore be flagged to administrators. This enables administrators to keep the programs database up to date. Fruther, a large number of occurrences of an unknown program could indicate a malicious program such as a virus.
If another boost list request is received, steps 1408 to 1412 are repeated. Alternatively, at step 1413 a logoff request is received and at step 1414 the session is closed. A session may also be closed after a set period of time, known as a timeout.

Claims (30)

  1. Claims 1. Apparatus for data processing, comprising a processor, memory, storage and a network connection, wherein a plurality of sets of instructions, each corresponding to one of a plurality of programs, is stored in said storage and said processor is configured to: load said sets of instructions from said storage into said memory; obtain an indication from a remote server identifying a first program as nonessential; close said first program and remove its corresponding set of instructions from said memory; and reload the set of instructions corresponding to said first program into said memory from said storage.
  2. 2. Apparatus according to claim 1, wherein said processor is further configured to identify the location of the set of instructions for said first program within said storage before closing said first program.
  3. 3. Apparatus according to either of claims I or 2, wherein said apparatus includes a manual input and said processor is configured to close said first program in response to a first user command received via said manual input.
  4. 4. Apparatus according to any of claims I to 3, wherein said processor is configured to reload said set of instructions in response to a second user command received via said manual input.
  5. 5. Apparatus according to any of claims I to 4, wherein said processor is configured to obtain an indication identifying said first program as nonessential by: obtaining a list of non-essential programs from said server; and identifying a condition to the effect that said first program appears on said list.
  6. 6. Apparatus according to any of claims I to 4, wherein said processor is configured to obtain an indication identifying said first program as nonessential by: creating a first list comprising said plurality of programs; sending said first list to said server; and receiving a second list of nonessential programs from said server, wherein said second list is a subset of said first list and comprises said first program.
  7. 7. Apparatus according to any of claims I to 6 wherein said processor is configured to identify, close and reload a plurality of non-essential programs.
  8. 8. Apparatus for data processing, comprising a computer, a server, and a network connecting said computer and server, said computer comprising a first processor, a a first memory, a first storage and a first network connection connected to said network, and said server comprising a second processor, a second memory, a second storage and a second network connection connected to said network, wherein: a plurality of sets of instructions, each corresponding to one of a plurality of programs, is stored in said first storage; said first processor is configured to: load said sets of instructions from said first storage into said first memory, obtain an indication from said server, via said first network connection, identifying a first program as nonessential, close said first program and remove its corresponding set of instructions from said first memory, and reload the set of instructions corresponding to said first program into said first memory from said first storage; and said second processor is configured to: receive from said computer, via said second network connection, a request to indicate non-essential programs, and send said indication via said second network connection.
  9. 9. Apparatus according to claim 8, wherein said first processor is further configured to identify the location of the set of instructions for said first program within said first storage before closing said first program.
  10. 10. Apparatus according to either of claims 8 or 9, wherein said computer includes a manual input and said first processor is configured to close said first program in response to a first user command received via said manual input.
  11. 11. Apparatus according to any of claims 8 to 10, wherein said first processor is configured to reload said set of instructions in response to a second user command received via said manual input.
  12. 12. Apparatus according to any of claims 8 to 11, wherein said first processor is configured to obtain an indication identifying said first program as non-essential by obtaining a list of programs from said server in which said first program is marked as nonessential.
  13. 13. Apparatus according to any of claims 8 to 12, wherein said second processor is configured to send said indication by: retrieving a list of known non-essential programs from said second storage; and sending said list of known non-essential programs.
  14. 14. Apparatus according to any of claims 8 to 11, wherein said request to indicate non-essential programs comprises a first list comprising said plurality of programs, and said second processor is configured to send said indication by: querying data stored in said second storage to determine whether any of said plurality of programs is non-essential, thus creating a second list comprising a subset of said plurality of programs that are non-essential; and sending said second list.
  15. 15. Apparatus according to claim 14, wherein said data stored in said second storage lists essential and non-essential programs, and said second processor is configured to: identify a condition to the effect that one of said plurality of programs is not listed in said data; and send a query, via said network connection, to said computer to ask whether it should be listed
  16. 16. Apparatus according to any of claims 8 to 15 wherein said processor is configured to identify, close and reload a plurality of non-essential programs.
  17. 17. A method of speeding up data processing in a computer, comprising the steps of: loading a plurality of sets of instructions from storage into said memory, thereby starting a plurality of corresponding programs; obtaining an indication from a remote server identifying a first program as nonessential; closing said first program and removing its corresponding set of instructions from memory; and reloading the set of instructions corresponding to said first program into memory from storage.
  18. 18. A method according to claim 17, further including the step of identifying the location of the set of instructions for said first program within said storage before closing said first program.
  19. 19. A method according to either of claims 17 or 18, wherein said first program is closed in response to a first user command.
  20. 20. A method according to any of claims 17 to 19, wherein said set of instructions is reloaded in response to a second user command.
  21. 21. A method according to any of claims 17 to 20, wherein said step of obtaining an indication identifying said first program as nonessential comprises the steps of: obtaining a list of non-essential programs from said server; and identifying a condition to the effect that said first program appears on said list.
  22. 22. A method according to any of claims 17 to 20, wherein said step of obtaining an indication identifying said first program as nonessential comprises the steps of: creating a first list comprising said plurality of programs; sending said first list to said server; and receiving a second list of nonessential programs from said server, wherein said second list is a subset of said first list and comprises said first program.
  23. 23. A method according to any of claims 17 to 22 wherein a plurality of non-essential programs are identified, closed and reloaded.
  24. 24. A computer-readable medium having computer-readable instructions executable by a computer such that, when executing said instructions, a computer will perform steps according to any of claims 17 to 23.
  25. 25. Instructions executable by a computer or by a network of computers such that when executing said instructions said computer(s) will perform methods as defined by any of claims 17 to 23.
  26. 26. A network server configured to download computer readable instructions according to any of claims 1710 23.
  27. 27. A computer system programmed to execute program instructions according to any of claims 17 to 23.
  28. 28. A computer for data processing substantially as herein described with reference to the accompanying Figures.
  29. 29. A server substantially as herein described with reference to the accompanying Figures.
  30. 30. Networked computer apparatus substantially as herein described with reference to the accompanying Figures.
GB0902288A 2009-02-12 2009-02-12 Removing non-essential programs identified by a server from memory Expired - Fee Related GB2458005B (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
GB0902288A GB2458005B (en) 2009-02-12 2009-02-12 Removing non-essential programs identified by a server from memory
US12/705,234 US8495637B2 (en) 2009-02-12 2010-02-12 Apparatus and method for temporarily freeing up resources in a computer
GB1002395.0A GB2467844B (en) 2009-02-12 2010-02-12 Temporarily freeing up resources in a computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0902288A GB2458005B (en) 2009-02-12 2009-02-12 Removing non-essential programs identified by a server from memory

Publications (3)

Publication Number Publication Date
GB0902288D0 GB0902288D0 (en) 2009-03-25
GB2458005A true GB2458005A (en) 2009-09-09
GB2458005B GB2458005B (en) 2010-01-20

Family

ID=40527207

Family Applications (2)

Application Number Title Priority Date Filing Date
GB0902288A Expired - Fee Related GB2458005B (en) 2009-02-12 2009-02-12 Removing non-essential programs identified by a server from memory
GB1002395.0A Expired - Fee Related GB2467844B (en) 2009-02-12 2010-02-12 Temporarily freeing up resources in a computer system

Family Applications After (1)

Application Number Title Priority Date Filing Date
GB1002395.0A Expired - Fee Related GB2467844B (en) 2009-02-12 2010-02-12 Temporarily freeing up resources in a computer system

Country Status (2)

Country Link
US (1) US8495637B2 (en)
GB (2) GB2458005B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2467844B (en) * 2009-02-12 2014-06-11 Gzero Ltd Temporarily freeing up resources in a computer system

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2465599B8 (en) * 2008-11-24 2010-11-10 1E Ltd Power management of computers.
US8627036B2 (en) * 2011-09-12 2014-01-07 Microsoft Corporation Memory management techniques
US9891916B2 (en) 2014-10-20 2018-02-13 Via Technologies, Inc. Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system
CN105354010B (en) * 2014-10-20 2018-10-30 威盛电子股份有限公司 Processor and method for executing hardware data by processor
US20180113735A1 (en) * 2016-10-21 2018-04-26 Mediatek Inc. Launch method for applications with early-time memory reclaim and electronic device
US10496307B1 (en) * 2016-12-30 2019-12-03 EMC IP Holding Company LLC Reaching a normal operating mode via a fastboot procedure
CN108920292A (en) * 2018-06-26 2018-11-30 河南孚点电子科技有限公司 A kind of calculator memory monitoring and managing method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04128936A (en) * 1990-09-20 1992-04-30 Nec Software Ltd Program execution environment changeover system
JPH09146784A (en) * 1995-11-27 1997-06-06 Fujitsu Ltd Work processing device and method
JP2004040172A (en) * 2002-06-28 2004-02-05 Anritsu Corp Public correspondence terminal equipment, management instrument and program start confinement system
US20050223352A1 (en) * 2004-03-30 2005-10-06 Kyocera Corporation Cell-phone terminal, program management method and computer program of same

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3110185B2 (en) 1993-01-18 2000-11-20 株式会社東芝 Computer system
US6938254B1 (en) * 1997-05-06 2005-08-30 Microsoft Corporation Controlling memory usage in systems having limited physical memory
US6012127A (en) * 1997-12-12 2000-01-04 Intel Corporation Multiprocessor computing apparatus with optional coherency directory
US6799283B1 (en) * 1998-12-04 2004-09-28 Matsushita Electric Industrial Co., Ltd. Disk array device
JP2000305795A (en) * 1999-04-20 2000-11-02 Nec Corp Parallel processor
US6622299B1 (en) * 1999-07-06 2003-09-16 International Business Machines Corporation Computer system, program product and method for dynamically providing an indication to a programmer of the efficiency of a program that is being written
WO2001063434A1 (en) * 2000-02-24 2001-08-30 Bops, Incorporated Methods and apparatus for dual-use coprocessing/debug interface
US7020766B1 (en) * 2000-05-30 2006-03-28 Intel Corporation Processing essential and non-essential code separately
US6721878B1 (en) * 2000-06-14 2004-04-13 Cypress Semiconductor Corp. Low-latency interrupt handling during memory access delay periods in microprocessors
US20040148601A1 (en) * 2000-08-02 2004-07-29 Kroening James L. Method and system for calculation and use of a disk image identifer
US20020091720A1 (en) * 2001-01-05 2002-07-11 Jun Liu Methods and arrangements for providing improved software version control in managed devices
US7246220B1 (en) * 2001-07-27 2007-07-17 Magnum Semiconductor, Inc. Architecture for hardware-assisted context switching between register groups dedicated to time-critical or non-time critical tasks without saving state
US6941135B2 (en) * 2001-08-13 2005-09-06 Qualcomm Inc. System and method for temporary application component deletion and reload on a wireless device
WO2003017023A2 (en) * 2001-08-14 2003-02-27 Quigo Technologies, Inc. System and method for extracting content for submission to a search engine
GB0203617D0 (en) * 2002-02-15 2002-04-03 Ibm Application window closure in response to event in parent window
US7228424B2 (en) * 2002-08-12 2007-06-05 Mossman Associates Inc Method and system for using optical disk drive as a biometric card reader for secure online user authentication
US7493478B2 (en) * 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US20070128899A1 (en) * 2003-01-12 2007-06-07 Yaron Mayer System and method for improving the efficiency, comfort, and/or reliability in Operating Systems, such as for example Windows
US7536536B1 (en) * 2003-12-15 2009-05-19 American Megatrends, Inc. Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device
EP1712098B1 (en) * 2004-02-02 2009-04-15 Nokia Corporation Method and device for ensuring the operating state of a mobile electronic terminal device
GB0423094D0 (en) * 2004-10-18 2004-11-17 Ttp Communications Ltd Interrupt control
US8266692B2 (en) * 2006-07-05 2012-09-11 Bby Solutions, Inc. Malware automated removal system and method
US7814295B2 (en) * 2007-05-18 2010-10-12 International Business Machines Corporation Moving processing operations from one MIMD booted SIMD partition to another to enlarge a SIMD partition
US8510743B2 (en) * 2007-10-31 2013-08-13 Google Inc. Terminating computer applications
US20100125850A1 (en) * 2008-11-20 2010-05-20 Harold Stevenson Hostettler Method and Systems for Processing Critical Control System Functions
GB2458005B (en) * 2009-02-12 2010-01-20 Gzero Ltd Removing non-essential programs identified by a server from memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04128936A (en) * 1990-09-20 1992-04-30 Nec Software Ltd Program execution environment changeover system
JPH09146784A (en) * 1995-11-27 1997-06-06 Fujitsu Ltd Work processing device and method
JP2004040172A (en) * 2002-06-28 2004-02-05 Anritsu Corp Public correspondence terminal equipment, management instrument and program start confinement system
US20050223352A1 (en) * 2004-03-30 2005-10-06 Kyocera Corporation Cell-phone terminal, program management method and computer program of same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2467844B (en) * 2009-02-12 2014-06-11 Gzero Ltd Temporarily freeing up resources in a computer system

Also Published As

Publication number Publication date
US8495637B2 (en) 2013-07-23
GB2467844B (en) 2014-06-11
GB0902288D0 (en) 2009-03-25
US20100205410A1 (en) 2010-08-12
GB2458005B (en) 2010-01-20
GB2467844A (en) 2010-08-18
GB201002395D0 (en) 2010-03-31

Similar Documents

Publication Publication Date Title
US8495637B2 (en) Apparatus and method for temporarily freeing up resources in a computer
US10140115B2 (en) Applying update to snapshots of virtual machine
US10437617B2 (en) Offline volume modifications
JP6195182B2 (en) Application scenario identification method, power consumption management method, apparatus, and terminal device
US8732287B2 (en) System for managing a virtualization solution and management server and method for managing the same
US9465697B2 (en) Provision of backup functionalities in cloud computing systems
US8046473B2 (en) Maintaining session states within virtual machine environments
US20130275979A1 (en) Delayed hardware upgrades in virtualization systems
WO2009022336A2 (en) System and method for managing a virtual machine environment
US8990797B2 (en) Method for improving the performance of computers by releasing computer resources
US10572108B2 (en) Hierarchical inventory tree operation
CN109308241B (en) Method and device for monitoring starting process of application program, terminal equipment and storage medium
US9697009B2 (en) Method for improving the performance of computers
JP2012078893A (en) Computer system and management computer
CN113590146B (en) Server and container upgrading method
US11032168B2 (en) Mechanism for performance monitoring, alerting and auto recovery in VDI system
US10698715B2 (en) Alert mechanism for VDI system based on social networks
US7392149B2 (en) Automatic software testing
JP2009075877A (en) Information processing system and monitoring method
WO2016177261A1 (en) Method and device for online upgrading module based on kernel virtual machine
US11190573B2 (en) Techniques for improving implementation of a remote browser within a local browser
US9804872B1 (en) Method for emulation of a virtual OS bookmark on a host desktop
CN103246544A (en) Virtual hardware drive terminal and method
US10140143B2 (en) Collection of guest status
US10877771B2 (en) Virtual machine booting using disk metadata

Legal Events

Date Code Title Description
732E Amendments to the register in respect of changes of name or changes affecting rights (sect. 32/1977)

Free format text: REGISTERED BETWEEN 20180308 AND 20180314

PCNP Patent ceased through non-payment of renewal fee

Effective date: 20230212