Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
First Claim
1. A computer system comprising:
- a plurality of processing modules, each processing module comprising a plurality of processors, groups of one or more processing modules being configured as separate partitions within the computer system, each partition operating under the control of a separate operating system;
a main memory within which each partition is assigned an exclusive memory window to which only the processing modules of that partition have access and in which the operating system of that partition operates;
each processing module further comprising;
a register that holds an offset (RLOS) from the base physical address of main memory to the start of the exclusive memory window assigned to the partition of which the processing module is a part; and
an adder for adding the offset (RLOS) to each reference by a processor of that processing module to a location within its physical address space, thereby relocating those references to their corresponding locations within the exclusive memory window.
14 Assignments
0 Petitions
Accused Products
Abstract
A computer system comprises a plurality of processing modules that can be configured into different partitions within the computer system, and a main memory. Each partition operates under the control of a separate operating system. At least one shared memory window is defined within the main memory to which multiple partitions have shared access, and each partition may also be assigned an exclusive memory window. Program code executing on different partitions enables those partitions to communicate with each other through the shared memory window. Means are also provided for mapping the physical address space of the processors in each partition to the respective exclusive memory windows assigned to each partition, so that the exclusive memory windows assigned to each partition appear to the respective operating systems executing on those partitions as if they all start at the same base address.
-
Citations
30 Claims
-
1. A computer system comprising:
-
a plurality of processing modules, each processing module comprising a plurality of processors, groups of one or more processing modules being configured as separate partitions within the computer system, each partition operating under the control of a separate operating system;
a main memory within which each partition is assigned an exclusive memory window to which only the processing modules of that partition have access and in which the operating system of that partition operates;
each processing module further comprising;
a register that holds an offset (RLOS) from the base physical address of main memory to the start of the exclusive memory window assigned to the partition of which the processing module is a part; and
an adder for adding the offset (RLOS) to each reference by a processor of that processing module to a location within its physical address space, thereby relocating those references to their corresponding locations within the exclusive memory window. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
(i) adds the offset (RLOS) to each reference by a processor in the partition to a location within the low memory range of its physical address space, thereby relocating those references to their corresponding locations within the exclusive memory window, and (ii) adds the offset minus the value representing the size of the memory hole (RLOS−
RCOS) to each reference by a processor in the partition to a location within the high memory range of its physical address space, thereby relocating those references to their corresponding locations within the exclusive memory window and reclaiming that portion of the exclusive memory window that would otherwise have corresponded to the memory hole.
-
-
5. The computer system recited in claim 1, wherein the main memory further comprises a shared memory window separate from the exclusive memory windows, and wherein each processing module of a given partition further comprises:
-
a register that holds an offset (SBASEOS) from the base address of the physical address space of the processors in said given partition to the start of a designated portion of that physical address space to which the shared memory window is to be mapped;
a register that holds an offset (SBASEMSU) from the base address of the main memory to the start of the shared memory window within the main memory; and
wherein said adder adds the difference between the offsets (SBASEMSU−
SBASEOS) to each reference by a processor in said given partition to a location within said designated portion, thereby relocating those references to their corresponding locations within the shared memory window of the main memory.
-
-
6. The computer system recited in claim 1, wherein ones of the partitions operate under the control of different operating systems.
-
7. The computer system recited in claim 1, wherein ones of the partitions operate under the control of different instances of a same operating system.
-
8. The computer system recited in claim 5 further comprising:
program code, executing on said plurality of partitions, that enables those partitions to communicate with each other through the shared memory window.
-
9. The computer system recited in claim 8, wherein ones of the partitions operate under the control of different operating systems.
-
10. The computer system recited in claim 8, wherein ones of the partitions operate under the control of different instances of a same operating system.
-
11. The computer system recited in claim 8, wherein said program code implements a process by which a sending partition generates an inter-processor interrupt on a receiving partition to signal the receiving partition that information is being transferred to it through the shared memory window.
-
12. The computer system recited in claim 11, wherein the shared memory window comprises a set of input queues associated with each partition, each input queue of the set associated with a given partition corresponding to another partition and storing entries representing communications from that other partition.
-
13. The computer system recited in claim 12, wherein the shared memory window further comprises a plurality of pages of memory that can be allocated to the partitions, as needed, to facilitate communication of information between them.
-
14. The computer system recited in claim 13, wherein each partition may have ownership rights in a particular page, and wherein the page has a header containing information that specifies which partitions have ownership rights in the page.
-
15. The computer system recited in claim 14, wherein the header of the page further comprises a lock field by which one partition may acquire exclusive access to a page in order to update ownership information in the header of the page, thereby providing a mechanism to synchronize multiple accesses to the page by different partitions.
-
16. The computer system recited in claim 15, wherein the shared memory window has a system-wide lock field associated with it by which one partition may acquire exclusive access to the shared memory pages in order to allocate one or more pages, thereby providing a mechanism to synchronize multiple requests for allocation of memory pages by different partitions.
-
17. The computer system recited in claim 15, wherein the ownership of a page can be updated by acquiring the lock field of that page, without having to acquire the system-wide lock field.
-
18. The computer system recited in claim 12, wherein in order for one partition (a sending partition) to communicate with another partition (a receiving partition), the program code on the sending partition:
-
(i) causes an entry to be created in the input queue of the receiving partition that corresponds to the sending partition; and
(ii) causes an inter-processor interrupt to be generated on the receiving partition to signal the receiving partition that the entry has been created in that input queue.
-
-
19. The computer system recited in claim 18, wherein when the inter-processor interrupt is detected on the receiving partition, the program code on the receiving partition:
-
(i) causes each of its input queues to be examined to determine which of the input queues contain entries representing communications from other partitions; and
(ii) causes any such entries to be extracted from the input queues that contain them.
-
-
20. The computer system recited in claim 12, wherein each input queue is capable of storing a pre-defined number of entries and contains an overflow flag that is caused to be set by a sending partition whenever the input queue becomes full, and which is reset by a receiving partition whenever entries are extracted from the input queue.
-
21. The computer system recited in claim 8, wherein the program code implements a polling process by which each partition polls an area within the shared memory window to determine whether any communications intended for it have been placed in the shared memory window by another partition.
-
22. The computer system recited in claim 21, wherein the area comprises a plurality of output queues, one for each partition, the output queue for a given partition indicating whether that partition has placed in the shared memory window any communications intended for any of the other partitions, each partition polling the output queues of the other partitions to determine whether those other partitions have placed any communications intended for it in the shared memory window.
-
23. The computer system recited in claim 22, wherein for any communications placed in the shared memory window by a sending partition and intended to be received by another partition, the output queue of the sending partition specifies the location within the shared memory window of a buffer containing that communication.
-
24. The computer system recited in claim 23, wherein each partition is allocated a separate pool of message buffers in which it may place communications intended for other partitions.
-
25. In a computer system comprising (i) a plurality of processing modules, each processing module comprising a plurality of processors, groups of one or more processing modules being configured as separate partitions within the computer system, each partition operating under the control of a separate operating system, and (ii) a main memory within which each partition is assigned an exclusive memory window to which only that partition has access and in which the operating system of that partition operates, a method for making the exclusive memory windows of each partition appear to their respective operating systems as having a same base physical address in the main memory, said method comprising, for each partition:
-
storing a value representing an offset (RLOS) from the base physical address of the main memory to the start of the exclusive memory window assigned to that partition; and
adding the offset (RLOS) to each reference by a processor in that partition to a location within its physical address space, thereby relocating those references to their corresponding locations within the exclusive memory window. - View Dependent Claims (26, 27, 28, 29, 30)
storing a value representing an offset (RLOS) from the base physical address of main memory to the start of the exclusive memory window assigned to that partition;
storing a value (RCOS) representing the size of the memory hole;
adding the offset (RLOS) to each reference by a processor in that partition to a location within the low memory range of its physical address space, thereby relocating those references to their corresponding locations within the exclusive memory window; and
adding the offset minus the size of the memory hole (RLOS−
RCOS) to each reference by a processor in that partition to a location within the high memory range of its physical address space, thereby relocating those references to their corresponding locations within the exclusive memory window and reclaiming that portion of the exclusive memory window that would otherwise have corresponded to the memory hole.
-
-
28. The method recited in claim 25, wherein the main memory further comprises a shared memory window separate from the exclusive memory windows, and wherein said method further comprises:
-
designating, on each partition, a portion of the physical address space of the processors of that partition to correspond to the shared memory window within the main memory; and
relocating any reference by a processor of a partition to a location within the designated portion of its physical address space to the corresponding location within the shared memory window within the main memory.
-
-
29. The method recited in claim 28, wherein said step of relocating a reference by a processor on a partition to the designated portion of its physical address to the corresponding location in the shared memory window, comprises:
-
storing a value representing an offset (SBASEOS) from the base address of the physical address space of the processor on that partition to the start of said designated portion of that physical address space;
storing a value representing an offset (SBASEMSU) from the base address of the main memory to the start of the shared memory window within the main memory; and
adding the difference between the stored offsets (SBASEMSU−
SBASEOS) to any reference by a processor in that partition to a location within the designated portion, thereby relocating those references to their corresponding locations within the shared memory window of the main memory.
-
-
30. The method recited in claim 25, wherein each exclusive memory window is made to appear to its respective operating system as having a base physical address of zero.
Specification