Real time processor capable of concurrently running multiple independent JAVA machines
First Claim
1. Apparatus for concurrently running a plurality of JAVA virtual machines (JVMs) on a single processor having a memory, the apparatus comprising:
- an initiation mechanism which creates in the memory, data and control structures for each of the plurality of JVMs, the initiation mechanism designating one of the plurality of JVMs as a master JVM;
a first timer which periodically forces a context switch from a JVM which is operating to the master JVM whereupon the master JVM services system interrupts and performs housekeeping duties; and
a second timer operational after a predetermined interval of time which causes the master JVM to perform a context switch to the next JVM to become operational.
1 Assignment
0 Petitions
Accused Products
Abstract
Multiple Java Virtual Machines (JVMs) operate on a single direct execution JAVA processor with each JVM operating in a separate time slice called a partition. Each JVM has its own data and control structures and is assigned a fixed area of memory. Each partition is also allotted a fixed period of time in which to operate, and, at the end of the allotted time, a context switch is forced to another JVM operating in the next partition. The context switch does not transfer control directly from one JVM to another JVM. Instead, at the end of a partition time period control is switched from the currently operating JVM to a “master JVM” during a time period called an “interstice.” The master JVM handles system interrupts and housekeeping duties. At the end of the interstice time period, the master JVM starts a proxy thread associated with the next JVM to become operational. The proxy thread handles JVM-specific interrupts and checks the status of the associated JVM. If the JVM appears operational the proxy thread transfers control to the JVM thread. Time intervals such as partition times and interstice times are enforced by hardware timers and memory accesses are checked by address comparison circuitry to prevent a system failure due to a malfunction in either the master JVM or another JVM.
524 Citations
25 Claims
-
1. Apparatus for concurrently running a plurality of JAVA virtual machines (JVMs) on a single processor having a memory, the apparatus comprising:
-
an initiation mechanism which creates in the memory, data and control structures for each of the plurality of JVMs, the initiation mechanism designating one of the plurality of JVMs as a master JVM;
a first timer which periodically forces a context switch from a JVM which is operating to the master JVM whereupon the master JVM services system interrupts and performs housekeeping duties; and
a second timer operational after a predetermined interval of time which causes the master JVM to perform a context switch to the next JVM to become operational. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method for concurrently running a plurality of JAVA virtual machines (JVMs) on a single processor having a memory, the method comprising the steps of:
-
(a) creating in the memory, data and control structures for each of the plurality of JVMs;
(b) designating one of the plurality of JVMs as a master JVM;
(c) using a first timer to periodically force a context switch from a JVM which is operating to the master JVM whereupon the master JVM services system interrupts and performs housekeeping duties; and
(d) using a second timer to determine when a predetermined interval of time has elapsed and, at the expiration of the predetermined time period to cause the master JVM to perform a context switch to the next JVM to become operational. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
(d1) activating a proxy thread after the predetermined interval of time has elapsed;
(d2) using the proxy thread to handle JVM-specific interrupts, check the status of the next JVM and start the next JVM.
-
-
13. The method according to claim 11 wherein the data and control structures for each of the plurality of JVMs are referenced by a single table and wherein step (c) comprises the step of:
(c1) causing a context switch by changing references from a first table associated with one JVM to a second table associated with a second JVM.
-
14. The method according to claim 11 further comprising the step of:
(e) limiting access wherein access to data and control structures for each JVM to the data and control structures created for the each JVM by comparing an address used to access the data and control structure to predetermined limits.
-
15. The method according to claim 14 wherein step (e) comprises the step of:
(e1) allowing the master JVM to access all data and control structures.
-
16. The method according to claim 11 wherein the first timer is a hardware driven timer.
-
17. The method according to claim 11 wherein the second timer is a hardware driven timer.
-
18. The method according to claim 11 wherein the processor is a JAVA direct execution processor.
-
19. The method according to claim 11 wherein the data and control structures include a control block which stores the status of a JVM during a context switch.
-
20. The method according to claim 11 wherein the processor is controlled by microcode and wherein the same microcode is used to execute each of the plurality of JVMs.
-
21. A computer program product for concurrently running a plurality of JAVA virtual machines (JVMs) on a single processor having a memory, the computer program product comprising a computer usable medium having computer readable program code thereon, including:
-
program code which creates in the memory, data and control structures for each of the plurality of JVMs;
program code which designates one of the plurality of JVMs as a master JVM;
program code which responds to a first timer to periodically force a context switch from a JVM which is operating to the master JVM whereupon the master JVM services system interrupts and performs housekeeping duties; and
program code which responds to a second timer to determine when a predetermined interval of time has elapsed and, at the expiration of the predetermined time period to cause the master JVM to perform a context switch to the next JVM to become operational. - View Dependent Claims (22, 23, 24, 25)
-
Specification