Method of sharing memory between an operating system and an application program
First Claim
1. A method in a computer system for concurrent access of a plurality of portions of external data loaded by an operating system for an application program, the computer having computer memory, the method comprising:
- A. the following steps performed by an operating system;
receiving a request of an application program for access to a plurality of portions of external data;
initializing a list of pointers with a predefined value, the pointers for pointing to buffers within the computer memory and being accessible by the application program; and
for each of the plurality of portions of the external data,retrieving the portion of the external data;
storing the retrieved portion in a buffer; and
updating a pointer in the list of pointers to point to the buffer containing the retrieved portion; and
B. the following steps performed by an application program;
for each pointer in the list of pointers,when the pointer has been updated to point to a buffer containing the retrieved portion, accessing the portion of the external data stored in the buffer pointed to by the updated pointer before the operating system has completed storing all of the portions of the external data in the buffers.
1 Assignment
0 Petitions
Accused Products
Abstract
An improved method for the sharing of data among a file server, a file system, and a network driver executing on a computer is provided. The file system allocates cache buffers to be used in reading from or writing to a file. When reading a file, the file system starts loading the cache buffers with the file data. When a buffer is loaded, the file system signals the file server that a buffer at a certain address is loaded. The file server provides the network driver with the buffer address of the data that is ready to be transported onto a computer network. The transport system then reads the data from the cache buffers and sends the data onto the computer network. When writing a file, the file system allocates cache buffers to receive the file. The file system notifies the file server of the cache buffer addresses. The file server then notifies the network driver of the cache buffer addresses. When the network driver receives the data it loads the data directly into the cache buffers. The file system can then write the data from the cache buffers to the disk.
-
Citations
11 Claims
-
1. A method in a computer system for concurrent access of a plurality of portions of external data loaded by an operating system for an application program, the computer having computer memory, the method comprising:
-
A. the following steps performed by an operating system; receiving a request of an application program for access to a plurality of portions of external data; initializing a list of pointers with a predefined value, the pointers for pointing to buffers within the computer memory and being accessible by the application program; and for each of the plurality of portions of the external data, retrieving the portion of the external data; storing the retrieved portion in a buffer; and updating a pointer in the list of pointers to point to the buffer containing the retrieved portion; and B. the following steps performed by an application program; for each pointer in the list of pointers, when the pointer has been updated to point to a buffer containing the retrieved portion, accessing the portion of the external data stored in the buffer pointed to by the updated pointer before the operating system has completed storing all of the portions of the external data in the buffers. - View Dependent Claims (2, 3, 4)
-
-
5. A method of accessing a file stored on a computer storage device, the storage device operatively connected to a computer, the computer having an operating system and a computer memory, the operating system having a file system, the method comprising the steps of:
-
requesting the file system to load the file into computer memory for access by an application program; and for each of a plurality of portions of the file, performing the following steps by the file system; retrieving the portion of the file from the storage device; storing the retrieved portion of the file in the computer memory; and updating a pointer to point to the stored portion of the file; and performing the following steps by the application program; waiting until the file system updates the pointer; and concurrently reading the stored portion of the file pointed to by the updated pointer from the computer memory while the file system is performing the steps of retrieving and storing another portion of the file. - View Dependent Claims (6)
-
-
7. A method for transporting data from a storage device onto a computer network, the storage device and the computer network operatively connected to a file server computer having a file system, a file server, and a transport system, the file system having data descriptors and cache buffers, each data descriptor having a pointer to a cache buffer, the method comprising the steps of:
-
receiving a request to transport data onto the computer network; performing the following steps by the file system; selecting a set of data descriptors to be updated as the data is loaded from the storage device into the cache buffers; and for each of a plurality of portions of the data, selecting the next data descriptor from the selected set of data descriptors, starting with the first data descriptor; selecting a cache buffer to receive the portion of the data to be loaded from the storage device; loading the portion of the data from the storage device into the selected cache buffer; and updating the selected data descriptor to point to the selected cache buffer; for each portion of the data loaded, performing the following steps by the file server; selecting a next data descriptor from the selected set of data descriptors, starting with the first data descriptor; waiting for the file system to update the selected data descriptor to point to a cache buffer; and signalling the transport system to transport onto the computer network the portion of the data in the cache buffer pointed to by the selected data descriptor; and performing the following steps by the transport system; for each signal to transport a portion of the data in a cache buffer, reading the portion of the data stored in the cache buffer; and writing the data onto the computer network to effect the transport of the data.
-
-
8. A method for receiving data from a computer network and storing the data on a storage device, the computer network and the storage device operatively connected to a file server computer having a file system, a file server, and a transport system, the file system having data descriptors and cache buffers, each data descriptor having a pointer for pointing to a cache buffer, the method comprising the steps of:
-
receiving a request to store data received from a computer network onto the storage device; selecting a set of data descriptors to be updated as the data is loaded from the computer network into the cache buffers; setting the pointer in each selected data descriptor to point to a cache buffer; performing the following steps by the transport system; for each of a plurality of portions of the data, selecting a next data descriptor from the selected set of data descriptors, starting with the first data descriptor; receiving the portion of the data from the computer network; and storing the received portion of the data in a cache buffer pointed to by the selected data descriptor; and signalling the file server that all the data has been received; when signalled that all the data has been received, signalling the file system by the file server that the cache buffers contain the received data; and when signalled that the cache buffer contains the received data, for each portion of the data stored in the cache buffers, performing the following steps by the file system; selecting a next data descriptor from the selected set of data descriptors, starting with the first data descriptor; and writing the portion of the data stored in the cache buffer pointed to by the selected data descriptor to the storage device. - View Dependent Claims (9, 10)
-
-
11. A method in a computer system for accessing a plurality of portions of external data loaded by an operating system for an application program, the computer having computer memory, the method comprising the steps of:
-
performing the following steps by the operating system; receiving a request of an application program for access to the external data; retrieving a portion of the external data; storing the retrieved portion in a buffer; setting a pointer to the buffer containing the retrieved portion; and for each remaining portion of the external data, retrieving a new portion of the external data; storing the retrieved new portion in a buffer other than the buffer pointed to by the pointer; waiting until the application program accesses the pointer; and updating the pointer to point to the buffer containing the retrieved new portion; and performing the following steps by the application program; waiting until the operating system sets the pointer to point to the buffer containing the retrieved portion; when the pointer has been set, accessing the retrieved portion of the external data stored in the buffer pointed to by the set pointer, while the operating system is retrieving a new portion of the external data; for another portion of the external data, waiting until the operating system updates the pointer to point to the buffer containing the retrieved new portion; and when the pointer has been updated, accessing the portion of the external data stored in the buffer pointed to by the updated pointer, while the operating system is retrieving a new portion of the external data.
-
Specification