Application execution environment for a small device with partial program loading by a resident operating system
First Claim
1. A method for executing a software application in a random access memory of an integral portable system having a processor and a permanently resident operating system, so as to limit a random access memory capacity required while the processor executes the software application, comprising the steps of:
- (a) providing application code for a single application that is divided into specific software components, said software components including variables and an event handler;
(b) designating a first portion of the random access memory to contain variables and any common routines, and designating a second portion of the random access memory as an event handler area, and from a storage memory included in the integral portable system that is not used for execution of the application, under control of the permanently resident operating system, loading into the first portion of the random access memory only the variables and into the second portion of the random access memory, any event handler for the software application, which are required in executing at least one function of the application, said random access memory having a capacity that is less than that required to load all of the software components for the application, said storage memory having stored therein all of the software components for the application;
(c) executing the software components that have been loaded into the random access memory using the processor;
(d) detecting a change in a state of the system and a new event with the processor, while the processor is executing the software components loaded into the random access memory; and
(e) in response to either the change in the state of the system or the new event, and under the control of the permanently resident operating system, loading another software component into the random access memory from the storage memory to replace at least one of the software components previously stored therein, for execution by the processor and repeating steps (c) through (e) until execution of the software application is terminated.
2 Assignments
0 Petitions
Accused Products
Abstract
Small application programs called “applets” are defined by pseudo-code (p-code) instructions. Each applet is divided into software components that are executed by a processor, operating as a state machine. The applets are originally written in a high level programming language and then converted into the p-code, for downloading into a non-volatile read/write memory of a portable combination pager and personal information manager (PIM) device that includes the processor. In this device only 1-2 Kbytes of static random access memory (RAM) are available to load the p-code of applets for execution by the processor. The software components include variables and event handlers that respond to events such as key presses of buttons disposed on a control panel of the device. The variables include persistent variables that are stored in memory between invocations of an applet, invocation variables that are store in RAM during execution of an applet, and state variables that are only stored in RAM during a specific state of the applet. Event variables are available for processing of a specific event, but are replaced by different event variables when a different event must be processed. A kernel comprising a portion of the operating system for the device serves as a p-code interpreter, producing machine instructions from the p-code loaded into RAM, for execution by the processor. Accordingly, applets, which comprise only a few kilobytes of p-code, are executed by loading only a few of the software components into RAM at a time.
140 Citations
34 Claims
-
1. A method for executing a software application in a random access memory of an integral portable system having a processor and a permanently resident operating system, so as to limit a random access memory capacity required while the processor executes the software application, comprising the steps of:
-
(a) providing application code for a single application that is divided into specific software components, said software components including variables and an event handler;
(b) designating a first portion of the random access memory to contain variables and any common routines, and designating a second portion of the random access memory as an event handler area, and from a storage memory included in the integral portable system that is not used for execution of the application, under control of the permanently resident operating system, loading into the first portion of the random access memory only the variables and into the second portion of the random access memory, any event handler for the software application, which are required in executing at least one function of the application, said random access memory having a capacity that is less than that required to load all of the software components for the application, said storage memory having stored therein all of the software components for the application;
(c) executing the software components that have been loaded into the random access memory using the processor;
(d) detecting a change in a state of the system and a new event with the processor, while the processor is executing the software components loaded into the random access memory; and
(e) in response to either the change in the state of the system or the new event, and under the control of the permanently resident operating system, loading another software component into the random access memory from the storage memory to replace at least one of the software components previously stored therein, for execution by the processor and repeating steps (c) through (e) until execution of the software application is terminated. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
(a) a persistent variable that is stored between invocations of the software application;
(b) an invocation variable that is stored in the random access memory during execution of the software application and retained between changes in state of the system, but is lost when the software application terminates;
(c) a state variable that is stored in the random access memory during a specific state of the software application, but is replaced when a state of the system changes; and
(d) an event variable that is stored in the random access memory while an event is being processed, but is replaced by a different event variable when a different event must be processed.
-
-
3. The method of claim 2, wherein any of the variables except the event variable are able to have an initial value when loaded into the random access memory.
-
4. The method of claim 2, wherein:
-
(a) if a new event occurs while the system has not changed state, the event variable and an event handler for the new event are loaded into the random access memory, replacing a previously loaded event variable and event handler; and
(b) if a new event occurs when the system has changed state, the state variable, the event variable, and the event handler for the new event are loaded into the random access memory, replacing a previously loaded state variable, event variable, and event handler.
-
-
5. The method of claim 1, wherein an operating system kernel specifies an order in which the variables are loaded into the random access memory during execution of the software application by the processor, so as to ensure that required software components are loaded when needed, an minimizes overall memory usage so that a maximum number of applets can be concurrently executed.
-
6. The method of claim 1, wherein a main entry routine is initially executed by the processor when execution of the software application is invoked by the user, said main entry routine implementing at least one task before an event is processed by the processor.
-
7. The method of claim 1, wherein the software components include a common code that comprises at least one routine executed by a plurality of different event handlers loaded into the random access memory at different times while the software application is being executed by the processor.
-
8. The method of claim 1, wherein only a portion of the random access memory is used for storing software components that comprise the software application.
-
9. The method of claim 1, wherein the software application comprises a pseudo-code that is interpreted by the processor when loaded into the random access memory, said pseudo-code being substantially smaller than corresponding machine language instructions and being processor independent.
-
10. An integral portable system for executing a software application in a limited memory environment, comprising:
-
(a) a processor that executes application code comprising the software application, said application code having a plurality of software components;
(b) a storage memory included in the integral portable system for storing all of the application code until invoked by a user of the integral portable system and for storing machine language instructions, including machine language instructions of a permanently resident operating system, that determine how the processor interprets and processes the application code, said storage memory not being used for storing the application code when executed by the processor;
(c) a volatile memory included in the integral portable system and having a storage capacity smaller than that required to hold all of the application code comprising the software application and substantially smaller than a storage capacity of the storage memory; and
(d) said processor responding to the machine language instructions by;
(i) loading into the volatile memory from the storage memory, only those portions of the software components required to perform a single step in a process leading to completion of at least one function of the application, wherein the loading of said portions of the software components is under control of the permanently resident operating system;
(ii) executing the software components that have been loaded into the volatile memory;
(iii) detecting a change in a state of the system and a new event with the processor while the processor is executing the software components loaded into the volatile memory; and
(iv) in response to either the change in the state of the system or the new event, loading another software component into the volatile memory from the storage memory for execution by the processor, and repeating steps (d)(ii) through (d)(iv) until execution of the software application is terminated. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
(a) a persistent variable that is stored between invocations of the software application;
(b) an invocation variable that is stored in the volatile memory during execution of the software application and retained between changes in state of the system, but is lost when the software application terminates;
(c) a state variable that is stored in the volatile memory during a specific state of the software application, but is replaced when a state of the system changes; and
(d) an event variable that is stored in the volatile memory while an event is being processed, but is replaced by a different event variable when a different event must be processed.
-
-
12. The system of claim 11, wherein any of the variables except the event variable are able to have an initial value when loaded into the volatile memory.
-
13. The system of claim 11, wherein:
-
(a) if a new event occurs while the system has not changed state, the event variable and an event handler for the new event are loaded into the volatile memory, replacing a previously loaded event variable and event handler; and
(b) if a new event occurs when the system has changed state, the state variable, the event variable, and the event handler for the new event are loaded into the volatile memory, replacing a previously loaded state variable, event variable, and event handler.
-
-
14. The system of claim 10, wherein the software application includes a kernel software component that specifies an order in which software components are loaded into the volatile memory during execution of the software application by the processor, so as to ensure that required software components are loaded when needed, but that the storage capacity of the volatile memory is not exceeded.
-
15. The system of claim 10, wherein a main entry routine is initially executed by the processor when execution of the software application is invoked by the user, said main entry routine implementing at least one task before and event is processed by the processor.
-
16. The system of claim 10, wherein the software components include a common code that comprises at least one routine executed by a plurality of different event handlers loaded into the volatile memory at different times while the software application is being executed by the processor.
-
17. The system of claim 10, wherein only a portion of the volatile memory is used for loading software components that are executed by the processor when executing the software application.
-
18. The system of claim 10, further comprising a housing in which the system is enclosed, said housing being sufficiently small and compact to enable it to be readily portable.
-
19. The system of claim 10, further comprising a display on which text and graphics produced by the software application are presented to the user.
-
20. The system of claim 10, wherein the storage memory comprises a read/write memory and a read only memory, said machine instructions being stored in the read only memory.
-
21. The system of claim 10, wherein the system is embodied in a relatively small, portable device having a defined functionality, and wherein the functionality of the device is substantially altered by the software application executed by the processor.
-
22. A limited resource computing device controlled by a permanently resident operating system, comprising:
-
(a) a processor;
(b) a first memory in which a complete application is stored, the complete application including a plurality of components that are capable of performing at least one function of the application when executed by the processor, said plurality of components including any common routines, variables, and event handlers required in executing said at least one function; and
(c) a second memory having a substantially smaller storage capacity than the first memory, the second memory including a first portion that is designated for loading any common routines and variables of the application, and a second portion that is designated as an event handler area, said first portion of the second memory, under control of the permanently resident operating system, being loaded only with any common routines and variables and said second portion, under control of the permanently resident operating system, being loaded only with any event handler required in executing said at least one function, irrespective of whether the components that are thus loaded into the second memory are capable of performing all steps required to complete said at least one function of the application when executed by the processor. - View Dependent Claims (23, 24, 25, 26, 27)
-
-
28. A method for executing a plurality of software applications on a system having a processor and a permanently resident operating system, so as to limit a random access memory capacity required while the processor executes the software applications, only one of which is in an active state at a time, comprising the steps of:
-
(a) providing application code for each of the software applications that is divided into specific software components, such that each software component is smaller than the random access memory capacity, and so that each software component when executed performs a single step in a process that leads to the completion of at least one function of one of the software applications;
(b) from a storage memory that is included in the system but is not used for execution of the software applications, and under control of the permanently resident operating system, loading into a random access memory that is included in the system, software components for at least one of the software applications selected from among the plurality of software applications, said software components that are loaded into the random access memory being required to perform a first sequential step in said at least one of the software applications, including a software application that is currently in an active state, said storage memory having a capacity to store all of the software components for said at least one of the software applications, and said random access memory having a capacity that is less than that required to load all of the software components for said at least one of the software applications into the random access memory at a single time;
(c) executing the software component in the random access memory for the software application that is currently in an active state using the processor;
(d) flushing any software component in the random access memory that has been executed, and loading into the random access memory one or more different software components for a selected software application that is currently in an active state, said different software component being required to perform a step in the selected software application; and
(e) repeating steps (c) through (e) as the software applications selected from among the plurality of software applications are successively put into an active state, until execution of the software applications is terminated. - View Dependent Claims (29, 30, 31, 32, 33, 34)
(a) a persistent variable that is stored between invocations of the software application;
(b) an invocation variable that is stored in the random access memory during execution of the software application and retained between changes in state of the system, but is lost when the software application terminates;
(c) a state variable that is stored in the random access memory during a specific state of the software application, but is replaced when a state of the system changes; and
(d) an event variable that is stored in the random access memory while an event is being processed, but is replaced by a different event variable when a different event must be processed.
-
-
31. The method of claim 28, wherein the software components further comprise a common code that includes at least one routine executed by a plurality of different event handlers loaded into the random access memory at different times while the software applications are being executed by the processor.
-
32. The method of claim 31, wherein the software components are written in a compact format, to minimize the random access memory required for execution of each component.
-
33. The method of claim 28, wherein the system is portable.
-
34. The method of claim 28, wherein each of the software applications comprises a pseudo-code that is interpreted by the processor when loaded into the random access memory and executed, said pseudo-code being substantially smaller than corresponding machine language instructions and being processor independent.
Specification