Computer system having shared address space among multiple virtual address spaces
First Claim
1. A computer system, comprising:
- a processor;
a memory;
an operating system for supporting concurrent execution of a plurality of tasks on said computer system, said operating system comprising a plurality of instructions executable on said processor, said plurality of instructions maintaining a plurality of data structures supporting operating system functions performed by said plurality of instructions executing on said processor;
wherein said operating system allocates a plurality of overlapping task virtual address spaces, each task virtual address space being allocated to a respective task;
wherein said operating system allocates, within a plurality of said task virtual address spaces, a shared address space region, said shared address space region occupying the same virtual address range within each respective task virtual address space, said shared address space region being less than the entire task virtual address space; and
wherein said operating system allocates, within said virtual address range occupied by said shared address space region, a plurality address ranges assigned to respective addressable entities, each respective one of said range of addresses being uniquely and persistently assigned to its respective addressable entity, and wherein the virtual address range of an addressable entity shared by two or more tasks resides at the same address within each task'"'"'s shared address space region.
1 Assignment
0 Petitions
Accused Products
Abstract
A multi-tasking computer operating system allocates a respective virtual address space to each task. A portion of virtual address space is reserved as a shared address space (SAS) region, the SAS region occupying the same range of virtual addresses in the virtual address space of each task. Certain classes of data intended for sharing among multiple tasks are assigned unique and persistent addresses in the range of the shared address space region. Preferably, certain facilities are added to a conventional base operating system to support the SAS region and associated function. These include a join facility for initiating a task to the SAS region, an attach facility for attaching blocks of memory within the SAS region, and a paging facility for retrieving a page within the SAS region from storage. In this manner, it is possible for a multi-tasking multiple virtual address space computer system to assume the advantages of a single level store computer system when performing certain tasks.
124 Citations
31 Claims
-
1. A computer system, comprising:
-
a processor;
a memory;
an operating system for supporting concurrent execution of a plurality of tasks on said computer system, said operating system comprising a plurality of instructions executable on said processor, said plurality of instructions maintaining a plurality of data structures supporting operating system functions performed by said plurality of instructions executing on said processor;
wherein said operating system allocates a plurality of overlapping task virtual address spaces, each task virtual address space being allocated to a respective task;
wherein said operating system allocates, within a plurality of said task virtual address spaces, a shared address space region, said shared address space region occupying the same virtual address range within each respective task virtual address space, said shared address space region being less than the entire task virtual address space; and
wherein said operating system allocates, within said virtual address range occupied by said shared address space region, a plurality address ranges assigned to respective addressable entities, each respective one of said range of addresses being uniquely and persistently assigned to its respective addressable entity, and wherein the virtual address range of an addressable entity shared by two or more tasks resides at the same address within each task'"'"'s shared address space region. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
a base operating system portion, said base operating system portion including instructions supporting concurrent execution of a plurality of tasks and concurrent allocation of a plurality of overlapping task virtual address spaces; and
a shared address space server portion, said shared address space server portion including instructions supporting said shared address space region, said shared address space server portion responding to calls from said base operating system portion.
-
-
5. The computer system of claim 1, wherein said operating system further allocates discrete blocks of virtual address space within said shared address space region, said data structures including at least one data structure which records blocks allocated within said shared address space region.
-
6. The computer system of claim 5,
wherein said at least one data structure which records blocks allocated within said shared address space region further associates access control information with each respective block allocated within said shared address space region, said access control information including whether a task is authorized to access the respective block; - and
wherein said operating system grants a task access to a block within said shared address space region based on the access control information associated with said block.
- and
-
7. The computer system of claim 6, wherein said access control information associated with each respective block comprises an access control list associated with each respective block.
-
8. The computer system of claim 5, wherein said operating system further allocates physical storage to selective portions of virtual address space within a block, said data structures including at least one data structure which records physical storage allocated within the virtual address space of a block.
-
9. A method of operating a multi-tasking computer system, said multi-tasking computer system concurrently executing a plurality of tasks, said method comprising the steps of:
-
defining a plurality of overlapping virtual address space mappings, each mapping being associated with a respective task executing on said multi-tasking computer system;
designating a fixed portion of a plurality of said virtual address space mappings as a shared address region, said fixed portion being less than the entire virtual address space, said shared address region occupying the same range of virtual addresses in each respective virtual address space mapping;
assigning to each of a first set of addressable entities in said computer system a respective range of addresses in said shared address region, each range of addresses assigned to an addressable entity being uniquely and persistently assigned to the entity, wherein the address range of an addressable entity shared by two or more tasks resides at the same address within each task'"'"'s shared address space region; and
assigning to each of a second set of addressable entities in said computer system at least one respective range of addresses, each respective range of addresses being in a respective virtual address space mapping, said ranges lying outside said shared address region. - View Dependent Claims (10, 11, 12, 13, 14, 15)
receiving requests from a plurality of tasks to designate a fixed portion of the respective virtual address space mapping of each requesting task as a shared address region; and
designating a fixed portion of the respective virtual address space mapping of each requesting task as a shared address region, in response to said requests.
-
-
13. The method of claim 9, wherein said computer system includes at least one processor defining a virtual address space, and said step of defining a plurality of overlapping virtual address space mappings comprises defining, for each task, a respective virtual address space mapping which includes the full range of addresses in the processor address space.
-
14. The method of claim 9, wherein said step of assigning to each of a first set of addressable entities in said computer system a respective range of addresses in said shared address region comprises:
-
allocating discrete blocks of virtual address space within said shared address space region; and
recording, in at least one data structure of said computer system, blocks allocated within said shared address space region.
-
-
15. The method of claim 14, further comprising the steps of:
-
associating access control information with each respective block allocated within said shared address space region, said access control information including whether a task is authorized to access the respective block; and
granting a task access to a block within said shared address space region based on the access control information associated with said block.
-
-
16. A computer operating system program product for supporting concurrent execution of a plurality of tasks on a computer system, said computer operating system program product comprising:
-
a plurality of instructions executable on a processor of said computer system and recorded on a computer readable medium;
wherein said plurality of instructions when executed on said processor maintain a plurality of data structures supporting operating system functions performed by said plurality of instructions executing on said processor;
wherein said plurality of instructions when executed on said processor allocate a plurality of overlapping task virtual address spaces, each task virtual address space being allocated to a respective task;
wherein said plurality of instructions when executed on said processor allocate, within a plurality of said task virtual address spaces, a shared address space region, said shared address space region occupying the same virtual address range within each respective task virtual address space, said shared address space region being less than the entire task virtual address space; and
wherein said plurality of instructions when executed on said processor allocate, within said virtual address range occupied by said shared address space region, a plurality address ranges assigned to respective addressable entities, each respective one of said range of addresses being uniquely and persistently assigned to its respective addressable entity, and wherein the virtual address range of an addressable entity shared by two or more tasks resides at the same address within each task'"'"'s shared address space region. - View Dependent Claims (17, 18, 19, 20, 21, 22)
a base operating system portion, said base operating system portion including instructions supporting concurrent execution of a plurality of tasks and concurrent allocation of a plurality of overlapping task virtual address spaces; and
a shared address space server portion, said shared address space server portion including instructions supporting said shared address space region, said shared address space server portion responding to calls from said base operating system portion.
-
-
19. The computer operating system program product of claim 16, wherein said plurality of instructions when executed on said processor further allocate discrete blocks of virtual address space within said shared address space region, said data structures including at least one data structure which records blocks allocated within said shared address space region.
-
20. The computer operating system program product of claim 19,
wherein said at least one data structure which records blocks allocated within said shared address space region further associates access control information with each respective block allocated within said shared address space region, said access control information including whether a task is authorized to access the respective block; - and
wherein said plurality of instructions when executed on said processor grant a task access to a block within said shared address space region based on the access control information associated with said block.
- and
-
21. The computer operating system program product of claim 20, wherein said access control information associated with each respective block comprises an access control list associated with each respective block.
-
22. The computer operating system program product of claim 19, wherein said plurality of instructions further allocate physical storage to selective portions of virtual address space within a block, said data structures including at least one data structure which records physical storage allocated within the virtual address space of a block.
-
23. A shared address space server program product for a base computer operating system, said base computer operating system supporting concurrent execution of a plurality of tasks on a computer system and allocating a plurality of overlapping task virtual address spaces, each task virtual address space being allocated to a respective task, said shared address space server program product comprising:
-
a plurality of instructions executable on a processor of said computer system and recorded on a computer readable medium;
wherein said plurality of instructions when executed on said processor respond to calls from said base operating system;
wherein said plurality of instructions when executed on said processor allocate, within a plurality of said task virtual address spaces, a shared address space region, said shared address space region occupying the same virtual address range within each respective task virtual address space, said shared address space region being less than the entire task virtual address space; and
wherein said plurality of instructions when executed on said processor allocate, within said virtual address range occupied by said shared address space region, a plurality address ranges assigned to respective addressable entities, each respective one of said range of addresses being uniquely and persistently assigned to its respective addressable entity, and wherein the virtual address range of an addressable entity shared by two or more tasks resides at the same address within each task'"'"'s shared address space region. - View Dependent Claims (24, 25, 26)
wherein said plurality of instructions when executed on said processor selectively allocates, with respect to each task, said shared address space region within the virtual address space of the respective task; - and
wherein said plurality of instructions when executed on said processor maintain at least one data structure supporting functions performed by said plurality of instructions executing on said processor said at least one data structure including at least one data structure which records whether said shared address space region has been allocated within the virtual address space of a task.
-
-
25. The shared address space server program product of claim 23,
wherein said plurality of instructions when executed on said processor further allocate discrete blocks of virtual address space within said shared address space region; - and
wherein said plurality of instructions when executed on said processor maintain at least one data structure supporting functions performed by said plurality of instructions executing on said processor, said at least one data structure including at least one data structure which records blocks allocated within said shared address space region.
- and
-
26. The shared address space server program product of claim 25, wherein said plurality of instructions further allocate physical storage to selective portions of virtual address space within a block, said at least one data structure including at least one data structure which records physical storage allocated within the virtual address space of a block.
-
27. A multi-tasking computer system having a processor defining a processor address space, said multi-tasking computer system comprising:
-
means for supporting concurrent execution of a plurality of tasks on said computer system;
means for concurrently allocating a plurality of overlapping task virtual address spaces, each task virtual address space being contained within said processor address space, and each task virtual address space being allocated to a respective task;
means for allocating, within a plurality of said task virtual address spaces, a shared address space region, said shared address space region occupying the same virtual address range within each respective task virtual address space, said shared address space region being less than the entire task virtual address space; and
means for persistently and uniquely assigning address ranges to addressable entities within said shared address space region, wherein the virtual address range of an addressable entity shared by two or more tasks resides at the same address within each task'"'"'s shared address space region. - View Dependent Claims (28, 29, 30, 31)
means for selectively determining, with respect to each of a plurality of tasks, whether said shared address space region will be allocated within the respective task virtual address space of the task;
wherein said means for allocating a shared address space region allocates said region in response to said means for selectively determining whether said shared address space region will be allocated.
-
-
29. The computer system of claim 27, wherein said operating system further comprises:
means for allocating discrete blocks of virtual address space within said shared address space region.
-
30. The computer system of claim 29, wherein said operating system further comprises:
-
means for associating access control information with each respective block of virtual address space, said access control information including whether a task is authorized to access the respective block;
means for determining whether a task is authorized to access a block based on the access control information associated with said block; and
means, responsive to said means for determining whether a task is authorized to access a block, for granting a task access to a block only if said task is authorized to access said block.
-
-
31. The computer system of claim 30, wherein said access control information associated with each respective block comprises an access control list associated with each respective block.
Specification