IP Library Granted Patent US 8,489,847
Granted Patent B2
US 8,489,847 · App. 12/459,963 · Granted Jul 16, 2013

Inter operating system memory hotswap to support memory growth in a non-virtualized system

Inventors: Kaushik Barde (Sunnyvale, CA); Gaurav Banga (Cupertino, CA)
Assignee: Hewlett-Packard Development Company, L.P.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,489,847
App. No.
12/459,963
Granted
Jul 16, 2013
Kind
B2
Abstract

A system memory is partitioned into a first paged partition for a first operating system and a second paged partition for a second operating system. The first paged partition is mapped into a first virtual memory partition, and the second paged partition is mapped into a second virtual memory partition. A subset of pages within the second virtual memory partition is marked as reclaimable by the first operating system to produce a set of marked pages. Responsive to a request by the first operating system for further memory, at least one reclaimable page selected from the set of marked pages is swapped out to a storage file, and the first operating system writes to the at least one reclaimable page.

Claims (64)

1. A method of operating a computer comprising:

partitioning a system memory comprising a plurality of system memory pages into first, second and third paged partitions wherein the first and the second paged partitions are mutually exclusive and further wherein the first and second paged partitions are subsets of the third paged partition;

creating a first page table to map the first paged partition into a first virtual memory partition;

performing an action selected from a group consisting of updating the first page table to map the second paged partition into a second virtual memory partition, and creating a second page table to map the second paged partition into a second virtual memory partition;

making the first virtual memory partition visible pursuant to a first memory service request from a first OS (operating system) loaded into the first paged partition;

making the second virtual memory partition visible pursuant to a second memory service request from a second OS loaded into the second paged partition;

marking a subset of pages within the second virtual memory partition as reclaimable by the first OS to produce a set of marked pages;

responsive to a request by the first OS for further memory:

swapping out to a storage file at least one reclaimable page selected from the set of marked pages and writing to the at least one reclaimable page by the first OS;

responsive to a request to reactivate the second OS, reinstating a saved hardware context, reinstating the at least one reclaimable page from the storage file, and passing control to the second OS.

2. The method of claim 1 wherein:

the first OS is an open source OS and the second OS is a non-open source OS.

3. The method of claim 1 wherein:

the request to reactivate the second OS is an ACPI (Advanced Configuration and Power Interface) System State change request.

4. The method of claim 1 wherein:

the storage file is a disk file.

5. The method of claim 1 wherein:

the first and second memory service requests are E820 requests.

6. The method of claim 1 , wherein the first OS and the second OS are different types of operating systems.

7. The method of claim 1 , wherein the request by the first OS for further memory is to request adding of portions of memory for use by the first OS.

8. A computer program product comprising:

at least one non-transitory computer-readable storage medium having instructions encoded therein, the instructions when executed by at least one processor causing said at least one processor to:

partition a system memory comprising a plurality of system memory pages into first, second and third paged partitions wherein the first and the second paged partitions are mutually exclusive and further wherein the first and second paged partitions are subsets of the third paged partition;

create a first page table to map the first paged partition into a first virtual memory partition;

perform an action selected from a group consisting of updating the first page table to map the second paged partition into a second virtual memory partition, and creating a second page table to map the second paged partition into a second virtual memory partition;

make the first virtual memory partition visible pursuant to a first memory service request from a first OS (operating system);

make the second virtual memory partition visible pursuant to a second memory service request from a second OS;

mark a subset of pages within the second virtual memory partition as reclaimable by the first OS to produce a set of marked pages;

responsive to a request by the first OS for further memory:

swap out to a storage file at least one reclaimable page selected from the set of marked pages and write to the at least one reclaimable page by the first OS;

responsive to a request to reactivate the second OS, reinstate a saved hardware context, reinstate the at least one reclaimable page from the storage file, and pass control to the second OS.

9. The computer program product of claim 8 wherein:

the request to reactivate the second OS is an ACPI (Advanced Configuration and Power Interface) System State change request.

10. The computer program product of claim 8 wherein:

the storage file is a disk file.

11. The computer program product of claim 8 , wherein the first OS and the second OS are different types of operating systems.

12. The computer program product of claim 8 , wherein the request by the first OS for further memory is to request adding of portions of memory for use by the first OS.

13. The computer program product of claim 8 , wherein the first OS is loaded into the first paged partition, and the second OS is loaded into the second paged partition.

14. An electronic device comprising:

a controller; and

a computer-readable storage medium having instructions encoded therein, the instructions when executed by the controller causing said controller to:

partition a system memory comprising a plurality of system memory pages into a first paged partition for a first operating system (OS), and a second paged partition for a second OS;

map the first paged partition into a first virtual memory partition;

map the second paged partition into a second virtual memory partition;

mark a subset of pages within the second virtual memory partition as reclaimable by the first OS to produce a set of marked pages;

responsive to a request by the first OS for further memory:

swap out to a storage file at least one reclaimable page selected from the set of marked pages and write to the at least one reclaimable page by the first OS;

responsive to a request to reactivate the second OS, reinstate a saved hardware context, reinstate the at least one reclaimable page from the storage file, and pass control to the second OS.

15. The electronic device of claim 14 , wherein the first OS and the second OS are different types of operating systems.

16. The electronic device of claim 14 , wherein the request by the first OS for further memory is to request adding of portions of memory for use by the first OS.

17. The electronic device of claim 14 , wherein the first OS is loaded into the first paged partition, and the second OS is loaded into the second paged partition.

18. A computer program product comprising:

at least one non-transitory computer-readable storage medium having instructions encoded therein, the instructions when executed by at least one processor causing said at least one processor to:

partition a system memory comprising a plurality of system memory pages into a first paged partition for a first operating system (OS), and a second paged partition for a second OS;

map the first paged partition into a first virtual memory partition;

map the second paged partition into a second virtual memory partition;

mark a subset of pages within the second virtual memory partition as reclaimable by the first OS to produce a set of marked pages;

responsive to a request by the first OS for further memory:

swap out to a storage file at least one reclaimable page selected from the set of marked pages and write to the at least one reclaimable page by the first OS;

responsive to a request to reactivate the second OS, reinstate a saved hardware context, reinstate the at least one reclaimable page from the storage file, and pass control to the second OS.

19. The computer program product of claim 18 , wherein the first OS and the second OS are different types of operating systems.

20. The computer program product of claim 18 , wherein the request by the first OS for further memory is to request adding of portions of memory for use by the first OS.

21. The computer program product of claim 18 , wherein the first paged partition is mutually exclusive of the second paged partition.

22. The computer program product of claim 18 , wherein the first OS is loaded into the first paged partition, and the second OS is loaded into the second paged partition.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 21, 2010
From: PHOENIX TECHNOLOGIES LTD.
To: HEWLETT-PACKARD COMPANY
Reel/Frame 024721/0319 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 10, 2009
From: BARDE, KAUSHIK; BANGA, GAURAV
To: PHOENIX TECHNOLOGIES LTD.
Reel/Frame 022985/0451 →
Continuity (2)
Provisional Application 61210578 · Mar 20, 2009
Related Publication 20100241821A1 · Sep 23, 2010