IP Library › Granted Patent US 8,930,662
Granted Patent B2
US 8,930,662 · App. 13/325,310 · Granted Jan 6, 2015

Management of multiple software images with shared memory blocks

Inventors: David Clerc (Verbier, CH); Jacques Fontignie (Onex, CH); Luis Garcés-Erice (Zurich, CH); Claudio Marinelli (Latina, IT); John G. Rooney (Zurich, CH); Marc V. Stückelberg (Cartigny, CH)
Assignee: International Business Machines Corporation
G06F9/441G06F12/02G06F8/63
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,930,662
App. No.
13/325,310
Granted
Jan 6, 2015
Kind
B2
Abstract

A data processing entity that includes a mass memory with a plurality of memory locations for storing memory blocks. Each of a plurality of software images includes a plurality of memory blocks with corresponding image addresses within the software image. The memory blocks of software images stored in boot locations of a current software image are relocated. The boot blocks of the current software image are stored into the corresponding boot locations. The data processing entity is booted from the boot blocks of the current software image in the corresponding boot locations, thereby loading the access function. Each request to access a selected memory block of the current software image is served by the access function, with the access function accessing the selected memory block in the associated memory location provided by the control structure.

Claims (80)

1. A computer implemented method for managing multiple software images on a data processing entity that includes a mass memory with a plurality of memory locations, each of the memory locations having a corresponding memory address within the mass memory, each of the software images including a plurality of memory blocks, each of the memory blocks having a corresponding image address within the software image, comprising:

storing a single version of each memory block of at least a subset of all of the software images into a corresponding memory location;

providing a control structure that associates each memory block with the memory location storing the single version of the memory block;

relocating the memory blocks stored in boot locations of a current software image, the boot locations of each software image being the memory locations having the memory addresses equal to the image addresses of boot blocks of the software image including the memory blocks required to boot the data processing entity up to load an access function adapted to access the memory blocks of the software image;

storing the boot blocks of the current software image into the corresponding boot locations;

booting the data-processing entity from the boot blocks of the current software image in the corresponding boot locations thereby loading the access function; and

serving, by the access function, each request to access a selected memory block of the current software image, the access function accessing the selected memory block in the associated memory location provided by the control structure.

2. The method according to claim 1 , wherein the mass memory includes an image portion for storing non-relocated memory blocks and a relocation portion for storing the relocated memory blocks, and wherein for each software image the control structure includes an offset map providing an indication of the memory address of the memory location in the image portion storing each non-relocated memory block, and a boot list providing an indication of the image addresses of the corresponding boot blocks.

3. The method according to claim 1 , wherein accessing the selected memory block includes reading the selected memory block from the mass memory by one of:

returning a default value responsive to the selected memory block not being stored in the mass memory, and

returning the selected memory block being retrieved from the associated memory location provided by the control structure responsive to the selected memory block being stored in the mass memory.

4. The method according to claim 1 , wherein accessing the selected memory block includes writing the selected memory block onto the mass memory by one of:

storing the selected memory block into a free memory location and associating the selected memory block with the free memory location in the control structure when the selected memory block is not stored in mass memory,

storing the selected memory block into the associated memory location provided by the control structure when the memory block stored in the associated memory location is used by the current software image only, and

storing the selected memory block into a free memory location and associating the selected memory block with the free memory location in the control structure when the memory block stored in the associated memory location is shared with at least another software image.

5. The method according to claim 4 , wherein the control structure includes a block map providing a block counter for each memory location indicative of a number of software images sharing the memory block stored in the memory location, the writing the selected memory block further including one of:

setting the block counter of the free memory location to one when the selected memory block is not stored in the mass memory, and

decreasing the block counter of the associated memory location and setting the block counter of the free memory location to one when the memory block stored in the associated memory location is shared with at least another software image.

6. The method according to claim 5 , further including, in response to a request to create a target software image from a source software image:

associating the memory location storing each memory block of the source software image with a corresponding memory block of the target software image in the control structure.

7. The method according to claim 6 , wherein the associating includes:

increasing the block counter of the memory location storing each memory block of the source software image by one.

8. The method according to claim 5 , further including, in response to a request to delete an obsolete software image:

removing the association of each memory block of the obsolete software image with the memory location storing the memory block of the obsolete software image in the control structure.

9. The method according to claim 8 , wherein removing the association includes:

decreasing the block counter of the memory location storing each memory block of the obsolete software image by one.

10. The method according to claim 1 , further including, in response to a request to switch to the current software image from a previous software image:

restoring the memory blocks being relocated from the boot locations of the previous software image into the boot locations of the previous software image before relocating the memory blocks stored in the boot locations of the current software image.

11. The method according to claim 1 , further including, in response to a request to export a selected software image onto an external device:

reading each memory block of the selected software image, the reading including one of setting the memory block to a further default when the memory block of the selected software image is not stored in a memory location and retrieving the memory block of the selected software image from the associated memory location provided by the control structure otherwise, and

copying each memory block of the selected software image onto the external device.

12. The method according to claim 1 , further including, in response to a request to import an external software image from a further external device:

retrieving each memory block of the external software image from the further external device, and

writing each memory block of the external software image by storing the memory block of the external software image into a further free memory location and associating the memory block of the external software image with the further free memory location in the control structure.

13. The method according to claim 1 , further including:

requesting a deployment of a new software image from an external source onto the data-processing entity,

downloading the boot blocks of the new software image from the external source onto the data-processing entity,

relocating the memory blocks stored in the boot locations of the new software image,

storing the boot blocks of the new software image into the corresponding boot locations,

