Claims Analysis
Total Claims: 7
Claim 1
Independent Claim
631 words
A method for facilitating the interchange of data stored in a Unix file between two UNIX processes being run concurrently on two virtual machines in a page segmented virtual memory virtual machine type data processing system having, (1) a main memory including, a first plurality of byte addressable storage locations each of which functions to store one byte of data, (2) a secondary storage device including, a second plurality of block addressable storage locations each of which functions to store at least one virtual page of data, (3) a virtual resource manager for creating at least first and second virtual machines having a UNIX type Operating System {UOS} program which includes, (a) conventional UNIX commands including commands for opening and creating new UNIX files, data transfer commands having parameters for specifying UNIX file data to be transferred between said device and said main memory, a map instruction which functions to map a specified UNIX file stored in said device to virtual pages in another segment of said virtual memory so as to relate the newly assigned page addresses in said another segment to said corresponding block address in said device, (b) I/O subroutines which run when said transfer commands are executed, (c) means for storing said map instruction at a virtual address in a predetermined segment of said virtual memory, and (d) means for storing a UNIX offset pointer, (4) an application program which includes conventional Unix system calls to said commands, and (5) a memory manager program having, (a) Load and Store type of instructions employing a virtual address for transferring a page of data between said device and said main memory, (b) a page fault handling mechanism for resolving a page fault that occurs as a result of said application program executing one of said Load and Store instructions involving a virtual page which is not currently stored in said main memory, and (6) means for causing said data transfers defined in said system calls to be made under the control of said memory manager and said page fault handling mechanism, rather than said I/O subroutines of said UOS, including means for dynamically generating another said virtual page address within the address range of said another segment by translating said command parameters and said offset pointer for said specified file in response to each said data transfer command, said method facilitating said interchange of said data between said two processes being run concurrently by said first and second virtual machines involving one specified UNIX File, said method comprising the steps of: (A) creating a shared-copy-on-write (SCOW) command for said UOS which functions to cause a Unix file specified thereby to be mapped to a unique segment by said map instruction, said SCOW command including a first field for storing an indication to distinguish said SCOW command from a conventional copy-on-write command, (B) executing a system call in a first application program being run by said first virtual machine to said SCOW command to cause said specified file to be mapped to said unique segment, (C) establishing a map node data structure with said UOS which includes the step of establishing a SCOW segment ID field to store the segment ID of said unique segment, (D) storing said unique segment ID in said SCOW segment ID field of said map node data structure in response to mapping said specified file, (E) executing a system call in a second application program to said SCOW command, (F) checking said map node data structure to determine if said specified file is currently mapped in a mode to be shared, and (G) running said first and second application programs concurrently whereby data in said specified file that is written by either application program is readily available to be read by the other application program.
Claim 2
Independent Claim
631 words
A method for facilitating the interchange of data stored in a Unix file between two UNIX processes being run concurrently on two virtual machines in a page segmented virtual memory virtual machine type data processing system having, (1) a main memory including, a first plurality of byte addressable storage locations each of which functions to store one byte of data, (2) a secondary storage device including, a second plurality of block addressable storage locations each of which functions to store at least one virtual page of data, (3) a virtual resource manager for creating at least first and second virtual machines having a UNIX type Operating System {UOS} program which includes, (a) conventional UNIX commands including commands for opening and creating new UNIX files, data transfer commands having parameters for specifying UNIX file data to be transferred between said device and said main memory, a map instruction which functions to map a specified UNIX file stored in said device to virtual pages in another segment of said virtual memory so as to relate the newly assigned page addresses in said another segment to said corresponding block address in said device, (b) I/O subroutines which run when said transfer commands are executed, (c) means for storing said map instruction at a virtual address in a predetermined segment of said virtual memory, and (d) means for storing a UNIX offset pointer, (4) an application program which includes conventional Unix system calls to said commands, and (5) a memory manager program having, (a) Load and Store type of instructions employing a virtual address for transferring a page of data between said device and said main memory, (b) a page fault handling mechanism for resolving a page fault that occurs as a result of said application program executing one of said Load and Store instructions involving a virtual page which is not currently stored in said main memory, and (6) means for causing said data transfers defined in said system calls to be made under the control of said memory manager and said page fault handling mechanism, rather than said I/O subroutines of said UOS, including means for dynamically generating another said virtual page address within the address range of said another segment by translating said command parameters and said offset pointer for said specified file in response to each said data transfer command, said method facilitating said interchange of said data between said two processes being run concurrently by said first and second virtual machines involving one specified UNIX File, said method comprising the steps of: (A) creating a shared-copy-on-write (SCOW) command for said UOS which functions to cause a Unix file specified thereby to be mapped to a unique segment by said map instruction, said SCOW command including a first field for storing an indication to distinguish said SCOW command from a conventional copy-on-write command, (B) executing a system call in a first application program being run by said first virtual machine to said SCOW command to cause said specified file to be mapped to said unique segment, (C) establishing a map node data structure with said UOS which includes the step of establishing a SCOW segment ID field to store the segment ID of said unique segment, (D) storing said unique segment ID in said SCOW segment ID field of said map node data structure in response to mapping said specified file, (E) executing a system call in a second application program to said SCOW command, (F) checking said map node data structure to determine if said specified file is currently mapped in a mode to be shared, and (G) running said first and second application programs concurrently whereby data in said specified file that is written by either application program is readily available to be read by the other application program.
Claim 3
Dependent Claim
45 words
The method recited in claim 1 in which said step of establishing said map node data structure further includes the step of establishing a count field for storing a value indicative of the number of virtual machines that currently have access to said unique segment.
Claim 4
Dependent Claim
28 words
The method recited in claim 2 further including the step of updating said value in said count field after said step of checking said map node data structure.
Claim 5
Dependent Claim
47 words
The method recited in claim 3 in which said step of updating said value includes the step of incrementing said count by one when another virtual machine starts sharing said unique segment and the step of decrementing said count when a virtual machine stops sharing said segment.
Claim 6
Dependent Claim
26 words
The method recited in claim 4 further including the step of destroying said unique segment in response to said step of decrementing said value to zero.
Claim 7
Dependent Claim
52 words
The method set forth in claim 5 in which said step of running further includes the steps of changing data stored in said unique segment in accordance with instructions being processed by said first virtual machine and reading said changed data in accordance with instructions being processed by said second virtual machine.