booting the data-processing entity from the boot blocks of the new software image in the corresponding boot locations thereby loading a streaming function adapted to deploy the new software image, and

serving each request of reading a further selected memory block of the new software image by the streaming function, the streaming function downloading the further selected memory block from the external source, storing the further selected memory block into a still further free memory location, and performing one of:

associating the further selected memory block with the still further free memory location in the control structure when the further selected memory block is not stored in a memory location, and

reading the further selected memory block from the associated memory location provided by the control structure otherwise.

14. A computer program product comprising:

a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising:

computer readable program code configured for:

managing multiple software images on a data processing entity that includes a mass memory with a plurality of memory locations, each of the memory locations having a corresponding memory address within the mass memory, each of the software images including a plurality of memory blocks, each of the memory blocks having a corresponding image address within the software image, wherein the managing includes:

storing a single version of each memory block of at least a subset of all of the software images into a corresponding memory location,

providing a control structure that associates each memory block with the memory location storing the single version of the memory block,

relocating the memory blocks stored in boot locations of a current software image, the boot locations of each software image being the memory locations having the memory addresses equal to the image addresses of boot blocks of the software image including the memory blocks required to boot the data processing entity up to load an access function adapted to access the memory blocks of the software image,

storing the boot blocks of the current software image into the corresponding boot locations,

booting the data-processing entity from the boot blocks of the current software image in the corresponding boot locations thereby loading the access function, and

serving, by the access function, each request to access a selected memory block of the current software image by the access function, the access function accessing the selected memory block in the associated memory location provided by the control structure.

15. The computer program product of claim 14 , wherein the mass memory includes an image portion for storing non-relocated memory blocks and a relocation portion for storing the relocated memory blocks, and wherein for each software image the control structure includes an offset map providing an indication of the memory address of the memory location in the image portion storing each non-relocated memory block, and a boot list providing an indication of the image addresses of the corresponding boot blocks.

16. The computer program product of claim 14 , wherein accessing the selected memory block includes reading the selected memory block from the mass memory by one of:

returning a default value responsive to the selected memory block not being stored in the mass memory, and

returning the selected memory block being retrieved from the associated memory location provided by the control structure responsive to the selected memory block being stored in the mass memory.

17. The computer program product of claim 14 , wherein accessing the selected memory block includes writing the selected memory block onto the mass memory by one of:

storing the selected memory block into a free memory location and associating the selected memory block with the free memory location in the control structure when the selected memory block is not stored in mass memory,

storing the selected memory block into the associated memory location provided by the control structure when the memory block stored in the associated memory location is used by the current software image only, and

storing the selected memory block into a free memory location and associating the selected memory block with the free memory location in the control structure when the memory block stored in the associated memory location is shared with at least another software image.

18. The computer program product of claim 14 , wherein the computer readable program code is further configured for:

requesting a deployment of a new software image from an external source onto the data-processing entity,

downloading the boot blocks of the new software image from the external source onto the data-processing entity,

relocating the memory blocks stored in the boot locations of the new software image,

storing the boot blocks of the new software image into the corresponding boot locations,

booting the data-processing entity from the boot blocks of the new software image in the corresponding boot locations thereby loading a streaming function adapted to deploy the new software image, and

serving each request of reading a further selected memory block of the new software image by the streaming function, the streaming function downloading the further selected memory block from the external source, storing the further selected memory block into a still further free memory location, and performing one of:

associating the further selected memory block with the still further free memory location in the control structure when the further selected memory block is not stored in a memory location, and

reading the further selected memory block from the associated memory location provided by the control structure otherwise.

19. A computer system comprising:

a processor configured for:

managing multiple software images on a data processing entity that includes a mass memory with a plurality of memory locations, each of the memory locations having a corresponding memory address within the mass memory, each of the software images including a plurality of memory blocks, each of the memory blocks having a corresponding image address within the software image, wherein the managing includes:

storing a single version of each memory block of at least a subset of all of the software images into a corresponding memory location,

providing a control structure that associates each memory block with the memory location storing the single version of the memory block,

relocating the memory blocks stored in boot locations of a current software image, the boot locations of each software image being the memory locations having the memory addresses equal to the image addresses of boot blocks of the software image including the memory blocks required to boot the data processing entity up to load an access function adapted to access the memory blocks of the software image,

storing the boot blocks of the current software image into the corresponding boot locations,

booting the data-processing entity from the boot blocks of the current software image in the corresponding boot locations thereby loading the access function, and

serving, by the access function, each request to accessing a selected memory block of the current software image, the access function accessing the selected memory block in the associated memory location provided by the control structure.

20. The system of claim 19 , wherein the mass memory includes an image portion for storing non-relocated memory blocks and a relocation portion for storing the relocated memory blocks, and wherein for each software image the control structure includes an offset map providing an indication of the memory address of the memory location in the image portion storing each non-relocated memory block, and a boot list providing an indication of the image addresses of the corresponding boot blocks.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE MISSING "E" FROM INVENTOR LUIS GARCES-ERICE NAME. NEW ASSIGNMENT WITH HIS NAME CORRECTLY SPELLED. PREVIOUSLY RECORDED ON REEL 027588 FRAME 0629. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 27, 2012
From: GARCES-ERICE, LUIS
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 027934/0610 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2012
From: CLERC, DAVID; FONTIGNIE, JACQUES; GARCES-ERICE, LUIS; MARINELLI, CLAUDIO; ROONEY, JOHN G.; STUCKELBERG, MARC V.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 027588/0629 →
Priority Claims (1)
EP 10194864 · Dec 14, 2010 · regional
Continuity (1)
Related Publication 20120151202A1 · Jun 14, 2012